我发现jQuery: FadeOut 然后 SlideUp很好,但不是那个。
我怎么能fadeOut()
和slideUp()
同时?我尝试了两个setTimeout()
具有相同延迟的单独调用,但是slideUp()
页面加载后就发生了。
有人做过吗?
我发现jQuery: FadeOut 然后 SlideUp很好,但不是那个。
我怎么能fadeOut()
和slideUp()
同时?我尝试了两个setTimeout()
具有相同延迟的单独调用,但是slideUp()
页面加载后就发生了。
有人做过吗?
你可以这样做,这是一个完整的切换版本:
$("#mySelector").animate({ height: 'toggle', opacity: 'toggle' }, 'slow');
对于严格的淡出:
$("#mySelector").animate({ height: 0, opacity: 0 }, 'slow');
直接对高度进行动画处理会导致某些网页上出现抖动。然而,将 CSS 过渡与 jQuery 相结合slideUp()
可以实现平滑的消失动作。
const slideFade = (elem) => {
const fade = { opacity: 0, transition: 'opacity 400ms' };
elem.css(fade).slideUp();
};
slideFade($('#mySelector'));
摆弄代码:
https ://jsfiddle.net/00Lodcqf/435
在某些情况下,一个非常快速的 100 毫秒暂停以允许更多淡入淡出会产生稍微平滑的体验:
elem.css(fade).delay(100).slideUp();
这是我在 dna.js 项目中使用的解决方案,您可以在其中查看函数的代码 ( github.com/dnajs/dna.js ),dna.ui.slideFade()
以查看对切换和回调的额外支持。
“Nick Craver”接受的答案绝对是要走的路。我唯一要补充的是,他的回答实际上并没有“隐藏”它,这意味着 DOM 仍然将它视为一个可行的显示元素。
如果您在“滑动”元素上有边距或填充,这可能是一个问题......它们仍然会显示。所以我只是在 animate() 函数中添加了一个回调,以便在动画完成后实际隐藏它:
$("#mySelector").animate({
height: 0,
opacity: 0,
margin: 0,
padding: 0
}, 'slow', function(){
$(this).hide();
});
slideUp
可以像这样使用andfadeOut
方法本身来做到这一点:
$('#mydiv').slideUp(300, function(){
console.log('Done!');
}).fadeOut({
duration: 300,
queue: false
});
我有一个类似的问题并像这样修复它。
$('#mydiv').animate({
height: 0,
}, {
duration: 1000,
complete: function(){$('#mydiv').css('display', 'none');}
});
$('#mydiv').animate({
opacity: 0,
}, {
duration: 1000,
queue: false
});
queue 属性告诉它是将动画排队还是立即播放
基于@CodeKoalas 再进行一项改进。它考虑了垂直边距和填充,但不考虑水平。
$('.selector').animate({
opacity: 0,
height: 0,
marginTop: 0,
marginBottom: 0,
paddingTop: 0,
paddingBottom: 0
}, 'slow', function() {
$(this).hide();
});