jQuery动画滚动


74

我不确定如何调用效果,但是有人可以将我指向可以帮助我达到与该网站相同效果的库吗?

http://www.makr.com

基本上,只要单击鼠标,它就会将行向上移动到页面顶部。如果没有专门的效果库,则最好使用jQuery的代码段来提供帮助。

我不确定是否需要开始其他话题,但是有人可以用一个小的jQuery代码段帮助我实现Makr UI的全部效果吗?


我不确定是否需要开始其他话题,但是有人可以用一个小的jQuery代码段帮助我实现Makr UI的全部效果吗?
Marvzz 2011年

我给你一些很好的开始。当您单击某个项目时,使用jQuery动画将其偏移到该项目,然后滚动到该偏移。
Mathieu

1
是的,我买了它们,可以向上滚动,但是我在slideDown动画的下一部分遇到了麻烦。我无法像Makr那样实现对它们的计时。
Marvzz

您可以始终使用延迟功能:.delay(1000)将功能延迟1秒钟。api.jquery.com/delay或在完整功能中设置slideDown
Mathieu

Answers:


215

您可以使用jQuery来动画化页面的滚动顶部。

$('html, body').animate({
    scrollTop: $(".middle").offset().top
 }, 2000);

看到这个网站:http : //papermashup.com/jquery-page-scrolling/


4
我只需要使用#("body").animate(...);它就可以用于Firefox,Chrome和IE。是否有将动画附加到htmlDOM对象的特定情况?
丹尼尔(Daniel)

2
'$(“。middle”)。offset()。top'-部分用于获取该对象(类,id,...)的偏移量,因此页面知道要滚动到的高度。如果要滚动到页面中间的某个div,这可能会很有用。
Mathieu 2013年

18
$('html, body')是为了实现ie8兼容性。
SzymonWygnański2013年

2
$('html,body')也适用于野生动物园
honk31

jQuery如何精确实现平滑滚动?
oldboy

5

您可以给这个简单的jQuery插件(AnimateScroll)旋转一下。它很容易使用。

1.滚动到页面顶部:

$('body').animatescroll();

2.滚动到ID为的元素section-1

$('#section-1').animatescroll({easing:'easeInOutBack'});

免责声明:我是该插件的作者。


1

我只用:

$('body').animate({ 'scrollTop': '-=-'+<yourValueScroll>+'px' }, 2000);


1
您能解释一下您要如何处理'-=-'吗?您是否正在尝试键入数字或其他内容?
user151496 2015年

@ user151496看看jQuery的documetation api.jquery.com/animate下段,目前开始“动画属性也可以是相对的。” 就像在JS中一样,您可以说myVar += 10在现有值上加上10,此代码段基本上是使用jQuery的自定义解析来实现类似的目标:scrollTop -= -yourScrollValue。我不能肯定地说为什么这里的OP选择了一个简单的方法{scrollTop: '+= '+value}
natevw

@ user151496,第一个“-”是减少值,第二个“-”如果满足负值,则它们变为正值和相反。:)
区总主教Đức疃

我了解-=和-的作用。我只是不知道他为什么不使用+ =来代替:S
user151496 '16

@ user151496,如果使用+ =,也许万一滚动下来,而是要上去。:)
区总主教Đức疃

1
var page_url = windws.location.href;
var page_id = page_url.substring(page_url.lastIndexOf("#") + 1);
if (page_id == "") {
    $("html, body").animate({
        scrollTop: $("#scroll-" + page_id).offset().top
    }, 2000)
} else if (page_id == "") {
    $("html, body").animate({
        scrollTop: $("#scroll-" + page_id).offset().top
    }, 2000)
}

});


1
不鼓励仅使用代码的答案。请添加简单的说明。
杰森

0

有一个jQuery插件。它将文档滚动到特定元素,以使其完美地位于视口中间。它还支持动画缓动,以便滚动效果看起来超级流畅。查看AnimatedScroll.js


4
当真正支持真正的答案时,我会避免使用这样的插件。$('html,body').animate({scrollTop:x},t);非常正确,无需在页面的“网络”标签上添加不必要的插件。
ChaseMoskal

您是完全正确的,除了此插件可以滚动到任何文档元素之外,以便它恰好位于窗口视口的中间。
Eugene Tiurin

1
问题是,没有任何插件,这仍然非常容易。只是滚动到($e.offset().top+($e.height()/2))-($(window).height()/2)或用英语查看的问题"elementCenter minus halfViewportHeight"。对?
ChaseMoskal 2013年

是的,只要您不介意每次需要滚动至特定元素时都编写太多代码
Eugene Tiurin

1
@EugeneTiurin您可以只创建一个自定义函数,将元素作为参数。
Jarrod Mosen
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.