悬停元素,在父元素兄弟姐妹子元素上显示悬停效果

Posted

技术标签:

【中文标题】悬停元素,在父元素兄弟姐妹子元素上显示悬停效果【英文标题】:Hover element, show hover effect on parent elements siblings child 【发布时间】:2013-12-07 01:27:12 【问题描述】:

现在让我们看看,不确定我的逻辑是否 100% 下降。

这就是我正在使用的(bootply 演示 here

<ul>
    <li class="row">
        <span class="category col-sm-2 highlight">Architecture</span> 
        <span class="title col-sm-4"><a href="#">Hello world!</a></span>
        <span class="publication col-sm-2 hidden-xs">Magazine</span>
        <span class="year col-sm-2 hidden-xs">2007</span>  
    </li>
    <li class="row">
        <span class="category col-sm-2 invisible">Architecture</span> 
        <span class="title col-sm-4"><a href="#">Keep them coming</a></span>
        <span class="publication col-sm-2 hidden-xs">Magazine</span>
        <span class="year col-sm-2 hidden-xs">2007</span>  
    </li>
    <li class="row">
        <span class="category col-sm-2 invisible">Architecture</span> 
        <span class="title col-sm-4"><a href="#">The other posts</a></span>
        <span class="publication col-sm-2 hidden-xs">Magazine</span>
        <span class="year col-sm-2 hidden-xs">2007</span>  
    </li>
    <li class="row">
        <span class="category col-sm-2">Cities</span> 
        <span class="title col-sm-4"><a href="#">Tezt</a></span>
        <span class="publication col-sm-2 hidden-xs">Magazine</span>
        <span class="year col-sm-2 hidden-xs">2007</span>  
    </li>
</ul>

这个想法是,当将 a 元素悬停在 span.title 中时,出版物和年份中的文本颜色会发生变化。我也在寻找一种方法来改变同类型的第一个span.category 的颜色(即悬停“另一个帖子”应该会改变第一个.rowspan.category 的颜色)。这可以通过纯 CSS 实现吗?

【问题讨论】:

我怀疑。脚本需要与 css 一起使用。 恐怕不仅仅是 CSS 为什么不把鼠标悬停在li上,让css像:li:hover .title..., li:hover .category... 当任何具有该类别的跨度悬停时,您是在这里寻找悬停Architecture 吗? @user2549787 没错! 【参考方案1】:

我明白你在这里想要做什么,在这种情况下,你可以使用下面的选择器.. 这样当li 悬停时,它也会将颜色应用于第一个span

.row:hover span:nth-of-type(1) 
   color: red;

我刚刚检查了您小提琴中的 DOM,我想更改其中的一些内容..

Demohover 一个 hello 并看到第一个 span 颜色会改变)

Demo 2(DOM 已更改)- 这只是一个总体思路,我已经为您提供了选择器,但无论如何这都需要 DOM 更改..


在您的代码中更改了Demo


再次根据您的评论,现在您可以突出显示所有 span 及其标题

ul li div.row:hover > span 
   color: red;

Final Demo

【讨论】:

+1 来自我,你将你的优点恢复到你应得的积极状态;) - @Mr.Alien 让它“完美” - @BindiyaPatoliya 是的,那是我 :) 他确实在悬停.title 元素时说过,现在第一个元素将始终在悬停.row 时更改,而不仅仅是在悬停.title 时更改。 IMO,这在 CSS 中是不可能的,因为你不能选择以前的兄弟姐妹。 这真的很棒@Mr.Alien 非常感谢!哇,我没想到会有这么大的兴趣:) @INT 如果您认为悬停标题将为所有相关行着色而不是答案是否定的,您不能......您可以一次突出显示一行

以上是关于悬停元素,在父元素兄弟姐妹子元素上显示悬停效果的主要内容,如果未能解决你的问题,请参考以下文章

CSS 效果 :hover::after 在子元素上 :hover 在父元素上

选择除兄弟姐妹和自我之外的所有元素

即使没有悬停在父级上,子元素也会出现

悬停效果不适用于 z-index 较低的元素

悬停一个元素时更改所有其他元素的样式

在父悬停过渡后显示子