【发布时间】:2012-08-23 16:13:20
【问题描述】:
.fadeOut() 方法为匹配元素的不透明度设置动画。当 opacity 为 0 时,显示样式属性设置为 none,因此该元素不再影响页面的布局,fadeIn() 也是如此。
我的问题是他们是否可以使用可见性属性,使元素占据页面布局中的空间而不仅仅是可见的?
【问题讨论】:
.fadeOut() 方法为匹配元素的不透明度设置动画。当 opacity 为 0 时,显示样式属性设置为 none,因此该元素不再影响页面的布局,fadeIn() 也是如此。
我的问题是他们是否可以使用可见性属性,使元素占据页面布局中的空间而不仅仅是可见的?
【问题讨论】:
使用 jQuery 的fadeTo(),然后通过回调设置可见性。示例:
$('#fade').on("click", function(){
$(this).fadeTo(500, 0, function(){
$(this).css("visibility", "hidden")
}) // duration, opacity, callback
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
<a href="#" id="fade">Click to Fade</a>
<div>This won't move</div>
【讨论】:
$('selector').css("visibility", "hidden").attr( 'aria-hidden', true );
使用 css opacity 进行动画似乎可以达到类似的效果。
$('#element').animate({opacity: 0}, 1000);
使用 opacity: 1 执行相同的操作以淡入。
【讨论】:
只需覆盖回调中的属性
$('Element').on("click", function() {
$(this).fadeOut(500, function() {
$(this).css({"display": "block","visibility": "hidden"}); // <-- Style Overwrite
});
})
【讨论】: