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 相关文章推荐
Array对象方法参考
Oct 03 Javascript
jquery slibings选取同级其他元素的实现代码
Nov 15 Javascript
JavaScript中的继承方式详解
Feb 11 Javascript
超实用的javascript时间处理总结
Aug 16 Javascript
JS实现PC手机端和嵌入式滑动拼图验证码三种效果
Feb 15 Javascript
js实现3d悬浮效果
Feb 16 Javascript
JS验证input输入框(字母,数字,符号,中文)
Mar 23 Javascript
200行代码实现blockchain 区块链实例详解
Mar 14 Javascript
JS关于刷新页面的相关总结
May 09 Javascript
vue 中 beforeRouteEnter 死循环的问题
Apr 23 Javascript
js/jQuery实现全选效果
Jun 17 jQuery
vue中axios封装使用的完整教程
Mar 03 Vue.js
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
在PHP中使用redis
2013/11/04 PHP
jQuery+Ajax+PHP“喜欢”评级功能实现代码
2015/10/08 PHP
php正则表达式验证(邮件地址、Url地址、电话号码、邮政编码)
2016/03/14 PHP
thinkphp中的url跳转用法分析
2016/07/12 PHP
jQuery 核心函数以及jQuery对象
2010/03/23 Javascript
JS创建类和对象的两种不同方式
2014/08/08 Javascript
Internet Explorer 11 浏览器介绍:别叫我IE
2014/09/28 Javascript
jQuery实现可用于博客的动态滑动菜单
2015/03/09 Javascript
Javascript实现获取及设置光标位置的方法
2015/07/21 Javascript
Jquery实现顶部弹出框特效
2015/08/08 Javascript
Jquery组件easyUi实现选项卡切换示例
2016/08/23 Javascript
使用UrlConnection实现后台模拟http请求的简单实例
2017/01/04 Javascript
关于JavaScript中forEach和each用法浅析
2017/07/27 Javascript
webpack vue 项目打包生成的文件,资源文件报404问题的修复方法(总结篇)
2018/01/09 Javascript
详解无限滚动插件vue-infinite-scroll源码解析
2019/05/12 Javascript
JS判断数组是否包含某元素实现方法汇总
2020/06/24 Javascript
Python实现115网盘自动下载的方法
2014/09/30 Python
python实现中文输出的两种方法
2015/05/09 Python
Python的Django框架可适配的各种数据库介绍
2015/07/15 Python
动态规划之矩阵连乘问题Python实现方法
2017/11/27 Python
Python切片工具pillow用法示例
2018/03/30 Python
tensorflow使用L2 regularization正则化修正overfitting过拟合方式
2020/05/22 Python
python--shutil移动文件到另一个路径的操作
2020/07/13 Python
python爬虫---requests库的用法详解
2020/09/28 Python
python 爬取腾讯视频评论的实现步骤
2021/02/18 Python
CSS3 :nth-child()伪类选择器实现奇偶行显示不同样式
2013/11/05 HTML / CSS
html5 video全屏播放/自动播放的实现示例
2020/08/06 HTML / CSS
在子网210.27.48.21/30种有多少个可用地址?分别是什么?
2014/07/27 面试题
初三政治教学反思
2014/01/30 职场文书
合伙经营协议书范本
2014/09/13 职场文书
2014学习优秀共产党员先进事迹思想汇报
2014/09/14 职场文书
工作调动申请报告
2015/05/18 职场文书
2016秋季运动会开幕词
2016/03/04 职场文书
利用javaScript处理常用事件详解
2021/04/14 Javascript
CentOS7和8下安装Maven3.8.4
2022/04/07 Servers
JS中forEach()、map()、every()、some()和filter()的用法
2022/05/11 Javascript