4

この投稿は (私の仕事に支障をきたす事実に基づいていますが)、実際の問題の提出というよりは哲学的な質問です。

この次の不可解なケースに出くわしました...

私はこの現象、それがどのように支配され、それがもたらす影響を理解しているので(私は思う)、それは実際には問題ではありません.

次の例を作成しました: http://jsfiddle.net/q7xAn/ できるだけ説明的です。

この場合、スパンの背景が黄色なのはなぜですか?

どのルールがそれを適用するのか不思議ではありませんが、より多くの : (私が常に想定していたものとは対照的に) どのツイストの名前で、最後に宣言されたルールが最初に宣言されたルールに適用されますか?

つまり、「.red span」と「.yellow span」の複雑さは同じです。

  • 同じ長さ
  • 特定の位置にある各アイテムの重み/重要度は同じです

それらは CSS セレクターの自然な順序で同等です。

次に、どちらが適用されるかという問題で優先されるのは、どのルールがスタイル付けされたアイテムに最も近いかということです。私の例の場合、スパンは「.yellow span」ではなく「.red span」(最も近いルール) でスタイル設定する必要があります (これも正しいですが、「.red span」によって「オーバーライド」されます)。

この行動には「歴史的」、「政治的」、「哲学的」、またはその他の理由がありますか? 私が見ている動作を強制する可能性のあるいくつかのDOCTYPES(多分?)はありますか?w3c にリクエストを送ってもいいですか (なぜですか?) どうやって ?どんな情報でも、アドバイスでも、違う視点でも、大歓迎です!

よろしくお願いします。


Edit note :

私は自分自身を引用するのは嫌いですが、ymeric へのコメントで、私の質問が実際に何についてであるかを説明する良い方法を考え出しました.


一般的に、私が気になるのは、もし私が持っているとしたら、7 つの配色 (虹色ごとに 1 つ) としましょう。

また、私が (たとえば) 10 人のチームの CSS 作成者であるとします。

私は彼ら (私のチーム) が配色ブロックをネストできるようにしたいと考えています。

  • あるケースでは、赤色のブロックが黄色とマゼンタのブロックを保持していました。
  • 別の (興味深い) ケースでは、7 レベルのネスティングが必要になる場合があります (赤がオレンジにネストされ、黄色がネストされて ...)。

事前にどの用途が必要になるかについては、今のところわかりません。

現在の CSS の経験豊富な動作では、新しいネストの必要性が発生するたびに CSS を改良しなければならず、不快なほど肥大化したルールになってしまいます。 保守性の観点から、これは残虐行為です:'(

4

2 に答える 2

2

specificitycssとして知られています。また、2 つのセレクターが特定の要素に一致し、それらの が同じweightである場合、表示されるセレクターがlaterその要素に適用されます。

詳細については、これをお読みください。

セレクター.red span.yellow span両方の重みがあり0,1,1(言及したリンクで重みの計算方法が詳しく説明されています)、最後のルールが適用されます。

物事をよりよく説明する W3 のこの記事もお読みください。

すべてが理にかなっていることを願っています:)

于 2012-09-12T08:51:39.107 に答える
0

これは、(私があなたの質問を誤解していなければ)あなたが探している答えを説明する記事(本当に最近ではありませんが明示的です)です.

たとえば、次のように置き換えます。

.red span, .red{
background-color: #F00
}

に:

.yellow .red span, .red{
    background-color: #F00
}

あなたの背景は赤になります。

よろしく。

于 2012-09-12T08:32:11.970 に答える