我刚刚开始学习CSS3和HTML5,现在我正试图让我的span文本在鼠标悬停在.linkdiv上时转换为另一种颜色,并使用以下代码。由于某种原因,它不起作用,我尝试了一些方法来让它发挥作用,但到目前为止运气不佳。
有人能帮我解决这个问题或给我指明正确的方向吗?
谢谢!
--
HTML
<div id="celebrity-list">
<header>
<h2>Celebrities</h2>
</header>
<div id="a">
<span class="letter">A.</span>
<div class="links">
</div>
</div>
</div>
CSS
#celebrity-list > div span.letter{
position: relative;
font: 22px Arial;
color: #3a3a3a;
-webkit-transition: color .3s ease-out;
-moz-transition: color .3s ease-out;
-o-transition: color .3s ease-out;
-ms-transition: color .3s ease-out;
transition: color .3s ease-out;
}
#celebrity-list > div .links:hover #celebrity-list > div span.letter{
color: #b43838;
}
#celebrity-list > div .links{
position: relative;
width: 190px;
height: 342px;
background: #f2f2f2;
-webkit-transition: border .3s ease-out;
-moz-transition: border .3s ease-out;
-o-transition: border .3s ease-out;
-ms-transition: border .3s ease-out;
transition: border .3s ease-out;
}
首先,CSS选择器不正确。x>y选择器仅选择直接子项。span.letter和div.links都不是#名人榜的直接子代,因此不会被这些选择器选中。在这种情况下,">"可能会被删除。除此之外,ID应该始终是唯一的。
这根本不起作用:
#celebrity-list > div .links:hover #celebrity-list > div span.letter{
color: #b43838;
}
您正试图选择span.letter作为div的子项,作为#名人列表的直接子项,为的子项。links:hover,作为div的孩子,作为#名流列表的直接孩子。
如果您想更改span.links文本颜色,您应该将此元素放在div#链接的之后,并按如下方式选择它:
div.links:hover + span.letter { /* your CSS */ }
另一种选择是将span.letter放入div.links中(作为直接子项),并使用以下选择器:
div.links:hover > span.letter { /* your CSS */ }
如果你真的想在HTML中把span.letter放在div.links之前,你应该使用javascript来实现想要的结果。
选择器必须是可能要应用样式的标记的父级。