繁体   English   中英

如何在悬停时将背景颜色应用于多个元素?

[英]How can I apply a background-color to several elements on hover?

我有一些列表显示为内联块,创建行的错觉。 与表格不同,我无法直接格式化行。 当一个人悬停在上面时,我想为行中的每个<li>应用背景颜色。 这可能通过CSS和名称/ ID吗?

谢谢。

麦克风

澄清:在阅读答案后,我意识到我的问题不清楚。 我有3个并排列表,所以每个列表中的第一个<li>代表第一行。 每个列表中的第二个<li>将是第二行。 等等。

使用jQuery的跨浏览器支持:

CSS:

li:hover { background-color: #F00 }

对于IE6 - 因为它不支持除了<a>元素之外的任何东西的hover伪类 - 你在IE6特定的样式表和脚本中提供以下内容:

CSS:

li.hover { background-color: #F00 }

JS:

$("li").hover(
  function() {
    $(this).addClass("hover");
  },
  function() {
    $(this).removeClass("hover");
  }
);

不确定我是否理解正确,但这个相当简单的解决方案应该可以解决问题:

li:hover {
  background-color: pink;
}

但是有些浏览器不支持hover伪类。

如果要将样式应用于特定<ul>所有子元素,可以使用bigmattyh的方法,但在<ul>而不是<li>上设置类。

然后,添加一个CSS样式,如下所示:

.hover li { /* some styles */ }

使用此方法,您可以将样式应用于所有子<li>元素,但您只需要父<ul>中的事件处理程序,从而使代码运行得更快。

我会简化并重新组织HTML,以便每个UL都是一行而不是一列。

<html>
<head>
<style>
  ul { clear: both; }
  ul li { 
    float: left; 
    list-style: none;
    padding: 5px 10px;
    border: 1px solid white; }
  .hover { background-color: red; }
</style>
</head>
<body>
  <div id='list-container'>
    <ul class="hover">
      <li>a</li>
      <li>b</li>
      <li>c</li>
    </ul>
    <ul>
      <li>a</li>
      <li>b</li>
      <li>c</li>
    </ul>
    <ul>
      <li>a</li>
      <li>b</li>
      <li>c</li>
    </ul>
  </div>
</body>
</html>

和JS:

$(document).ready(function() {
  var alterRow = function(container, class, toggleOn) {
    $(container).children().each(function(i, node) {
      if ( toggleOn ) {
        $(node).addClass(class);
      } else {
        $(node).removeClass(class);
      }
    });
  };

  $("#list-container ul").each(function(i, node) {
    $(node).hover(
      function() { alterRow(node, "hover", true); },
      function() { alterRow(node, "hover", false); }
    );
  });
});

您可以在此处查看和编辑它: http//jsbin.com/ewijo

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM