【问题标题】:CSS - affecting an element by hovering on another one, when they both belong to different divsCSS - 通过悬停在另一个元素上来影响一个元素,当它们都属于不同的 div 时
【发布时间】:2015-03-24 22:22:48
【问题描述】:

是否可以通过将鼠标悬停在属于另一个 div 的元素上来影响放置在 div 中的元素?

我可以使用通用的同级选择器让它工作,但只有当我悬停的元素没有放在任何其他元素内时。这是唯一的方法吗?

编辑: 我真的不想让你厌倦所有的细节,但是是的,也许我应该首先包含一些标记。所以,这里是,相当(过度)简化:

 <nav>
  <button></button>
 </nav>

<div id="sidemenu">
 <ul class="nav">
  <li>Link 1</li>
  <li>Link 2</li>
 </ul>
</div>

在小型设备上,侧边菜单会被隐藏,按钮元素会出现。将鼠标悬停在后者上将使侧边菜单重新显示为下拉菜单。至少那是想法。 我真的不觉得更改标记是正确的,所以我想我需要找到另一种方法来做到这一点。

【问题讨论】:

  • 请添加您的实际标记以帮助您.....
  • 你能发布一个你到目前为止尝试过的代码示例吗?
  • 是的,差不多,因为你不能遍历元素的父元素之上,只能遍历其兄弟元素或更向下的层次结构。
  • 不可能,因为这需要parent selector
  • 感谢您的回复。我添加了一些额外的信息,希望它们已经足够了。

标签: css hover css-selectors


【解决方案1】:

这是不可能的。您可以让子元素响应父元素上的悬停,但不可能让完全不同的元素响应另一个随机元素上的悬停。

只有 CSS。如果您添加一点 javascript/jQuery,这是可能的。例如,您可以在 jQuery 中使用悬停功能。

//edited
$('button').hover(function () {
     $('#sidemenu').addClass('hover');
}, 
function () {
     $('#sidemenu').removeClass('hover');
});  

这基本上是在将鼠标悬停在 #element 上时向 #other-element 添加一个类,并在移除悬停时删除该类。

编辑:我更新了代码以匹配您的标记。在这种情况下,将鼠标悬停在按钮上会向侧面菜单添加一个类。然后,您可以像这样设置侧边菜单的样式:

 #sidemenu
 {
 display:none;
 }

 #sidemenu.hover
 {
 display:block;
 }

这段css通常会隐藏#sidemenu,但在添加hover类时会显示它。

【讨论】:

  • 我赞成这个答案,因为我同意它作为一种解决方案,但想提一下,通过将鼠标悬停在一个元素上,您可以使用只是 CSS,带有像 .top:hover + .bottom span 这样的选择器,这里是 fiddle
  • 感谢两位的回复。 Anwardo,我对 JS/JQuery 了解不多,但是,如果我理解正确,你的意思是这个 sn-p 会在 sidemenu 中添加一个 HTML 类?我用 CSS 会不会还是不可能?
  • 我更新了我的答案,我希望这能回答你的问题。 @Dpeif 使用兄弟选择器是对的。首先阅读问题时,我有点阅读了兄弟部分。但在这种情况下,这无论如何都不会适用,因为只有将鼠标悬停在 nav 元素内的子元素上时才会发生该行为。
  • 这比我最初的想法更有意义(我仍然必须使用一些无法真正使用的上下文选择器来访问该类)。只有一个问题,在我有机会选择任何列表项之前,侧面菜单消失了,但我最终找到了一个类似的解决方案来消除这个问题(以防万一有人感兴趣,它是:$('button.sidebutton') .click(function() { $('#sidemenu').toggleClass("current"); }); )。不过,我会将您的回答标记为有帮助,毕竟您给了我我所要求的。再次感谢您。
猜你喜欢
  • 2018-07-30
  • 2013-03-29
  • 1970-01-01
  • 2011-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多