我有一個層次結構,如下:停止CSS層次
<div class="outer">
<h1>Heading</h1>
<p>Paragraph</p>
<p><a>Link</a></p>
<div class="inner">
<h1>Heading</h1>
<p>Paragraph</p>
<p><a>Link</a></p>
</div>
</div>
我想outer
DIV中的元素以某種方式風格,並inner
專區內的元素在另一個樣式。
但是,我不想污染我的規則inner
重置每個屬性outer
規則定義的規則。我想避免margin: 0px
。請注意,當然,我的樣式表要複雜得多,重置次數會更多,更煩人。
outer a { margin: 5px; }
inner a { margin: 0px; color: orange; }
我最初的反應也是使用直接子選擇>
,但是,比如說,鏈接,強,跨度等
下面的例子就變得很麻煩:
outer > a { color: orange; }
不會的風格:
<div class="outer"><p><a>Link</a></p></div>
<div class="outer"><strong><a>Link</a></strong></div>
<div class="outer"><ul><li><a>Link</a></li></ul></div>
<div class="outer"><table><tr><td><a>Link</a></td></tr></table></div>
...
我需要找一些其他的方式
- 在
inner
中打破層次結構,但沒有明確定義重置。 - 限制外部樣式的範圍在
inner
處停止。
這可能嗎? 請注意,重新排列我的HTML結構在目前的情況下是不可能的。
既然你說重新安排你的HTML是不可能的,'.inner'保證是'.outer的孩子'只有,而不是嵌套在其他地方? – BoltClock
@BoltClock:不好意思,'.inner'可能出現在'.outer'之外。對不起,這些名字的確有誤導性。 – Lazlo