网页中返回顶部代码(多种方法)另附注释说明


Posted in Javascript onApril 24, 2013

网页中返回顶部代码(多种方法)另附注释说明
下面就说下简单的返回顶部效果的代码实现,附注释说明。
1. 最简单的静态返回顶部,点击直接跳转页面顶部,常见于固定放置在页面底部返回顶部功能
方法一:用命名锚点击返回到顶部预设的id为top的元素

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

方法二:操作scrooll函数用来控制滚动条的位置(第一个参数是水平位置,第二个参数是垂直位置)
<a href="javascript:scroll(0,0)">返回顶部</a>

缺点:返回效果是立即的,不符合一般浏览页面的滚动感觉;
静态固定于页面底部,用户不一定看得到。

2. 简单的静态返回顶部,用js模拟滚动效果上滑至顶部

function pageScroll(){ 
//把内容滚动指定的像素数(第一个参数是向右滚动的像素数,第二个参数是向下滚动的像素数) 
window.scrollBy(0,-100); 
//延时递归调用,模拟滚动向上效果 
scrolldelay = setTimeout('pageScroll()',100); 
//获取scrollTop值,声明了DTD的标准网页取document.documentElement.scrollTop,否则取document.body.scrollTop;因为二者只有一个会生效,另一个就恒为0,所以取和值可以得到网页的真正的scrollTop值 
var sTop=document.documentElement.scrollTop+document.body.scrollTop; 
//判断当页面到达顶部,取消延时代码(否则页面滚动到顶部会无法再向下正常浏览页面) 
if(sTop==0) clearTimeout(scrolldelay); 
}

<a onclick="pageScroll()">返回顶部</a>

缺点:滚动效果不平滑,且在页面很长时点击返回顶部,未向上到达页面顶部无法再正常浏览页面;
同上依旧是静态固定于页面底部,不一定能曝光在用户面前。

3. 动态按需加载返回顶部,css侧边屏幕绝对定位,结合简单jQuery动画实现更好体验

function gotoTop(min_height){ 
//预定义返回顶部的html代码,它的css样式默认为不显示 
var gotoTop_html = '<div id="gotoTop">返回顶部</div>'; 
//将返回顶部的html代码插入页面上id为page的元素的末尾 
$("#page").append(gotoTop_html); 
$("#gotoTop").click(//定义返回顶部点击向上滚动的动画 
function(){$('html,body').animate({scrollTop:0},700); 
}).hover(//为返回顶部增加鼠标进入的反馈效果,用添加删除css类实现 
function(){$(this).addClass("hover");}, 
function(){$(this).removeClass("hover"); 
}); 
//获取页面的最小高度,无传入值则默认为600像素 
min_height ? min_height = min_height : min_height = 600; 
//为窗口的scroll事件绑定处理函数 
$(window).scroll(function(){ 
//获取窗口的滚动条的垂直位置 
var s = $(window).scrollTop(); 
//当窗口的滚动条的垂直位置大于页面的最小高度时,让返回顶部元素渐现,否则渐隐 
if( s > min_height){ 
$("#gotoTop").fadeIn(100); 
}else{ 
$("#gotoTop").fadeOut(200); 
}; 
}); 
}; 
gotoTop();

css样式代码:
/*默认样式,主要是position:fixed实现屏幕绝对定位*/ 
#gotoTop{display:none;position:fixed;top:75%;left:50%;cursor:pointer;margin-top:-50px;margin-left:520px;padding:9px 4px;width:20px;text-align:center;border:1px solid #e0e0e0;background:#fff;} 
/*用CSS表达式(expression)来实现ie6下position:fixed效果*/ 
#gotoTop{_position:absolute;_top:expression(documentElement.scrollTop + documentElement.clientHeight * 3/4 + "px")} 
/*鼠标进入的反馈效果*/ 
#gotoTop.hover{background:#5CB542;color:#fff;text-decoration:none;}

这种方法判断页面高度按需将“返回顶部”展示给用户,用css样式实现了屏幕绝对定位,借助jQuery实现了更好用平滑的滚动效果。进一步考虑如果用户设置了浏览器禁用js,那么我们可以将第三方案结合第一方案方法一,禁用js后第三方案将不被用户所见,未禁用的话我们在js代码中再加上一句隐藏第一方案。

总之,长页面还是要尽量避免的,不可避免的情况下,加上“返回顶部”功能可能会带给用户相对好一点的体验。

