【发布时间】:2013-05-29 04:54:09
【问题描述】:
我最近一直在网站上使用此设置...
CSS
body {
height:2000px;
}
#top-box {
position:fixed;
width:200px;
height:200px;
margin-left:100px;
margin-top:50px;
background-color:blue;
z-index:2;
}
#bottom-box {
position:fixed;
width:200px;
height:200px;
margin-left:110px;
margin-top:60px;
background-color:red;
z-index:1;
}
JavaScript
$(document).ready(function() {
var away = false;
$(document).scroll(function() {
if ($(document).scrollTop() > 250) {
if (!away) {
away = true;
$('#bottom-box').stop().animate({
'margin-top': '200px'
}, 1500);
}
} else {
away = false;
$('#bottom-box').stop().animate({
'margin-top': '60px'
}, 0);
}
});
});
HTML
<div id="top-box"></div>
<div id="bottom-box"></div>
这样一旦用户向下滚动页面 250 像素,红色框就会动画并从蓝色框下方滑出。第一个动画是定时的,因此过渡很明显(红色框明显滑出)。
然后设置,如果用户向后滚动到 250 像素以上,红色框会移回蓝色框下方。这是在没有计时器的情况下完成的,因此转换是即时的(红色框会弹回原来的位置)。
这很好用,可以做我需要做的一切。但我很好奇是否有更好的方法来实现第二个动画,根本不使用动画,只需将红色框“重置”为“margin-top:60px”,而无需计时或 .animate ?
基本上,我问的是...
$('#bottom-box').stop().animate({
'margin-top': '60px'
}, 0);
JavaScript 的部分可以用不同的方式编写并且更有效地实现相同的结果但不使用动画?就像一种“将 'bottom-box' 设置为 'margin-top': '60px'”?
【问题讨论】:
标签: jquery css jquery-animate