JQuery简单实现锚点链接的平滑滚动


Posted in Javascript onMay 03, 2015

一般使用锚点来跳转到页面指定位置的时候,会生硬地立即跳转到指定位置,但是有些时候我们想要平滑地过渡到指定的位置,那么可以使用JQuery简单的实现这个效果:

比如,这里我们将通过点击<a>标签跳转到 id为content的指定位置那里。

<a id="turnToContent" href="#content"></a>

然后呢,就在我们想要的位置设置id为content的内容块,这里用一个div模拟一篇不像文章的文章。最好将此div放在靠后的位置,这样效果就很明显一点,如果只是测试一下这个效果,可以用简单粗暴的方法,在其前面放很多个<p>标签即可。

<div id="content">
<h2>
<a href="###">HTML5</a>
</h2>
<p>
html5html5html5
</p>
<p class="addMes">标签: <span>HTML5</span><small>2015年4月19日</small></p>
</div>

最后就是用JQuery来实现平滑过渡的效果了:

$('#turnToContent').click(function () {
$('html, body').animate({
scrollTop: $($.attr(this, 'href')).offset().top
}, 500);
return false;
});

搞定了!

下面我们来继续改进一下,

$(function(){  
  $('a[href*=#],area[href*=#]').click(function() {
    if (location.pathname.replace(/^\//, '') == this.pathname.replace(/^\//, '') && location.hostname == this.hostname) {
      var $target = $(this.hash);
      $target = $target.length && $target || $('[name=' + this.hash.slice(1) + ']');
      if ($target.length) {
        var targetOffset = $target.offset().top;
        $('html,body').animate({
          scrollTop: targetOffset
        },
        1000);
        return false;
      }
    }
  });
})

改进后的代码的好处是点击锚点链接平滑滚动到锚点,并且浏览器URL后缀不带有锚点字样,使用的过程中基本不用修改以上代码即可实现。

以上所述就是本文的全部内容了,希望大家能够喜欢。

Javascript 相关文章推荐
用javascript获取textarea中的光标位置
May 06 Javascript
Jquery之美中不足小结
Feb 16 Javascript
A标签中通过href和onclick传递的this对象实现思路
Apr 19 Javascript
兼容IE和FF的图片上传前预览js代码
May 28 Javascript
jquery实现带二级菜单的导航示例
Apr 28 Javascript
移动设备web开发首选框架:zeptojs介绍
Jan 29 Javascript
javascript实现下班倒计时效果的方法(可桌面通知)
Jul 10 Javascript
JavaScript用二分法查找数据的实例代码
Jun 17 Javascript
JavaScript实现音乐自动切换和轮播
Nov 05 Javascript
jQuery进阶实践之利用最优雅的方式如何写ajax请求
Dec 20 jQuery
微信小程序实现横向增长表格的方法
Jul 24 Javascript
Node.js API详解之 net模块实例分析
May 18 Javascript
jQuery中 attr() 方法使用小结
May 03 #Javascript
浅谈被jQuery抛弃的函数及替代函数
May 03 #Javascript
jQuery的几个我们必须了解的特点
May 03 #Javascript
jQuery的css() 方法使用指南
May 03 #Javascript
面向切面编程(AOP)的理解
May 01 #Javascript
yui3的AOP(面向切面编程)和OOP(面向对象编程)
May 01 #Javascript
使用AOP改善javascript代码
May 01 #Javascript
You might like
Fedora下安装php Redis扩展笔记
2014/09/03 PHP
laravel如何开启跨域功能示例详解
2017/08/31 PHP
详细分析JavaScript变量类型
2015/07/08 Javascript
关于安卓手机微信浏览器中使用XMLHttpRequest 2上传图片显示字节数为0的解决办法
2016/05/17 Javascript
jQuery筛选数组之grep、each、inArray、map的用法及遍历json对象
2016/06/20 Javascript
js图片切换具体实现代码
2016/10/13 Javascript
谈谈Vue.js——vue-resource全攻略
2017/01/16 Javascript
JS查找英文文章中出现频率最高的单词
2017/03/20 Javascript
SVG实现时钟效果
2018/07/17 Javascript
python多线程threading.Lock锁用法实例
2014/11/01 Python
Python文件处理
2016/02/29 Python
python3+PyQt5实现使用剪贴板做复制与粘帖示例
2017/01/24 Python
Django 实现Admin自动填充当前用户的示例代码
2019/11/18 Python
python实现串口通信的示例代码
2020/02/10 Python
利用Pycharm + Django搭建一个简单Python Web项目的步骤
2020/10/22 Python
Python生成pdf目录书签的实例方法
2020/10/29 Python
Pam & Gela官网:美国性感前卫女装品牌
2018/07/19 全球购物
Lentiamo丹麦:购买便宜的隐形眼镜
2021/01/13 全球购物
一些Solaris面试题
2015/12/22 面试题
大学生就业推荐信范文
2013/11/29 职场文书
《跨越百年的美丽》教学反思
2014/02/11 职场文书
党员2014两会学习心得体会
2014/03/17 职场文书
党的群众路线教育实践活动个人承诺书
2014/05/22 职场文书
销售提升方案
2014/06/07 职场文书
竞选班干部演讲稿400字
2014/08/20 职场文书
海南召开党的群众路线教育实践活动总结大会新闻稿
2014/10/21 职场文书
群众路线个人整改方案
2014/10/25 职场文书
门卫岗位职责
2015/02/09 职场文书
运动会广播稿200字
2015/08/19 职场文书
提档介绍信范文
2015/10/22 职场文书
银行工作心得体会范文
2016/01/23 职场文书
利用Sharding-Jdbc进行分库分表的操作代码
2022/01/22 Java/Android
python自动化测试之Selenium详解
2022/03/13 Python
VUE之图片Base64编码使用ElementUI组件上传
2022/04/09 Vue.js
Java+swing实现抖音上的表白程序详解
2022/06/25 Java/Android
vue本地构建热更新卡顿的问题“75 advanced module optimization”完美解决方案
2022/08/05 Vue.js