隐藏和显示 - 使用淡入淡出的幻灯片切换

Posted

技术标签:

【中文标题】隐藏和显示 - 使用淡入淡出的幻灯片切换【英文标题】:Hide and Show - slideToggle with fadeIn 【发布时间】:2012-12-20 04:52:04 【问题描述】:

我有一个包含三个链接的菜单,linkOne、LinkTwo、linkThree。

linkOne:我打开了一个 slideToggle。它就像我想要的那样工作,当我按下它打开它时,当我再次按下它关闭时,这就是我所追求的。

$(document).ready(function()

   $('.linkOne').click(function(e) 
    e.preventDefault();
    $('.linkTwo-content').hide();  
    $('.linkThree-content').hide();  
    $('.linkOne-content').slideToggle(500);      
    return false;  
  ); 

linkTwo:我在这里放了一个也适用于这个效果的淡入淡出。

$('.linkTwo').click(function(e) 
    e.preventDefault();
    $('.linkThree-content').hide();      
    $('.linkOne-content').hide();      
    $('.linkTwo-content').fadeIn(500);         
    return false;
  );

linkThree:我在这里和在 linkTwo 中做的一样。

    $('.linkThree').click(function(e) 
    e.preventDefault();
    $('.linkOne-content').hide();      
    $('.linkTwo-content').hide();      
    $('.linkThree-content').fadeIn(500);         
    return false;
  );

);

我想做的事情是将我在linkTwo 和linkThreer 中使用的FadeIn 效果添加到LinkOne,这样它就变成了一个slideToggle,当它打开时fadeIn 和当它关闭时fadeOuts 与slideToggle。然后我希望所有三个链接都这样做并具有此效果,slideToggleFadeIn。

我不希望您对代码进行太多更改,因为我想了解其中发生了什么。因此,如果您能提供帮助,请不要只是为其添加新代码。

这是小提琴http://jsfiddle.net/lamberta/Pkdj5/

【问题讨论】:

【参考方案1】:

我会更新你的代码,这样就不会有太多的冗余;使用绑定到每个适当显示/隐藏的链接的函数应该很容易。我已经让你从这里开始了:

http://jsfiddle.net/Pkdj5/2/

.slideToggle 更改为 .css('opacity' 0).animate('opacity': 1, 'height', 'show') 以创建同时淡入淡出/滑动效果。如果您只想使用一个animate,也可以使用'toggle' 的不透明度和高度值。

【讨论】:

抱歉,如果您与我发布的代码相比,您的代码中有些内容不正确(没有我想要的效果)。当我按linkOne 时,是的,它会向下滑动一次,但没有我想要的fadeIn。然后,当您再次按下它时,它不会关闭它并向上滑动,每次按下 linkOne 时它​​都会开始褪色。【参考方案2】:

试试这个http://jsfiddle.net/Pkdj5/11/

javascript

if(!$('.linkOne-content').is(":visible"))
     $('.linkOne-content').fadeIn(500);
     $('.linkOne-content p').slideDown(500);

else
     $('.linkOne-content').fadeOut(500);
     $('.linkOne-content p').slideUp(500);

css:

p display: block

【讨论】:

【参考方案3】:

我知道这很旧,但在您的元素上单击事件的事件侦听器回调中,您可以编写:

$('.yourels').on('click', function(e)
    $(e.target).slideToggle(
        progress : function(ani, now)
            $(e.target).css('opacity', now);
        
    );
)

这里的整洁部分是 now 属性从 0 到 1 就像不透明度一样

【讨论】:

以上是关于隐藏和显示 - 使用淡入淡出的幻灯片切换的主要内容,如果未能解决你的问题,请参考以下文章

jQuery效果:隐藏显示切换滑动淡入淡出动画

jquery效果- 显示和隐藏 淡入淡出 滑动 隐藏

jQuery基础(动画篇 animate,显示隐藏,淡入淡出,下拉切换)

JQuery--基础动画滑动动画淡入淡出动画自定义动画

淡入/淡出的简单切换不适用于过渡、不透明度和可见性

jQuery动画(显示隐藏,淡入淡出,滑动)