css(>)中的直接子选择器选择直接描述并将颜色传递给它们,但是当涉及文本修饰时,它也会选择其他元素。怎么样?
http://codepen.io/anon/pen/dDJmE
对于颜色我看到它只选择直接的descedants,但为什么文本修饰的行为不正确?我错过了什么?
CSS
li {
text-decoration: none;
color: black;
}
ol.numbers > li {
text-decoration: underline;
color: red;
}
HTML
<ol class="numbers">
<li> First! </li>
<li> Second!
<ul>
<li> hehe </li>
<li> huhu
<ol>
<li> nested! </li>
</ol>
</li>
</ul>
</li>
<li> Third! </li>
<li> Fourth!
<ol>
<li> oh lala </li>
</ol>
</li>
</ol>
答案 0 :(得分:2)
在你的标记中:
<div>
<ol class="numbers">
<li> First! </li>
<li> Second!
<ul>
<li> hehe </li>
<li> huhu
<ol>
<li> nested! </li>
</ol>
</li>
</ul>
</li>
<li> Third! </li>
<li> Fourth!
<ol>
<li> oh lala </li>
</ol>
</li>
</ol>
<ol class="letters">
<li> A </li>
<li> B </li>
</ol>
(非特定)ol
和各个li
子项只是样式的主题,适用于任何ol.numbers>li
内的任何文本内容。您必须覆盖非指定子ol
和li
继承的样式。您可以使用ol.numbers>li li
作为选择器来执行此操作。
加成
似乎我认为文本修饰与其他文本样式机制不一致我是正确的:How do I get this CSS text-decoration override to work?
你将不得不以不同的方式解决这个问题。我建议使用适当的标记(p
s,span
等)来包装文本,并在CSS中专门解决它们以获得所需的结果。
答案 1 :(得分:1)
这是由于CSS应用样式的顺序。 ol.numbers > li
比li
更具体。所以这种风格优先。