删除 div 后添加效果
Add effect when a div has been removed
我想在我 remove
的时候给其他 div
的这个 "move up" 添加效果。
这里 html:
<ul id="fds">
<li>
<h3>one</h3>
<p>Hello guys</p>
<p>
<button class="remove">x</button>
</p>
</li>
<li>
<h3>two</h3>
<p>Hello guys</p>
<p>
<button class="remove">x</button>
</p>
</li>
<li>
<h3>three</h3>
<p>Hello guys</p>
<p>
<button class="remove">x</button>
</p>
</li>
<li>
<h3>four</h3>
<p>Hello guys</p>
<p>
<button class="remove">x</button>
</p>
</li>
</ul>
此处JavaScript:
$("#fds").delegate(".remove", 'click', function() {
var $li = $(this).closest("li");
$li.fadeOut(300, function() {
$li.remove();
})
})
Here 一个JS来测试这个。
我觉得像 this 这样的东西很接近你想要的。
只需在淡出之前添加 $li.animate({ height: 'toggle', opacity: 'toggle' }, 'slow');
。
此处您的 JSfiddle 已更新。 https://jsfiddle.net/L0prkrct/16/
这样元素会在动画完成后真正隐藏起来。
$li.animate({
height: 0,
opacity: 0,
}, 'slow', function(){
$(this).hide();
});
将上边距设置为减去高度以提供更好的用户体验。
$("#fds").delegate(".remove", 'click', function() {
var $li = $(this).closest("li");
$li.css({opacity: 0}).animate({marginTop: -1 * $li.height()}, 400, function() {$li.remove();})
})
li
{
border: 1px solid red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="fds">
<li>
<h3>one</h3>
<p>Hello guys</p>
<p>
<button class="remove">x</button>
</p>
</li>
<li>
<h3>two</h3>
<p>Hello guys</p>
<p>
<button class="remove">x</button>
</p>
</li>
<li>
<h3>three</h3>
<p>Hello guys</p>
<p>
<button class="remove">x</button>
</p>
</li>
<li>
<h3>four</h3>
<p>Hello guys</p>
<p>
<button class="remove">x</button>
</p>
</li>
</ul>
我想在我 remove
的时候给其他 div
的这个 "move up" 添加效果。
这里 html:
<ul id="fds">
<li>
<h3>one</h3>
<p>Hello guys</p>
<p>
<button class="remove">x</button>
</p>
</li>
<li>
<h3>two</h3>
<p>Hello guys</p>
<p>
<button class="remove">x</button>
</p>
</li>
<li>
<h3>three</h3>
<p>Hello guys</p>
<p>
<button class="remove">x</button>
</p>
</li>
<li>
<h3>four</h3>
<p>Hello guys</p>
<p>
<button class="remove">x</button>
</p>
</li>
</ul>
此处JavaScript:
$("#fds").delegate(".remove", 'click', function() {
var $li = $(this).closest("li");
$li.fadeOut(300, function() {
$li.remove();
})
})
Here 一个JS来测试这个。
我觉得像 this 这样的东西很接近你想要的。
只需在淡出之前添加 $li.animate({ height: 'toggle', opacity: 'toggle' }, 'slow');
。
此处您的 JSfiddle 已更新。 https://jsfiddle.net/L0prkrct/16/
这样元素会在动画完成后真正隐藏起来。
$li.animate({
height: 0,
opacity: 0,
}, 'slow', function(){
$(this).hide();
});
将上边距设置为减去高度以提供更好的用户体验。
$("#fds").delegate(".remove", 'click', function() {
var $li = $(this).closest("li");
$li.css({opacity: 0}).animate({marginTop: -1 * $li.height()}, 400, function() {$li.remove();})
})
li
{
border: 1px solid red;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<ul id="fds">
<li>
<h3>one</h3>
<p>Hello guys</p>
<p>
<button class="remove">x</button>
</p>
</li>
<li>
<h3>two</h3>
<p>Hello guys</p>
<p>
<button class="remove">x</button>
</p>
</li>
<li>
<h3>three</h3>
<p>Hello guys</p>
<p>
<button class="remove">x</button>
</p>
</li>
<li>
<h3>four</h3>
<p>Hello guys</p>
<p>
<button class="remove">x</button>
</p>
</li>
</ul>