仿新浪微博返回顶部的jquery实现代码


Posted in Javascript onOctober 01, 2012

一、引言

在web页面中,如果页面较高,为了方便用户快速地返回顶部,都会添加一个返回顶部按钮。

其中淘宝网的是要滚动条的滚动距离大于某一段距离才显示返回顶部按钮;人人网的返回顶部直接在底部的工具条上;新浪微博的返回顶部在滚动高度大于0的时候显示,且返回顶部的效果是平滑动画效果。本文的实现就是类似于新浪微博的这种效果。

二、jQuery下的返回顶部功能

您可以狠狠地点击这里:jQuery下的返回顶部demo

可以看到,如果页面有滚动高度,右下角就会有一个含有“返回顶部”字样的黑色背景半透明的小条条,如下图所示:

点击这里“返回顶部”字样的按钮后,页面就像是抹了润滑剂一样,倏地一声就滑到顶部了,同时,该点击按钮也玩起了躲猫猫 ? 不见了。

实现的原理嘛,恩……估计鲜有人关心,所以我也懒得浪费口水了,直接上代码。

无论是这里的jQuery实现还是MooTools实现,下面的CSS代码都是一致的,如下:
CSS代码:

.backToTop { 
display: none; 
width: 18px; 
line-height: 1.2; 
padding: 5px 0; 
background-color: #000; 
color: #fff; 
font-size: 12px; 
text-align: center; 
position: fixed; 
_position: absolute; 
right: 10px; 
bottom: 100px; 
_bottom: "auto"; 
cursor: pointer; 
opacity: .6; 
filter: Alpha(opacity=60); 
}

JS代码:
(function() { 
var $backToTopTxt = "返回顶部", $backToTopEle = $('<div class="backToTop"></div>').appendTo($("body")) 
.text($backToTopTxt).attr("title", $backToTopTxt).click(function() { 
$("html, body").animate({ scrollTop: 0 }, 120); 
}), $backToTopFun = function() { 
var st = $(document).scrollTop(), winh = $(window).height(); 
(st > 0)? $backToTopEle.show(): $backToTopEle.hide(); 
//IE6下的定位 
if (!window.XMLHttpRequest) { 
$backToTopEle.css("top", st + winh - 166); 
} 
}; 
$(window).bind("scroll", $backToTopFun); 
$(function() { $backToTopFun(); }); 
})();

三、MooTools下返回顶部功能实现

您可以狠狠地点击这里:MooTools下的返回顶部demo

demo页面的效果与上面jQuery demo下效果基本一致。

代码部分。CSS代码完全同上。JS代码如下:

(function() { 
var $backToTopTxt = "返回顶部", $backToTopEle = new Element("div", { 
"class": "backToTop", 
title: $backToTopTxt 
}).set("text", $backToTopTxt).addEvent("click", function() { 
var st = document.getScroll().y, speed = st / 6; 
var funScroll = function() { 
st -= speed; 
if (st <= 0) { st = 0; } 
window.scrollTo(0, st); 
if (st > 0) { setTimeout(funScroll, 20); } 
}; 
funScroll(); 
}).inject(document.body), $backToTopFun = function() { 
var st = document.getScroll().y, winh = window.getSize().y; 
(st > 0)? $backToTopEle.setStyle("display", "block"): $backToTopEle.setStyle("display", "none"); 
//IE6下的定位 
if (!window.XMLHttpRequest) { 
$backToTopEle.setStyle("top", st + winh - 166); 
} 
}; 
window.addEvents({ 
scroll: $backToTopFun, 
domready: $backToTopFun 
}); 
})();

直接拷贝上面的代码在您的JS代码中就轻松实现效果啦。

MooTools的动画方法Fx不支持滚动,要实现滚动条的平滑滚动效果需要使用Fx.Scroll插件。但是,显然, 这里的简单功能没有必要再使用额外的插件,所以直接设置了个定时器实现了平滑滚动效果。

注:demo页面中的美女图片作用是撑开页面高度使产生滚动条。

四、结语
其实实现页面返回顶部效果最简单的就是a标签然后href属性值直接就是#锚点就ok了。但是这种方法会在url地址后面产生一个”#”。关于锚点相关的内容您可以参见我之前的“关于锚点跳转及jQuery下相关操作与插件”一文。

