【问题标题】:list-item opacity 0.7 except for active items列表项不透明度 0.7,活动项除外
【发布时间】:2011-10-24 21:11:07
【问题描述】:

我更改了不透明度为 0.7 的列表项,效果很好。在同一个列表中,我有一个类和 id 为“活动”的列表项。

意思是活动列表项的不透明度为1,但这不起作用。

这是 jQuery:

            $("#active").css({ opacity: 1 });
            $(".nav_top ul li a").css({ opacity: 0.7 });

            $(".nav_top ul li a").hover(function()
            {
                $(this).animate({ opacity: 1 });
            },
            function()
            {
                $(this).animate({ opacity: 0.7 });
            });

这是列表:

<div class="nav_top">
    <ul>
<li class="active"><a href="#">item 1</li>
<li><a href="#">item 2</li>
<li><a href="#">item 3</li>
<li><a href="#">item 4</li>
<li><a href="#">item 4</li>

【问题讨论】:

  • “接受”?也许您的意思是“除外”(如排除;不属于)?

标签: jquery opacity


【解决方案1】:

你可以用 CSS 和一点 jQuery 来完成这一切

<div class="nav_top">
    <ul>
        <li class="active"><a href="#">item 1</a></li>
        <li><a href="#">item 2</a></li>
        <li><a href="#">item 3</a></li>
        <li><a href="#">item 4</a></li>
        <li><a href="#">item 4</a></li>
    </ul>
</div>

并使用这些跨浏览器不透明度样式:

.nav_top li {
    -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=70)";
    filter: alpha(opacity=70);
    -moz-opacity: 0.7;
    -khtml-opacity: 0.7;
    opacity: 0.7;
}

.nav_top li.active {
    -ms-filter: "progid:DXImageTransform.Microsoft.Alpha(Opacity=100)";
    filter: alpha(opacity=100);
    -moz-opacity: 1.0;
    -khtml-opacity: 1.0;
    opacity: 1.0;
}

还有一些 jQuery

// hover on the li, not the a, since the li has the class
$(".nav_top ul li").hover(function() {
    $(this).animate({ opacity: 1 });
}, function() {
    $(this).animate({ opacity: 0.7 });
});

【讨论】:

  • 好的,谢谢,效果很好。一个小问题,现在当我悬停时,活动项目的不透明度从 1 变为 0.7,但我不想改变它,所以它必须保持 1。
【解决方案2】:
// Global "all are 0.7 opacity" rule
// exclude the li with the active class though [:not(.active)]
$(".nav_top ul li:not(.active) a")
  // change items to 0.7 opacity
  .css({ opacity: 0.7 })
  // and bind to hover
  .hover(function(){
      $(this).animate({ opacity: 1 });
  },function(){
      $(this).animate({ opacity: 0.7 });
  });

不过有几点:

  1. 确保关闭您的锚 (&lt;a&gt;&lt;/a&gt;) 标签)
  2. 您可以使用:not() 排除active&lt;li&gt;

在这里找到演示:http://jsfiddle.net/xJF7X/2/

【讨论】:

  • 好的,谢谢,效果很好。一个小问题,现在当我悬停时,活动项目的不透明度从 1 变为 0.7,但我不想改变它,所以它必须保持 1。
  • 刚把你的代码改成: $(".nav_top ul li:not(.active) a") 现在活动部分没有改变
  • @LeonvanderVeen:是的,只是需要更改选择器。我已将我的答案更新为一个简短/简洁的解决方案以满足您的需求。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-21
  • 1970-01-01
  • 1970-01-01
  • 2014-01-10
相关资源
最近更新 更多