aka*_*ash 7 jquery jquery-animate
scrolltop当我为身体滚动设置动画时,我想在div中制作动画,它对我来说很好
但是,当我使用它时,div它失败了.
这对我来说很好 http://jsfiddle.net/yazaLyxs/
$('body').animate({
scrollTop: $('#myId').offset().top
}, 'slow');
Run Code Online (Sandbox Code Playgroud)
那为什么这段代码不起作用?
$('.myClass').animate({
scrollTop: $('#myId').offset().top
}, 'slow');
Run Code Online (Sandbox Code Playgroud)
好吧,因为没有人准确回答到底是怎么回事:
.position().top不考虑元素的边距。 jsFiddle 演示
您的第一个示例可能适用于 Chrome,但不适用于 Firefox,因为documentElement.
为了解释它,你必须使用:
$('html, body').animate({
Run Code Online (Sandbox Code Playgroud)
.position()现在,让我们看看Methods和之间的区别.offset():
获取匹配元素集中第一个元素相对于偏移父元素的当前坐标。
获取第一个元素的当前坐标,或设置匹配元素集中每个元素相对于文档的坐标。
如果上面的内容很清楚,并且您想获取定位父级*child内的内部元素位置,则需要使用. .position()
#parent {
height: 300px;
background: teal;
margin: 500px 0 0 0;
overflow:scroll;
position:relative; /* NEEDED! */
}
Run Code Online (Sandbox Code Playgroud)
现在,您可能已经将内部元素的边距设置为500px,但它的顶部位置仍然是0px!
console.log( $('#child').position().top ); // 0
Run Code Online (Sandbox Code Playgroud)
因此,您需要为元素设置top:样式(而不是margin) 和才能使用:http://jsfiddle.net/RokoCB/qVWuv/203/ (或者至少在其或某些内容之前放置一些其他元素)。position:#save$('#child').position().top
*如果您没有为父元素设置“position:”CSS 属性,则需要减去父元素的顶部位置或偏移量。