Javascript 相关文章推荐
早该知道的7个JavaScript技巧
Mar 27 Javascript
使用javascript获取页面名称
Dec 23 Javascript
jQuery层动画定位滑动效果的方法
Apr 30 Javascript
jQuery网页选项卡插件rTabs用法实例分析
Aug 26 Javascript
基于JavaScript实现弹出框效果
Feb 19 Javascript
js简单实现调整网页字体大小的方法
Jul 23 Javascript
避免jQuery名字冲突 noConflict()方法
Jul 30 Javascript
Angular2-primeNG文件上传模块FileUpload使用详解
Jan 14 Javascript
ES6新特性之字符串的扩展实例分析
Apr 01 Javascript
vue3.0 CLI - 2.6 - 组件的复用入门教程
Sep 14 Javascript
详解vue页面首次加载缓慢原因及解决方案
Nov 06 Javascript
Vue + Element-ui的下拉框el-select获取额外参数详解
Aug 14 Javascript
页面回到顶部的三种实现(锚标记,js)
Oct 01 #Javascript
javascript动画对象支持加速、减速、缓入、缓出的实现代码
Sep 30 #Javascript
IE8提示Invalid procedure call or argument 异常的解决方法
Sep 30 #Javascript
js 手机号码合法性验证代码集合
Sep 29 #Javascript
JavaScript模板入门介绍
Sep 26 #Javascript
JavaScript快速检测浏览器对CSS3特性的支持情况
Sep 26 #Javascript
JavaScript 参数中的数组展开 [译]
Sep 21 #Javascript
You might like
浅析PHP数据导出知识点
2018/02/17 PHP
PHP使用HTML5 FormData对象提交表单操作示例
2019/07/02 PHP
基于laravel where的高级使用方法
2019/10/10 PHP
利用JQuery+EasyDrag 实现弹出可拖动的Div,同时向Div传值,然后返回Div选中的值
2009/10/24 Javascript
Jquery弹出窗口插件 LeanModal的使用方法
2012/03/10 Javascript
jQuery lazyLoad图片延迟加载插件的优化改造方法分享
2013/08/13 Javascript
详细分析Javascript中创建对象的四种方式
2016/08/17 Javascript
JavaScript数组去重的几种方法效率测试
2016/10/23 Javascript
详解vue-Resource(与后端数据交互)
2017/01/16 Javascript
用nodeJS搭建本地文件服务器的几种方法小结
2017/03/16 NodeJs
Angularjs 实现移动端在线测评效果(推荐)
2017/04/05 Javascript
js移动端图片压缩上传功能
2020/08/18 Javascript
基于vue-cli配置lib-flexible + rem实现移动端自适应
2017/12/26 Javascript
nodejs结合socket.io实现websocket通信功能的方法
2018/01/12 NodeJs
JavaScript判断日期时间差的实例代码
2018/03/01 Javascript
在angularJs中进行数据遍历的2种方法
2018/10/08 Javascript
小程序云开发初探(小结)
2018/10/24 Javascript
vue-cli 2.*中导入公共less文件的方法步骤
2018/11/22 Javascript
深入了解Hybrid App技术的相关知识
2019/07/17 Javascript
python类继承用法实例分析
2014/10/10 Python
Python for Informatics 第11章 正则表达式(一)
2016/04/21 Python
Python系统监控模块psutil功能与经典用法分析
2018/05/24 Python
Python使用try except处理程序异常的三种常用方法分析
2018/09/05 Python
基于Pycharm加载多个项目过程图解
2020/01/19 Python
施华洛世奇加拿大官网:SWAROVSKI加拿大
2018/06/03 全球购物
20岁生日感言
2014/01/13 职场文书
会计专业大学生求职信范文
2014/01/28 职场文书
致长跑运动员加油稿
2014/02/20 职场文书
违章停车检讨书
2014/10/21 职场文书
搬迁通知
2015/04/20 职场文书
2015年社区党建工作汇报材料
2015/06/25 职场文书
2015初中团委工作总结
2015/07/28 职场文书
防溺水主题班会教案
2015/08/12 职场文书
优秀党员主要事迹范文
2015/11/05 职场文书
超级详细实用的pycharm常用快捷键
2021/05/12 Python
React自定义hook的方法
2022/06/25 Javascript