用jQuery为跳转链接锚点添加平滑滚动动画效果(如回到顶部

Only Bolivian Here: 问


我的网页里面有几个链接。单击后可以跳转到相应的内容以帮助用户阅读。


有没有一种方法,使滚动效果更顺畅一点?


比如实现这样的效果:http://www.position-relative.net/creation/anchor/


但是他用了一个自定义的JavaScript库。jQuery能否提供类似这样的效果?




Joseph Silber 答: fiddle 所显示的效果: http://jsfiddle.net/9SDLw/


  1. $('a').click(function(){
  2.     $('html, body').animate({
  3.         scrollTop: $( $.attr(this, 'href') ).offset().top
  4.     }, 500);
  5.     return false;
  6. });
复制代码


如果你的元素没有ID,你想用名字来做定位链接,可以使用这个:


  1. $('a').click(function(){
  2.     $('html, body').animate({
  3.         scrollTop: $('[name="' + $.attr(this, 'href').substr(1) + '"]').offset().top
  4.     }, 500);
  5.     return false;
  6. });
复制代码


为了增强性能,你应该将 $('html, body') 选择器缓存起来。这样每次点击时就不需要再重新查找了


  1. var $root = $('html, body');
  2. $('a').click(function() {
  3.     $root.animate({
  4.         scrollTop: $( $.attr(this, 'href') ).offset().top
  5.     }, 500);
  6.     return false;
  7. });
复制代码


如果你想更新当前页面的URL。在回调里稍微改一下就可以了:


  1. var $root = $('html, body');
  2. $('a').click(function() {
  3.     var href = $.attr(this, 'href');
  4.     $root.animate({
  5.         scrollTop: $(href).offset().top
  6.     }, 500, function () {
  7.         window.location.hash = href;
  8.     });
  9.     return false;
  10. });
复制代码


英文原文: stackoverflow.com


via:http://ourjs.com/detail/55374fc065d4672d0f000009

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值