index.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Document</title>
<link herf="index.css">
</head>
<body>
<span id="icon"></span>
<p>我是程序员,平凡有一点理想,渴望让世界不一样!</p>
<p>我是程序员,平凡有一点理想,渴望让世界不一样!</p>
<p>我是程序员,平凡有一点理想,渴望让世界不一样!</p>
<p>我是程序员,平凡有一点理想,渴望让世界不一样!</p>
<p>我是程序员,平凡有一点理想,渴望让世界不一样!</p>
<p>我是程序员,平凡有一点理想,渴望让世界不一样!</p>
<p>我是程序员,平凡有一点理想,渴望让世界不一样!</p>
<p>我是程序员,平凡有一点理想,渴望让世界不一样!</p>
<p>我是程序员,平凡有一点理想,渴望让世界不一样!</p>
<p>我是程序员,平凡有一点理想,渴望让世界不一样!</p>
<p>我是程序员,平凡有一点理想,渴望让世界不一样!</p>
<p>我是程序员,平凡有一点理想,渴望让世界不一样!</p>
<p>我是程序员,平凡有一点理想,渴望让世界不一样!</p>
<p>我是程序员,平凡有一点理想,渴望让世界不一样!</p>
<p>我是程序员,平凡有一点理想,渴望让世界不一样!</p>
<p>我是程序员,平凡有一点理想,渴望让世界不一样!</p>
<p>我是程序员,平凡有一点理想,渴望让世界不一样!</p>
<p>我是程序员,平凡有一点理想,渴望让世界不一样!</p>
<p>我是程序员,平凡有一点理想,渴望让世界不一样!</p>
<p>我是程序员,平凡有一点理想,渴望让世界不一样!</p>
<p>我是程序员,平凡有一点理想,渴望让世界不一样!</p>
<p>我是程序员,平凡有一点理想,渴望让世界不一样!</p>
<p>我是程序员,平凡有一点理想,渴望让世界不一样!</p>
<p>我是程序员,平凡有一点理想,渴望让世界不一样!</p>
<p>我是程序员,平凡有一点理想,渴望让世界不一样!</p>
<p>我是程序员,平凡有一点理想,渴望让世界不一样!</p>
<p>我是程序员,平凡有一点理想,渴望让世界不一样!</p>
<p>我是程序员,平凡有一点理想,渴望让世界不一样!</p>
<p>我是程序员,平凡有一点理想,渴望让世界不一样!</p>
<p>我是程序员,平凡有一点理想,渴望让世界不一样!</p>
<script src="scroll.js"></script>
<script src="index.js"></script>
</body>
</html>

index.css

            *{
padding:;
margin:;
border: none;
list-style: none;
}
body{
background-color: #ddd;
}
p{
text-align: center;
font-size: 25px;
margin-bottom: 30px;
}
#icon{
width: 43px;
height: 43px;
background: url("./images/to_top.png") no-repeat;
background-size: 100% 100%;
position: fixed;
bottom: 15px;
right: 20px;
display: none; }

index.js

             window.onload=function(){
//定义变量
let scroll_top=0;
let begin=0,end=0,timer=null;
//监听窗口滚动事件
window.onscroll=function(){
scroll_top=scroll().top;
//显示和隐藏
scroll_top>0?show($("icon")):hidden($("icon"));
}
//监听图标的点击事件
$("icon").onclick=function(){
//清除定时器
clearInterval(timer);
//开启定时器
timer=setInterval(function(){
begin+=(end-begin)*0.2;
window.scrollTo(0,begin);
//判断运动结束条件,清除定时器
if(Math.round(begin)===end){
clearInterval(timer);
} },30);
}
}
function $(id){
return typeof id==="string"?document.getElementById(id):null;
}
function show(obj){
return obj.style.display="block";
}
function hidden(obj){
return obj.style.display="none";
}

scroll.js

function scroll(){
if(pageYOffset!==null){
return {
top:window.pageYOffset,
left:window.pageXOffset
}
}else if(document.compatMode===CSS1Compat){
return {
top:document.documentElement.scrollTop,
left:document.documentElement.scrollLeft
}
}
return {
top:document.body.scrollTop,
left:document.body.scrollLeft
}
}

