我有两个内部容器块,下面有按钮。我需要,当我点击按钮时,第一个div慢慢向上移动并移除。我试过了:
HTML:
<div class="container">
<div class="block"></div>
<div class="block"></div>
</div>
<button class="move">Click</button>
CSS:
.container {
border: 2px solid blue;
display: inline-block
}
.block {
width: 100px;
height: 100px;
background: red;
margin: 5px;
}
.move {
display: block
}
jQuery的:
$(document).ready(function() {
$('.move').click(function() {
$('.block:first-child').animate({scrollTop: '-100px'}, 1000, function() {
$(this).remove();
});
});
});
但是当我点击按钮时,先删除了.block
。我需要先把它搬起来。如何解决?
答案 0 :(得分:5)
您正在为不具有所需效果的元素的scrollTop
设置动画。您可以为height
设置动画。但是,还有slideUp()
函数可以为您执行此操作。试试这个:
$('.move').click(function() {
$('.block:first-child').slideUp(function() {
$(this).remove();
});
});
如果必须在不调整块大小的情况下执行此操作,则可以在容器上设置overflow: hidden
,然后为块本身的margin-top
设置动画。
答案 1 :(得分:2)
将position: relative
添加到元素。 top
属性适用于定位元素,其位置不是static
。 position: relative
适合这种情况。
$(document).ready(function() {
$('.move').click(function() {
$('.block:first-child').animate({
top: '-100px'
}, 1000, function() {
$(this).remove();
});
});
});
&#13;
.container {
border: 2px solid blue;
display: inline-block
}
.block {
width: 100px;
height: 100px;
background: red;
margin: 5px;
position: relative
}
.move {
display: block
}
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="container">
<div class="block"></div>
<div class="block"></div>
</div>
<button class="move">Click</button>
&#13;