在浏览网页时,我们一般是拖动滚动条向下滑动,浏览下面的内容,当页面超过单页时,右下角会出现一个回到顶部的图标,有些网站这个图标一直显示在右下角的。

有些网站使用锚链接来实现页面内容的跳转,但这种效果的用户体验比较差,因为是突然跳转,眼睛来不及反应。

这里我们使用js实现页面返回顶部。为了使滚动条渐进地上移,我们需要使用定时器。同时通过不断改变滚动条顶部的高度来控制页面的变化。

下面为具体代码实现

index.html:

<!DOCTYPE>
<html>
<head>
<meta charset="UTF-8">
<title>Title</title>
<link rel="stylesheet" type="text/css" href="style.css"/>
<script type="text/javascript" src="script.js"></script>
</head>
<body>
<div class="box">
<img src="tb_bg.jpg"/>
</div>
<a href="javascript:;" id="btn" title="回到顶部"></a>
</body>
</html>

style.css:

.box {
width:1190px;
/*图片居中*/
magin:0 auto;
} #btn {
width:40px;
height:40px;
/*设置固定位置*/
position:fixed;
left:50%;
margin-left:610px;
bottom:30px;
background:url(top_bg.png) no-repeat left top;
} /*鼠标浮动切换图片效果*/
#btn:hover {
background:url(top_bg.png) no-repeat 0 -40px;
}

script.js:

/**
* Created by lujie on 2016/11/15.
*/ //页面加载完毕后触发
window.onload = function () {
var obtn = document.getElementById('btn');
var timer = null;
var isTop = true; //滚动条滚动时触发
window.onscroll = function () {
if(!isTop){
clearInterval(timer);
}
isTop = false;
}
obtn.onclick = function () {
//设置定时器
timer = setInterval(function () {
//滚动条距离顶部的高度
var osTop = document.documentElement.scrollTop||document.body.scrollTop;
var isSpeed = Math.ceil(osTop/6);
document.documentElement.scrollTop = document.body.scrollTop = osTop-isSpeed; isTop = true;
if(osTop == 0){
clearInterval(timer);
}
},30);
}
}

注:IE浏览器滚动条顶部的高度:document.documentElement.scrollTop

谷歌浏览器滚动条顶部的高度:document.body.scrollTop

最新文章

  1. Markdown编辑器测试
  2. 记录Castle ActiveRecord访问Sqlite的配置
  3. HTML5游戏开发引擎,初识CreateJS
  4. DOM对象与jquery对象的区别
  5. 结队开发项目——七巧板NABC需求分析
  6. android LayoutInflater.inflate()的参数介绍
  7. 典型的js页面
  8. 用PHP Session和Javascript实现文件上传进度条,处理进度条
  9. Docker在云环境中的应用实践初探:优势、局限性与效能评测
  10. 让EF支持sql语句
  11. JS中获取页面单选框radio和复选框checkbox中当前选中的值
  12. IOS之按钮控件--Button全解析及使用 分类: ios技术 2015-01-17 17:09 169人阅读 评论(0) 收藏
  13. MyBatis 使用Generator自动生成Model , Dao, mapper
  14. Spring AOP高级——源码实现(2)Spring AOP中通知器(Advisor)与切面(Aspect)
  15. [Swift]LeetCode539. 最小时间差 | Minimum Time Difference
  16. 下拉框选择blur与click冲突问题
  17. Redis 5种数据结构
  18. (文件操作)Android相关的File文件操作
  19. zabbix3.0.4使用shell脚本和zabbix自带模板两种方法添加对指定进程和端口的监控
  20. c++ static笔记

热门文章

  1. libevent显式调用事件处理
  2. js中迭代元素特性与DOM中的DocumentFragment类型 笔记
  3. Xshell出现要继续使用此程序必须应用到最新的更新或使用新版本
  4. systemtap get var of the tracepoing
  5. Luogu3960 NOIP2017列队(splay/线段树)
  6. [bzoj2901]矩阵求和
  7. 你对javascript的原生操作或者工具了解多少呢?
  8. git使用笔记(六)github
  9. Backup and Restore MySQL Database using mysqlhotcopy
  10. [hdu 3652]数位dp解决数的倍数问题