13

ご挨拶:ブラウザで計算された各CSSルールの正確なCSS固有番号を表示するツールを探していました。私はすでにTools to see CSS specificityを含む多くのオンラインリソースを見てきました - オーバーライドされたクラスなどについてのリンクがありますが、特定のCSSルールを適用する際にブラウザが計算して使用する正確な識別番号が必要です。ブラウザの計算されたCSSの特異性を表示するには?

正確なCSS特異性計算をする必要があるのはなぜですか?
ブラウザがそのルールの近接性に基づいてCSSルールを使用している特定の問題を克服することはできませんが、ブラウザによって適用されるルールより高い特異性を持つ別のルールが定義されています。 jsfiddleを使用してデモするために使用できる単純なコードがなく、デバッグしようとしているコードが複雑すぎてフィドルに含めることができません。

ほとんどすべての検索で、「CSSの特殊性のルール」や「CSSの特殊性の理解」のリンクが指摘されています。私は、CSSの特異性がどのように機能するのか、FirebugとChrome開発ツールを広く使用していること、そして特異性のルールを理解することを指すリンクを十分に理解していることを理解しています。 私のクエストは、あるCSSルールを別のCSSルールに適用するときに、どのブラウザエンジンが考えているかを調べることです。そして、すでにどのルールが他のルールよりも優先されるかを決定するためにこの情報を計算しているので、どうにかそれはアクセス可能な情報でなければなりません。

私が直面しています問題の非常に基本例:

.testClass1 .title, .testClass2 .testClass1 .title { corresponding CSS styles } 
.testClass2 .title, .testClass1 .testClass2 .title { corresponding CSS styles } 

それとも....このようなものをコード化された(最終的な結果ではいずれかが異なることはありません。)することができ

.testClass1 .title { corresponding CSS styles }  --- call it Rule 1 
.testClass2 .testClass1 .title { corresponding CSS styles } --- call it Rule 2 
.testClass2 .title { corresponding CSS styles } --- call it Rule 3 
.testClass1 .testClass2 .title { corresponding CSS styles } --- call it Rule 4 

そして、HTMLの構造、このようになります...

<!-- delivers intended results --> 
<div class="testClass1"> 
    <div class="title">Some Title</div> 
</div> 

<!-- Does not deliver intended results. 
    - I expected Rule 1 or Rule 2 to take effect, but Rule 3 gets 
    applied because of its proximity to the actual HTML element. 
    i.e. rule 3 is defined later in CSS then rule 1 and 2. --> 
<div class="testClass2"> 
    <div class="testClass1"> 
    <div class="title">Some Title</div> 
    </div> 
</div> 

私はこれをデバッグするための最良の方法であると思いました私は特定のルールを想定して毎回手動で計算する代わりに、ブラウザのCSSの特異性の計算を見ているだろう。また、ブラウザは既に適用しているのでこれを計算しているので、私はこれらの特殊ルールのブラウザ計算を調べるためのツールを探していましたが、FirebugまたはChromeのインスペクタでそれを行う方法は見つかりませんでした。

誰かがこれについて知っていますか、誰かが存在するかもしれないツールに私を指摘できますか?私はあなたの助けに大変感謝しています。ありがとうございました!

EDIT: 私は証明するために、「私が苦労しています何のようなものを」再現できるかどうかを確認するために一緒にバイオリンを入れてみました。私は運がいいと思う - http://jsfiddle.net/smallworld/abvHC/1/を見てください。このフィドルの問題はまだまだ単純ですが、クラスが動的に割り当てられるので、正確な順序を予測する方法がないという私の挑戦を代表するものです。フィドルの例3は、計算された特異性をなぜ知る必要があるのか​​を代表するものです。いずれにしても、計算された数値をブラウザの計算と比較できることは素晴らしいと思います。

ANOTHER EDIT: 私はまだ指定された要素のブラウザの特異性スコアにのぞくための私の探求への答えを持っていませんが、私はファウストと他の人は私がいた元の問題に対する可能な解決策に私を導いたと思います向いている。下記のコメントスレッドをご覧ください。その質問がブラウザの特異度を見ることができるということを考えれば、私はこの質問を開いたままにしておくことができます - 現在、そうすることができるツールはありません。

+0

開発ツールは、すべての情報を表示します(実際の数値は除きます) – SLaks

+2

自分で計算してみませんか?あなたの特異性は、** 0,2,0 **、** 0,3,0 **、** 0,2,0 **、** 0,3,0 **です。計算が難しくなく、ブラウザは他のブラウザとは異なる計算をしません。ルール2はルール3よりも具体的であり、常に優先します。予期しない結果が見られる場合は、別のスタイルやタイプミスがあります。私はブラウザが "近接"に基づいてCSSを適用していないことを保証します。 Chromeデベロッパーツールをチェックして、要素に一致するCSSセレクターを確認し、CSSが有効であることを確認してください。 – animuson

+1

SLaks - その正確な数字は私の理解とブラウザの解釈が一致していないので、私はそれが私が行方不明であることを理解したいと思っているからです。 – smallworld

答えて

5

FirefoxのinIDOMUtils APIにはgetSpecificity() functionがあります。

このAPIを使用するには、独自のFirefox拡張機能を作成する必要があります。これはwas requested for Firebugですが、今度はFirebug is discontinuedというFirefox DevToolsに賛成ですが、feature request for thisもあります。

+0

セバスチャンを上書きしている順番を数えることができるので、これで解決できます。この質問を投稿する前にあなたが提供したFirebugのリンクを見ました。また、あなたの答えの中でファンドバットのスレッドに誰もが混乱しているように見えた後、私は質問で具体的な枠組みを作りました。しかし、私はあなたの最初のgetSpecificity()へのリンクは、その方向に動きはあるがまだ拡張はないという良い答えを提供すると思います!その情報を見つけて共有していただきありがとうございます。私はこれを答えとして受け入れます。 – smallworld

+0

['これを実装する]'(http://code.google.com/p/fbug/issues/detail?id=5037)と呼ばれるGoogleのコードアーカイブの問題へのリンクは死んでいます。 – MarkDBlackwell

+0

Firebugは現在販売されていません。だから私はそれに応じて私の答えを更新しました。ヒントありがとう! –

-4

私はFirefoxでFirebugアドオンを使用しています。これまでのことは私のために働く。

+0

それは私の知る限り、セレクターの "計算された特異性"を示していません。それが示すのは、適用されるセレクタだけです。質問は、セレクタのブラウザによって計算されている実際の計算値_を見ることに関連しています。 – ScottS

+0

右、Firebugはまだこの値を表示しません。それをカバーする[問題](http://code.google.com/p/fbug/issues/detail?id=5037)があります。 –

-3

ブラウザで何を考えているのかを確認するには、IEでF12を押すか、別のブラウザでソースに移動します。あなたが考えているCSSを見たいHTMLタグを押してください。次に、無視されたコードの行の右側に表示されます。 助けてくれることを願っています。

+0

これは問題を解決しません。ここで求められるのは、[特異性番号](http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#specificity)を取得する方法です。 –

+0

これは、CSS –

関連する問題