【发布时间】:2017-06-20 00:10:31
【问题描述】:
在没有任何明显闪烁和任何奇怪现象的情况下实现这一目标的最佳方法是什么?
开始的小提琴:http://jsfiddle.net/35qec14b/2/
$('.element').on('click', function(e){
this.remove();
});
.element {
position:relative;
width: 200px;
margin:5px;
padding:20px;
cursor:pointer;
background: rgb(150,200,250);
transition:1s linear;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
(click to remove)
<div class="element">Element 1</div>
<div class="element">Element 2<br>Second line</div>
<div class="element">Element 3</div>
<div class="element">Element 4<br>Second line</div>
<div class="element">Element 5</div>
注意:在这种情况下,被移除的元素必须立即消失,因为它会出现在另一个位置,我们不希望它同时在两个地方可见。
目前的想法:
- transform:translateY 用于已删除元素下方的所有元素(对于大型列表可能会占用大量性能)
- 动画/变换下面第一个元素的margin,从移除元素的高度到0(利用链式动画?step-start?)
- 用透明占位符替换已移除的元素,并将其自己的 height 设置为 0
【问题讨论】:
标签: css animation css-animations