Javascript 相关文章推荐
JQuery 遮罩层实现(mask)实现代码
Jan 09 Javascript
通过JS自动隐藏手机浏览器的地址栏实现原理与代码
Jan 02 Javascript
jquery获取自定义属性(attr和prop)实例介绍
Apr 21 Javascript
获取下拉列表框的值是数组,split,$.inArray示例
Nov 13 Javascript
javascript删除字符串最后一个字符
Jan 14 Javascript
node.js开机自启动脚本文件
Dec 24 Javascript
AngularJS学习笔记之依赖注入详解
May 16 Javascript
jQuery实现web页面樱花坠落的特效
Jun 01 jQuery
JS实现问卷星自动填问卷脚本并在两秒自动提交功能
Jun 17 Javascript
p5.js入门教程之图片加载
Mar 20 Javascript
JavaScript深入V8引擎以及编写优化代码的5个技巧
Jun 24 Javascript
vue 导航守卫和axios拦截器有哪些区别
Dec 19 Vue.js
onkeypress字符按键兼容所有浏览器使用介绍
Apr 24 #Javascript
纯JS实现五子棋游戏兼容各浏览器(附源码)
Apr 24 #Javascript
jquery仿京东导航/仿淘宝商城左侧分类导航下拉菜单效果
Apr 24 #Javascript
基于jQuery实现图片的前进与后退功能
Apr 24 #Javascript
查看图片(前进后退)功能实现js代码
Apr 24 #Javascript
jQuery判断密码强度实现思路及代码
Apr 24 #Javascript
window.location.reload()方法刷新页面弹出要再次显示该网页对话框
Apr 24 #Javascript
You might like
php格式化工具Beautify PHP小小BUG
2008/04/24 PHP
基于pear auth实现登录验证
2010/02/26 PHP
PHP JS Ip地址及域名格式检测代码
2013/09/27 PHP
php中hashtable实现示例分享
2014/02/13 PHP
PHP处理postfix邮件内容的方法
2015/06/16 PHP
php基于自定义函数记录log日志方法
2017/07/21 PHP
PHP操作MySQL中BLOB字段的方法示例【存储文本与图片】
2017/09/15 PHP
Yii使用EasyWechat实现小程序获取用户的openID的方法
2020/04/29 PHP
Alliance vs Liquid BO3 第二场2.13
2021/03/10 DOTA
js 内存释放问题
2010/04/25 Javascript
JavaScript的常见兼容问题及相关解决方法(chrome/IE/firefox)
2013/12/31 Javascript
微信浏览器内置JavaScript对象WeixinJSBridge使用实例
2015/05/25 Javascript
NodeJS使用formidable实现文件上传
2016/10/27 NodeJs
JavaScript使用atan2来绘制箭头和曲线的实例
2017/09/14 Javascript
EasyUI Tree树组件无限循环的解决方法
2017/09/27 Javascript
vue2.0 element-ui中el-select选择器无法显示选中的内容(解决方法)
2018/08/24 Javascript
详解Vue CLI3配置解析之css.extract
2018/09/14 Javascript
Vue CLI2升级至Vue CLI3的方法步骤
2019/05/20 Javascript
django js 实现表格动态标序号的实例代码
2019/07/12 Javascript
微信小程序通过js实现瀑布流布局详解
2019/08/28 Javascript
Vue2.x-使用防抖以及节流的示例
2021/03/02 Vue.js
python实现爬虫统计学校BBS男女比例(一)
2015/12/31 Python
使用python 和 lint 删除项目无用资源的方法
2017/12/20 Python
Python基于Flask框架配置依赖包信息的项目迁移部署
2018/03/02 Python
PyTorch的深度学习入门之PyTorch安装和配置
2019/06/27 Python
python爬虫工具例举说明
2020/11/30 Python
基于CSS3实现立方体自转效果
2016/03/01 HTML / CSS
路易威登和香奈儿手袋:LuxeDH
2017/01/12 全球购物
几道Web/Ajax的面试题
2016/11/05 面试题
职专应届生求职信
2013/11/16 职场文书
法学专业自我鉴定
2014/02/05 职场文书
客服部班长工作责任制
2014/02/25 职场文书
关键在于落实心得体会
2014/09/03 职场文书
区域经理岗位职责
2015/02/02 职场文书
2015年档案管理工作总结
2015/04/08 职场文书
MySQL索引 高效获取数据的数据结构
2022/05/02 MySQL