悬停时范围文本不变



我刚刚开始学习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来实现想要的结果。

这是因为div.links是span.letter 的兄弟

选择器必须是可能要应用样式的标记的父级。

相关内容

  • 没有找到相关文章