【问题标题】:CSS Hover Selector - JS or Jquery solutionCSS 悬停选择器 - JS 或 Jquery 解决方案
【发布时间】:2014-04-19 01:09:41
【问题描述】:

我有这样的事情:

<article class="leading-0">
    <h2>
        <a href="link">link title</a>
    </h2>
    <ul class="actions">
        <li class="print-icon">
            <a ...><img...></a>
        </li>
        <li class="email-icon">
            <a ...><img...></a>
        </li>
    </ul>
    <dl class="article-info">
        <dt class="article-info-term">...</dt>
        <dd class="hits">...</dd>
    </dl>
    <p>...</p>
</article>

当您将li 悬停在ul.tools 中时,我想设置h2 元素的样式。

如果有人可以提供帮助,我会很高兴,看看这是否可能。

我记得以前做过一次,但不记得了。

【问题讨论】:

  • 可悲的是,您无法使用 CSS 选择器遍历/向后。

标签: javascript jquery html css css-selectors


【解决方案1】:

问题是您不能仅使用 CSS 来做到这一点。

当你使用 CSS 选择器选择元素时,选择器不能选择父元素,换句话说,你不能以任何方式反转元素......

您可以使用+选择子元素或相邻元素

所以,在你的情况下

<h2><a> link </a></h2>
<ul class='tools'>
    <li> tool 1 </li>
</ul>

当您使用.tools li:hover 时,现在您无法选择li 之外的任何其他元素,您可以在第一个li 悬停时选择相邻的li,或者您可以选择li 的任何子元素。

所以一旦你继续选择元素,你将无法选择在同一级别的前一个元素,也无法选择父元素,也无法选择与父元素相邻的元素。

如果你想做到这一点,你可以使用 Javascript 或 jQuery 来做到这一点。


由于您现在对 jQuery 解决方案持开放态度,因此您可以使用

$("ul.actions li").hover(function(){
   $(this).parent().prev().find('a').toggleClass("hover");
});

Demo

在上面的代码中,我首先使用 this 关键字定位li,然后,我正在寻找它的父元素,它将选择ul,然后我使用.prev() 来寻找前一个兄弟元素,最后我们使用.find('a') 来定位嵌套在h2 中的a 元素


如果你想要唯一的 CSS 方式,最好的办法是将 h2ul 包装在一个元素中,比如 div 元素和 @ 987654340@ 说 .wrapper 比你可以使用像

这样的选择器
.wrapper:hover h2 a {
    color: red;
}

Demo

【讨论】:

  • 好的,但是这个 .tools:hover 怎么样,你认为这应该有效吗?我悬停在 ul 或 li 上没有区别;)
  • @Hossein 是有区别的,如果你使用.tools:hover,它会针对ul元素,一些属性也会被li元素继承,所以这是丢失选择器,更好总是要具体。
  • 现在我将设置实际 ul 的样式,使其具有不同的 alpha 背景颜色,直到有人帮助找到答案,但感谢您的关注;)
  • @Hossein 你不会得到一个纯粹的 CSS 解决方案,所以如果你正在等待,请不要等待 :)
  • 所以如果有其他解决方案可以解决这个问题 :) 我很高兴知道 :)
【解决方案2】:

您需要使用+ 运算符, 这是一个例子:http://jsfiddle.net/TheBanana/JaEGF/

#div1:hover + #div2{
   background:green;
}

【讨论】:

  • OP 想要选择以 伪元素之前的元素为目标,这不会。这会选择下一个孩子。
【解决方案3】:

试试这个 CSS 代码:

article ul.tools li:hover{
    color:green;
}   
article h2 { 
    color:red;  
}

【讨论】:

  • OP 希望在您将鼠标悬停在 ul.tools li 时更改 h2 元素的样式,而这不会。
  • 是的,看来我们需要使用 jquery 或 JS,但这里仍然完成了与您的要求类似的事情。请检查一下。 css-tricks.com/pop-hovers
猜你喜欢
  • 1970-01-01
  • 2020-09-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-01
  • 1970-01-01
  • 2023-03-10
  • 2010-09-21
相关资源
最近更新 更多