同じレベルのCSSスタイルの束があります:同じ特異性を持つCSSセレクタをHTMLタグの親子関係の順に適用する方法は?
.style1 a {
color: red;
}
.style2 a {
color: green;
}
はまた、それらのスタイルが適用されるネストされたブロックでのHTMLコードがあります:その結果、第2のリンクとして
<div class="style2">
<span>
<a href="/">Style 2</a>
</span>
<div class="style1">
<div>
<a href="/">Style 1</a>
</div>
<div class="style2">
<a href="/">Style 2</a>
</div>
</div>
</div>
(«スタイル1»)は緑になります。これは、リンクタグが両方のCSSセレクタに対して同じ特異性を持ち、.style2 a
が後で宣言されたために発生します。したがって、.style2 a
が適用されます。
タグのネストに関する予備的な情報なしで、最も近いスタイルクラスの親からスタイルを適用する方法(2番目のリンクを赤くする)?
コードの遊び場:http://codepen.io/anon/pen/zvXmOw
HTMLはを修正することが可能です。しかしリンクがどこにあってもよいと考えてください。
----------
私が見つけた最良の解決策は、制限ネストに基づいています。まず(スタイル - 親からのリンクタグまでの距離が限られている):
<style>
.style1 > a,
.style1 > :not(.style) > a,
.style1 > :not(.style) > :not(.style) > a {
color: red;
}
.style2 > a,
.style2 > :not(.style) > a,
.style2 > :not(.style) > :not(.style) > a {
color: green;
}
</style>
<div class="style style2">
<span>
<a href="/">Style 2</a>
</span>
<div class="style style1">
<div>
<a href="/">Style 1</a>
</div>
<div class="style style2">
<a href="/">Style 2</a>
</div>
</div>
</div>
セカンド(スタイルのdivのネストが制限されている):
<style>
.style1 a,
.style .style1 a,
.style .style .style1 a {
color: red;
}
.style2 a,
.style .style2 a,
.style .style .style2 a {
color: green;
}
</style>
<div class="style style2">
<span>
<a href="/">Style 2</a>
</span>
<div class="style style1">
<div>
<a href="/">Style 1</a>
</div>
<div class="style style2">
<a href="/">Style 2</a>
</div>
</div>
</div>
私が見つけることを試みている限界withounよりよい解決策があります。
のように使用します。スタイル1> a { 色:赤; } 。スタイル2> a { 色:緑; } –
@KishoreSahas、リンクされていない場合もあります(最後のものを除く)。リンクはstyle-divs内の任意の場所に置くことができます。 – Finesse
私は同意します、質問に間違いがあります –