我有以下代码。 id为'selected-plays'的第一个'ul'标签有3个子'li'标签(不是后代)。我正在尝试将少量CSS规则应用于这些子标记。
我的jQuery代码添加了“水平”类。请注意,选择器仅指向标识为#selected-plays
$(document).ready(function() {
$('#selected-plays > li').addClass('horizontal');
});
.horizontal {
margin: 10px;
float: left;
list-style: none;
color: red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<ul id="selected-plays">
<li>Comedies
<ul>
<li><a href="/asyoulikeit/">As You Like It</a></li>
<li>All's Well That Ends Well</li>
<li>A Midsummer Night's Dream</li>
<li>Twelfth Night</li>
</ul>
</li>
<li>Tragedies
<ul>
<li><a href="hamlet.pdf">Hamlet</a></li>
<li>Macbeth</li>
<li>Romeo and Juliet</li>
</ul>
</li>
<li>Histories
<ul>
<li>Henry IV (<a href="mailto:henryiv@king.co.uk">email</a>)
<ul>
<li>Part I</li>
<li>Part II</li>
www.it-ebooks.info Chapter 2 [ 29 ]
</ul>
<li><a href="http://www.shakespeare.co.uk/henryv.htm">
Henry V</a></li>
<li>Richard II</li>
</ul>
</li>
</ul>
前三个属性(margin,float,list-style)按预期应用于三个子'li'标签,但最后一个属性,即color,应用于父元素中的所有元素(后代)。为什么会这样?
答案 0 :(得分:12)
这是预期的行为,因为子元素将自动继承其父级的color
设置。如果您不想要这种行为,可以在CSS中设置子项的颜色:
#selected-plays li li {
color: initial;
}
$(document).ready(function() {
$('#selected-plays > li').addClass('horizontal');
});
.horizontal {
margin: 10px;
float: left;
list-style: none;
color: red;
}
#selected-plays li li {
color: initial;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<ul id="selected-plays">
<li>Comedies
<ul>
<li><a href="/asyoulikeit/">As You Like It</a></li>
<li>All's Well That Ends Well</li>
<li>A Midsummer Night's Dream</li>
<li>Twelfth Night</li>
</ul>
</li>
<li>Tragedies
<ul>
<li><a href="hamlet.pdf">Hamlet</a></li>
<li>Macbeth</li>
<li>Romeo and Juliet</li>
</ul>
</li>
<li>Histories
<ul>
<li>Henry IV (<a href="mailto:henryiv@king.co.uk">email</a>)
<ul>
<li>Part I</li>
<li>Part II</li>
www.it-ebooks.info Chapter 2 [ 29 ]
</ul>
<li><a href="http://www.shakespeare.co.uk/henryv.htm">
Henry V</a></li>
<li>Richard II</li>
</ul>
</li>
</ul>
答案 1 :(得分:3)
继承属性
如果未在元素上指定继承属性的值,则该元素将在其父元素上获取该属性的计算值。只有文档的根元素才能获得属性摘要中给出的初始值。继承属性的典型示例是color属性。
您可以简单地将color:initial
样式添加到子元素以保留样式。选择器可以在css中预先指定,也可以通过脚本添加。您可以根据结构使用不同的选择器,例如li > *
,li > li
或li li
等
答案 2 :(得分:0)
子<li>
代码会继承具有<li>
类的父.horizontal
代码的颜色值。您可以通过添加样式规则来尝试覆盖子标记颜色,例如:
.horizontal li { color: initial; }