【发布时间】:2017-05-17 21:13:33
【问题描述】:
我有一个关于 CSS 选择器的问题。如何选择一个正确的? 例如我有这段 HTML:
<header>
<nav class="navbar navbar-inverse navbar-fixed-top">
<div class="container-fluid">
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<p style="font-size:1.2em" class="navbar-text">Project name</p>
</div>
<div id="navbar" class="collapse navbar-collapse">
<ul class="navbar-nav nav navbar-right">
<li><a style="font-size:1.2em" href="#AboutMe">Text1</a></li>
<li><a style="font-size:1.2em" href="#Social">Text2</a></li>
<li><a style="font-size:1.2em" href="#Projects">Text3</a></li>
</ul>
</div><!--/.nav-collapse -->
</div>
</nav>
</header>
为了让我的列表元素 li 在无序列表 ul 中改变外观,我看到了下一个 CSS 选择器:
.navbar-inverse .navbar-nav > li > a:hover {
background-color: white;
color: black;
}
我如何理解这个选择器说:选择所有 li 元素的子元素,而他又是具有 .navbar-nav 类(?)的元素的子元素,以及所有这些内部元素和具有 .navbar-inverse 类的元素(?)。
这很好用。但。如果将此选择器更改为另一个:
li > a:hover {
background-color: white;
color: black;
}
这不起作用。但它的意思是:选择了所有 a 元素,它是 li 元素的直接子元素。
也许我不太了解 CSS 选择器的概念。
谢谢。
编辑:
这就是我所有可能影响导航元素的内部 CSS。
谢谢。
/*
Solution from "http://stackoverflow.com/questions/11124777/twitter-bootstrap-navbar-fixed-top-overlapping-site"
*/
body { padding-top: 40px; }
@media screen and (max-width: 768px) {
body { padding-top: 0px; }
}
.anchor {
padding-top:40px;
}
.navbar-inverse .navbar-nav > li > a:hover {
background-color: white;
color: black;
}
.navbar {
background-color: #444;
border: 0px;
letter-spacing: 2px;
padding-right: 50px;
padding-left: 50px;
}
【问题讨论】:
-
在 jsfiddle 上尝试过,它可以工作。 jsfiddle.net/3jyceeub。有点奇怪。您可以使用浏览器调试器调试 css,并在该 元素上应用悬停。 imgur.com/a/CKfYr
-
您应该查看
a:hover是否在其他地方定义。很有可能存在覆盖它的特定性问题。 -
@DerekStory我认为a:hover肯定是在其他地方的引导程序中定义的。也许这就是@YudiChang解决方案起作用的原因(他没有导入引导程序)
标签: html css css-selectors