【问题标题】:Using jQuery to switch between tabs using opacity for emphasis使用 jQuery 在选项卡之间切换,使用不透明度进行强调
【发布时间】:2023-03-19 03:40:01
【问题描述】:

问题:

我正在为我的个人作品集网站创建一个图库页面。我需要它在顶部有多个链接,用于我的艺术的不同类别。登陆网站后,将选择“全部”选项,并且我的艺术的所有缩略图都将显示并且完全不透明。当点击链接时,只有属于链接对应类别的缩略图将保持 100% 不透明度,而其他缩略图将变暗为 50%。

我有我认为接近正确的代码,但仍然什么都不做。下面是我正在使用的代码。

(缩写的)HTML:

<ul id="filterOptions">
<li class="active"><a href="#" class="all">All</a></li>
<li><a href="#" class="ty">Typography</a></li>
<li><a href="#" class="pr">Print</a></li>
</ul>

<ul class="ourHolder">
<li data-type="ty"><a href="img.jpg"><img src="img.png"/></a></li>
<li data-type="il"><a href="img.jpg"><img src="img.png"/></a></li>
<li data-type="pr"><a href="img.jpg"><img src="img.png"/></a></li>

CSS:

$(文档).ready(函数() { var $holder = $('ul.ourHolder'); var $data = $holder.clone(); $('#filterOptions li a').click( 功能(e){ // 重置所有按钮的活动类 $('#filterOptions li').removeClass('active'); // 分配被点击的过滤器选项的类 // 元素到我们的 $filterType 变量 var $filterType = $(this).attr('class'); $(this).parent().addClass('active'); if ($filterType == 'all') { // 将所有 li 项分配给 $filteredData var when // 单击“全部”过滤器选项 var $filteredData = $data.find('li'); $filteredData.animate({opacity: 1.0}, 500); } 别的 { var $filteredData = $data.find('li[data-type=' + $filterType + ']'); $filteredData.animate({opacity: 0.5}, 500); } }); });

非常感谢任何帮助,我需要启动我的新网站,而这段代码就是阻碍我前进的全部!

【问题讨论】:

  • 尝试使用$fiteredData.fadeTo(500,1) and $filteredData.fadeTo(500,.5) 而不是animate。
  • 它仍然什么也不做。无论以何种方式输入,所有内容始终保持 100% 不透明度。
  • 这基本上就是我要找的效果:davewhitley.com 但一切都不必一开始就非黑即白。

标签: jquery tabs click toggle opacity


【解决方案1】:

jsFiddle demo

HTML

<ul id="filterOptions">
    <li class="active"><a href="#" data-type="all">All</a>

    </li>
    <li><a href="#" data-type="ty">Typography</a>

    </li>
    <li><a href="#" data-type="pr">Print</a>

    </li>
</ul>
<ul class="ourHolder">
    <li class="ty"><a href="img.jpg"><img src="img.png"/></a>

    </li>
    <li class="il"><a href="img.jpg"><img src="img.png"/></a>

    </li>
    <li class="pr"><a href="img.jpg"><img src="img.png"/></a>

    </li>
    <li class="ty"><a href="img.jpg"><img src="img.png"/></a>

    </li>
    <li class="il"><a href="img.jpg"><img src="img.png"/></a>

    </li>
    <li class="pr"><a href="img.jpg"><img src="img.png"/></a>

    </li>
</ul>

jQuery

$(document).ready(function () {
    var $holder = $('ul.ourHolder');
    var $data = $holder.clone();
    var holders = $('.ourHolder li');
    $('#filterOptions li a').click(
    function (e) {
        // reset the active class on all the buttons
        $('#filterOptions li').removeClass('active');
        // assign the class of the clicked filter option
        // element to our $filterType variable
        var $filterType = $(this).data('type');
        var noOpac = $(this).data('type');
        $(this).parent().addClass('active');
        if ($filterType == 'all') {
            // assign all li items to the $filteredData var when
            // the 'All' filter option is clicked
            var $filteredData = $data.find('li');
            $filteredData.animate({
                opacity: 1.0
            }, 500);
            $('.ourHolder li').animate({
                opacity: 1.0
            }, 0);
        } else {
            $('.ourHolder li').animate({
                opacity: 0.5
            }, 250);
            $.each(holders, function (i, v) {
                if ($(this).hasClass(noOpac)) {
                    $(this).animate({
                        opacity: 1.0
                    }, 0);
                }
            });
        }

    });
});

【讨论】:

  • 非常感谢。我实际上不知道 .each 部分的作用,但我非常感谢代码。当然,这可以满足我的需要,但是有没有办法让淡入和淡出效果同时发生而不是一个接一个?
  • $.each 只是一个 jQuery 迭代器,用于保存通过 $('.ourHolder li') 选择的元素的对象。我跑过我的 jsFiddle 几次,虽然 &lt;li&gt; 连续重新打开,但单独区分它们太快了。
  • 嗯,由于某种原因,当我使用演示时,我得到一堆弹出窗口,每个图像的真假都在其中,所以我看不到它们是如何过渡的。它在我正在处理的网站上显示的方式,您可以清楚地看到淡出部分,然后是淡入。在选项卡之间切换时没关系,但是从所有选项卡第一次单击时,所有选项卡都为 100 %,对于任何选项卡,您清楚地看到它从全部 100% 到全部 50%,再到几张图像回到 100%。这并不可怕,但如果有办法解决它,我想。如果没有,我只会调整它。再次,非常感谢!
  • 啊,抱歉,我在里面留下了“警报”。试试这个:jsfiddle.net/devlshone/Jj4FH/1哦,如果你没问题,请务必接受答案。
  • 一定是我注意到了更多的停顿,因为我的缩略图很大。这真的没什么大不了的,它仍然可以做我想做的事。非常感谢您的帮助!这让我的整个网站重新回到正轨,太棒了。
猜你喜欢
  • 1970-01-01
  • 2015-02-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-08
  • 1970-01-01
  • 2015-02-23
  • 2016-03-14
相关资源
最近更新 更多