Jquery在缩略图上设置不透明度动画,除了选中的那个

Posted

技术标签:

【中文标题】Jquery在缩略图上设置不透明度动画,除了选中的那个【英文标题】:Jquery animate opacity on thumbnails except for the one selected 【发布时间】:2011-07-03 20:53:07 【问题描述】:

我有一组缩略图,我想在选择另一个缩略图时将其缩小到 40%。原始缩略图将保持 100% 的不透明度。我需要为淡出的缩略图发布一个通用版本,以便在页面上的任意位置单击将使其他缩略图恢复到 100% 的不透明度。

这里是演示:http://www.dumstr.com/sofeb11/stash/

Js:

$(function()            
    $("div#fadeout .stashthumb").click(function ()              
            $(this).siblings().stop().animate(opacity: 0.4, 300);   
    ,          
    function ()       
            $("div#fadeout .stashthumb").stop().animate(opacity: 1.0, 300);       
    );

html

<div id="fadeout" class="stasher">

     <div style="opacity: 1;" class="stashthumb">
     <span><a href="#"><img src="img/stash-01.jpg"></a></span>
     </div>
</div>

谢谢!

【问题讨论】:

【参考方案1】:

将您的 javascript 更改为此(我认为这是您想要的行为,您的问题对我来说不是 100% 清楚):

$(function()            
    $("div#fadeout .stashthumb").click(function (event)              
        $(this).siblings().stop().animate(opacity: 0.4, 300);       
        $(this).stop().animate(opacity: 1.0, 300); 
        event.stopPropagation();     // don't fire the body click handler
    );

    // here's the "anywhere on the page" part you wanted
    $("body").click(function() 
        $("#fadeout .stashthumb").stop().animate(opacity: 1.0, 300);
    );   
);

【讨论】:

我觉得不错。我仍然会亲自使用该类作为选择器(然后使用 not() 删除单击的项目)而不是兄弟姐妹,以防页面结构的更改在将来阻止它工作。 就个人而言,我也会。我只是让它尽可能与原版相似。 有效!干得好特塞雷克斯。在淡出事件期间,您可以添加一个 cursor:pointer 到 body 的任何机会......我喜欢将该区域显示为可点击。 应该可以加 $(body).css('cursor', 'pointer');到缩略图点击事件。然后 $(body).css('cursor', '');在正文中单击。【参考方案2】:

以 Digitlworld 的回答为基础

$("div#fadeout .stashthumb").click(function (e) 
    e.stopPropagation(); // This will stop the click bubbling up to the body
    $(this).removeClass('thumb40').addClass('thumb100');
    $('.stashthumb').not(this).removeClass('thumb100').addClass('thumb40');
);

$(body).click(function() 
    $('.stashthumb').removeClass('thumb40').addClass('thumb100');
);

【讨论】:

我认为 Digitlworld 建议使用 toggleClass 来获得淡入淡出效果,否则它会起作用。 确实是。我的意思是,有很多方法可以做到这一点,我敢肯定,我只是想做一个快速的 jQuery 方法。 如果他们单击另一个块元素,$(body).click 解决方案会起作用吗?我认为它依赖于事件冒泡? 它确实依赖于冒泡,所以只要其他元素没有 stopPropagation 就可以工作。 它适用于没有自己的点击事件的任何东西,其中调用了 stopPropagation。该死的@Tesserex,打败我! :D【参考方案3】:

我会使用分配给缩略图的 CSS 类来实现 40% 的不透明度,另一个用于 100% 的不透明度。

当我想将它们全部淡入时,我会使用 jQuery $(".thumb40") 或类似的东西来选择褪色的那些,并使用 jQuery 函数在类之间淡入淡出将它们的 CSS 类设置为 .thumb100。 jQuery toggleClass

要淡出除当前之外的所有内容,请使用类似的 jQuery,.thumb100,但输入检查代码以确保您更改为 .thumb40 的不是您选择的那个。

至于点击离开,我自己也很好奇。

【讨论】:

【参考方案4】:

像这样修改你的 jQuery:

    $("div#fadeout .stashthumb").click(function (e) 
    $(".stashthumb").animate(opacity: 1,300);    
            $(this).siblings().stop().animate(opacity: 0.4, 300);   
            e.stopPropagation();
    );
$("body #fadeout:not(.stashthumb)").click(function () 
    $(".stashthumb").animate(opacity: 1,300);
);

这是一个工作示例jsFiddle

【讨论】:

该部分有效,但他还希望单击页面上的任意位置以将它们全部恢复到 100%。 [更新] 谢谢,这在另一个方面很有帮助。当您在拇指本身之外单击时,我也有兴趣让所有拇指弹回 100%。这需要为容器设置图像叠加层吗? 我将修改小提琴以包括单击其他地方以将不透明度恢复为 100%。

以上是关于Jquery在缩略图上设置不透明度动画,除了选中的那个的主要内容,如果未能解决你的问题,请参考以下文章

jQuery 中的不透明度更改动画不起作用

如何使用 jQuery 为元素的背景不透明度设置动画?

使用 jQuery 为文本的不透明度设置动画时更正 IE Cleartype/Filter 问题

jQuery动画悬停闪烁失控

使用 jQuery 制作动画时失去悬停(不移动鼠标)

jQuery-4.动画篇---淡入淡出效果