jQuery、CSS:显示后 DOM 个元素的动画:none
jQuery, CSS: Animating following DOM Elements after display: none
一个简单的问题。
如果我将 div 设置为 display: none
,DOM 中的以下元素将跳到 [= 所在的位置21=] 是。
我如何为跳跃设置动画,它只是轻轻地向上移动?
请提前寻求帮助!
你不能。而不是显示:none;使它的高度为:0;和过渡:高度 .5s;溢出:隐藏;
然后你会稍微移动其他div。 :)
如果你愿意,我可以做一个简单的codepen
如果您使用 jquery
,请使用 slideUp()
而不是 hide();
$('.hidden').slideUp();
让它动起来。 jQuery 有很多方法可以做到这一点,例如:
$('#myDiv').hide(200); // 200ms
为避免隐藏元素的宽度会干扰页面上的其他元素,您应该简单地:
$('yourElement').slideUp();
这样您就可以使 yourElement
高度具有动画效果,最后隐藏它,实际上将其从元素流中移除。
编辑:
感谢 A. Wolff 的评论。在 .slideUp()
.
之后删除了不需要的 .hide()
函数
为您提供了更好的解决方案。每次单击粉红色框时,您都可以显示和隐藏蓝色框。
$('.pinkBox').click(function() {
$('.pinkBox').addClass('show');
$('.blueBox').addClass('displayed');
});
$('.blueBox').click(function() {
$('.pinkBox').removeClass('show');
setTimeout(function() {
$('.blueBox').removeClass('displayed');
}, 300);
});
.blueBox {
height: 100px;
width: 100px;
background-color: blue;
transition: all .3s ease;
position: absolute;
display: none;
}
.pinkBox {
height: 100px;
width: 100px;
background-color: pink;
transition: all .3s ease;
position: absolute;
}
.show {
transform: translateY(100px);
}
.displayed {
display: block;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class='blueBox'>
</div>
<div class='pinkBox'>
</div>
一个简单的问题。
如果我将 div 设置为 display: none
,DOM 中的以下元素将跳到 [= 所在的位置21=] 是。
我如何为跳跃设置动画,它只是轻轻地向上移动?
请提前寻求帮助!
你不能。而不是显示:none;使它的高度为:0;和过渡:高度 .5s;溢出:隐藏;
然后你会稍微移动其他div。 :)
如果你愿意,我可以做一个简单的codepen
如果您使用 jquery
,请使用slideUp()
而不是 hide();
$('.hidden').slideUp();
让它动起来。 jQuery 有很多方法可以做到这一点,例如:
$('#myDiv').hide(200); // 200ms
为避免隐藏元素的宽度会干扰页面上的其他元素,您应该简单地:
$('yourElement').slideUp();
这样您就可以使 yourElement
高度具有动画效果,最后隐藏它,实际上将其从元素流中移除。
编辑:
感谢 A. Wolff 的评论。在 .slideUp()
.
.hide()
函数
为您提供了更好的解决方案。每次单击粉红色框时,您都可以显示和隐藏蓝色框。
$('.pinkBox').click(function() {
$('.pinkBox').addClass('show');
$('.blueBox').addClass('displayed');
});
$('.blueBox').click(function() {
$('.pinkBox').removeClass('show');
setTimeout(function() {
$('.blueBox').removeClass('displayed');
}, 300);
});
.blueBox {
height: 100px;
width: 100px;
background-color: blue;
transition: all .3s ease;
position: absolute;
display: none;
}
.pinkBox {
height: 100px;
width: 100px;
background-color: pink;
transition: all .3s ease;
position: absolute;
}
.show {
transform: translateY(100px);
}
.displayed {
display: block;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class='blueBox'>
</div>
<div class='pinkBox'>
</div>