【发布时间】:2017-11-11 16:21:07
【问题描述】:
所以我有一个div 内的项目列表,其类为book-select,而我的无序列表中的li 之一具有类selected。根据我定义的 CSS 规则,div 中的li 的背景颜色为skyblue,而带有所选类的li 将是steelblue。
问题是 book-select 类正在覆盖选定的类,我不明白。 div 类不会比选择类的 li 更具体吗? li 位于 ul 中,而 ul 位于 div 中。
这里是相关的 CSS 和 HTML:
.book-select li {
font-size: 0.75em;
text-align: center;
list-style: none;
background: skyblue;
width: 25%;
margin: auto;
}
.selected {
background: steelblue;
}
<div class="book-select">
<h2>Pick a book:</h2>
<ul>
<li>Set A Volume 1, Course Foundation</li>
<li>Set A Volume 2, Expeditionary Airman</li>
<li>Set A Volume 3, Professional Airman</li>
<li>Set B Volume 1, Supervisory Communicator</li>
<li>Set B Volume 2, Supervisor of Airmen</li>
<li class="selected">All</li>
</ul>
</div>
这是测验的一部分,其想法是用户单击一本书,jQuery 会将所选项目的类更改为单击的任何内容,最后一个 li 带有文本 "All" 是默认选择的书。我可以使用不同的 jQuery 方法来更改背景颜色,但是 CSS 给我这个特异性错误的事实让我很困扰。
我知道.book-select li 正在覆盖.select,因为控制台显示background: steelblue; 被划掉。
不应该反过来吗? .selected 不是更具体的类吗,因为它只包含一个元素,就是它自己?
【问题讨论】:
标签: html css css-selectors css-specificity