原生js实现返回顶部特效的更多相关文章

  1. 基于原生js的返回顶部组件,兼容主流浏览器

    基于原生js的返回顶部插件,兼容IE8及以上.FF.chrome等主流浏览器. js文件中封装了getScrollTop()和changeScrollTop()函数分别用于获取滚动条滚动的高度和修改滚 ...

  2. 原生JS实现返回顶部和滚动锚点

    ;(function (window,doc,undefined) { function rollingAnchor(){ this.timer =''; } rollingAnchor.protot ...

  3. js实现返回顶部功能的解决方案

    很多网站上都有返回顶部的效果,主要有如下几种解决方案. 1.纯js,无动画版本 window.scrollTo(x-coord, y-coord); window.scrollTo(0,0); 2.纯 ...

  4. JavaScript返回顶部特效

    样式: <style type="text/css"> /*返回顶部特效*/ a { border: none; text-decoration: none; outl ...

  5. jquery返回顶部特效

    <style> p#back-to-top{position:fixed; bottom:100px;right:10px; display: none; } p#back-to-top ...

  6. 前端 css+js实现返回顶部功能

    描述: 本文主要是讲,通过css+js实现网页中的[返回顶部]功能. 实现代码: HTML: <div> <button onclick="returnTop()" ...

  7. js网页返回顶部和楼层跳跃的实现原理

    这是简单的效果图. (实现楼层间的跳跃,主要依靠的是 window.scrollTo(x,y)方法 ,将浏览器的可见区域移动到指定的x,y坐标上.)   说楼层跳跃前,先温习下,一般网页在高度较大时, ...

  8. 【转】用jquery编写动态的返回顶部特效

    jquery代码: function gotoTop(min_height){ //预定义返回顶部的html代码,它的css样式默认为不显示 var gotoTop_html = '<div i ...

  9. WEB前端--返回顶部特效源码

    <!DOCTYPE html><html> <head> <meta charset="utf-8" /> <title> ...

随机推荐

  1. 常用Linux VPS/服务器SSH连接工具 - Xshell下载与使用

    我们很多网友可能初次接触Linux VPS.服务器,所以在购买完毕VPS主机不知道如何登录.有些网友甚至直接类似WIN系统一样直接在桌面远程连接工具连接,可想而知肯定是无法连接的.因为如果我们购买的是 ...

  2. gitlab 修改root密码

    [root@svr34 bin]# gitlab-rails console production Loading production environment (Rails 4.2.5.2) irb ...

  3. Python中logging日志模块的使用

    参考https://www.cnblogs.com/CJOKER/p/8295272.html

  4. .net数据库实现Excel的导入与导出

    .net数据库实现Excel的导入与导出 参考路径:https://www.cnblogs.com/splendidme/archive/2012/01/05/2313314.html 1.defau ...

  5. python3 tkinter添加图片和文本

    在前面一篇文章基础上,使用tkinter添加图片和文本.在开始之前,我们需要安装Pillow图片库. 一.Pillow的安装 1.方法一:需要下载exe文件,根据下面图片下载和安装       下载完 ...

  6. flume1.4.0源码结构剖析

    flume基本思想: source负责收集数据,channel负责缓存数据,sink负责消费channel中的数据,具体使用方式这里不赘述 生命周期管理: 生命周期相关代码在flume-ng-core ...

  7. Effective C++ 笔记:条款 33 避免继承导致的名称遮掩

    Avoid hiding inherited names 作用域(scopes)所带来的名称二义性,c++编译器会寻找指涉(refer to)的对象并实现名称遮掩规则(name-hiding rule ...

  8. WARN [QuorumPeer[myid=1]/0:0:0:0:0:0:0:0:2181:QuorumCnxManager@584] - Cannot open channel to 4 at election address Slave3.Hadoop/xxx.xxx.xxx.xxx

    这些日子为这个错误苦恼很久了,网上找到的各种方法都试了一遍,还是没能解决. 安装好zookeeper后,运行zkServer.sh start 显示正常启动,但运行zkServer.sh status ...

  9. 周报数据采集之生存图片(execl方法)

    https://blog.csdn.net/Luzaofa/article/details/81675364 Python之Excel chart另存为图片大家好,好久没有更新博客了,这一段时间有点忙 ...

  10. PAT乙级1003

    1003 我要通过! (20 point(s)) “答案正确”是自动判题系统给出的最令人欢喜的回复.本题属于 PAT 的“答案正确”大派送 —— 只要读入的字符串满足下列条件,系统就输出“答案正确”, ...