原生JS实现平滑回到顶部组件

原生JS实现平滑回到顶部组件

2016-03-16 09:13:58 作者:流云诸葛

 

返回顶部组件是一种极其常见的网页功能,需求简单:页面滚动一定距离后,显示返回顶部的按钮,点击该按钮可以将滚动条滚回至页面开始的位置,接下来通过本文给大家介绍原生JS实现平滑回到顶部组件,需要的朋友参考下吧

返回顶部组件是一种极其常见的网页功能,需求简单:页面滚动一定距离后,显示返回顶部的按钮,点击该按钮可以将滚动条滚回至页面开始的位置。

a41075de230748beba67695ee11423a8.gif

 

实现思路也很容易,只要改变document.documentElement.scrollTop或document.body.scrollTop的值即可。

 

本文抛弃所有加速减速的酷炫效果,回归软件的本质,提供一个最简洁的实现,只追求实用性,不追求所谓的用户体验,效果如下

 

 

 

由于思路跟代码都很简单,所以就直接贴出实现细节了:

var BackTop = function (domE,distance) {

if (!domE) return;

var _onscroll = window.onscroll,

_onclick = domE.onclick;

window.onscroll = throttle(function(){

typeof _onscroll === 'function' && _onscroll.apply(this, arguments);

toggleDomE();

},100);

domE.onclick = function(){

typeof _onclick === 'function' && _onclick.apply(this, arguments);

document.documentElement.scrollTop = 0;

document.body.scrollTop = 0;

};

function toggleDomE(){

domE.style.display = (document.documentElement.scrollTop || document.body.scrollTop) > (distance || 500) ? 'block' : 'none';

}

function throttle(func, wait) {

var timer = null;

return function () {

var self = this, args = arguments;

if (timer) clearTimeout(timer);

timer = setTimeout(function () {

return typeof func === 'function' && func.apply(self, args);

}, wait);

}

}

}; 

调用方式:

<script>

new BackTop(document.getElementById('backTop'))

</script> 

之所以写这篇博客,弄这么个简单的东西,有两个方面的原因:

1)这段时间一直在手写一些常见的简单组件,这算是一个简单中更简单的一个,为了让这系列的博客更加完整,所以把这个组件补充了进来;

2)我想表达自己在工作过程中的一个观点:就是不要过渡用用户体验来装饰你的软件或者说产品,用户体验这个东西说白了就是两个词,一个是好印象,第二个就是好玩,但这并不是产品开发运营的最终目的,你把东西做的再漂亮,产品的核心价值和服务做的不够的话,就算把返回顶部这种功能做成超级无敌的火箭也是徒劳无功的。做前端开发,得锻炼点控制产品经理瞎提用户体验功能的度,以这个组件来说,我认为做加速或减速效果都是多余的,既增加开发时间,又耽误用户使用的时间,抛弃自己心中那点对技术玩弄的固执,可以让自己的工作做的更加完美。

 

下面给大家分享几种常用网页返回顶部代码

 

一、使用HTML的锚标记最简单了

 

但是唯一的缺点就是样式不怎么样,会显示这个锚标记。

 

复制代码代码如下:

 

<aname="top"id="top"></a>

放置位置在<body>标签之后随便找个地方放都可以,只要靠近顶部即可。

 

页面底部放置:

 

复制代码代码如下:

 

<ahref="#top"target="_self">返回顶部</a>

二、使用Javascript Scroll函数返回顶部

 

scrooll函数用来控制滚动条的位置,有两种很简单的实现方式:

 

方式1(推荐:简单方便):

 

复制代码代码如下:

 

<ahref="javascript:scroll(0,0)">返回顶部</a>

scroll第一个参数是水平位置,第二个参数是垂直位置,比如要想定位在垂直50像素处,改成scroll(0,50)就可以了。

 

方式2(注重效果:缓慢向上):

 

本方式是渐进式返回顶部,要好看一些,代码如下:

 

functionpageScroll() {window.scrollBy(0,-10);scrolldelay=setTimeout('pageScroll()',100);}<ahref="pageScroll();">返回顶部</a>

这样就会动态返回顶部,不过虽然返回到顶部但是代码仍在运行,还需要在pageScroll函数加一句给停止掉。

 

if(document.documentElement.scrollTop==0)clearTimeout(scrolldelay);

三、使用Onload加上scroll功能实现动态返回顶部

 

首先在网页body标签结束之前加上:

 

<divid="gotop">返回顶部</div>

2、再调用以下JS脚本部分:

 

BackTop=function(btnId){varbtn=document.getElementById(btnId);vard=document.documentElement;window.οnscrοll=set;btn.οnclick=function(){btn.style.display="none";window.οnscrοll=null;this.timer=setInterval(function(){d.scrollTop-=Math.ceil(d.scrollTop*0.1);if(d.scrollTop==0)clearInterval(btn.timer,window.οnscrοll=set);},10);};functionset(){btn.style.display=d.scrollTop?'block':"none"}};BackTop('gotop');

 

这些可以放到网页中中,也可以独立存成一个js文件,比如gotop.js,再通过以下形式:

 

<scriptsrc="/js/gotop.js"type=text/javascript></script>

来调用,当然了位置最好放在“返回顶部”标签的下面,该调用方法已假设文件路径为JS,放在其它位置请根据实际修改。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值