仿新浪微博返回顶部的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 相关文章推荐
使用JQuery和s3captche实现一个水果名字的验证
Aug 14 Javascript
4种JavaScript实现简单tab选项卡切换的方法
Jan 06 Javascript
jQuery判断checkbox选中状态
May 12 Javascript
jQuery分页插件jquery.pagination.js使用方法解析
Feb 09 Javascript
Angular4学习笔记之新建项目的方法
Jul 18 Javascript
ReactNative踩坑之配置调试端口的解决方法
Jul 28 Javascript
JavaScript中数组常见操作技巧
Sep 01 Javascript
详解vue项目的构建,打包,发布全过程
Nov 23 Javascript
vue实现a标签点击高亮方法
Mar 17 Javascript
vue过滤器用法实例分析
Mar 15 Javascript
Js生成随机数/随机字符串的方法小结【5种方法】
May 27 Javascript
vue 组件简介
Jul 31 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登陆页的密码处理方式分享
2013/10/14 PHP
THinkPHP获取客户端IP与IP地址查询的方法
2016/11/14 PHP
php获取数据库结果集方法(推荐)
2017/06/01 PHP
File文件控件,选中文件(图片,flash,视频)即立即预览显示
2009/04/09 Javascript
JavaScript 高级语法介绍
2009/06/15 Javascript
jQuery TextBox自动完成条
2009/07/22 Javascript
Javascript 读书笔记索引贴
2010/01/11 Javascript
js Function类型
2011/12/04 Javascript
基于jquery的has()方法以及与find()方法以及filter()方法的区别详解
2013/04/26 Javascript
jquery 循环显示div的示例代码
2013/10/18 Javascript
jQuery 快速结束当前正在执行的动画
2013/11/20 Javascript
jquery实现简单易懂的图片展示小例子
2013/11/21 Javascript
javascript图片相似度算法实现 js实现直方图和向量算法
2014/01/14 Javascript
Javascript之String对象详解
2016/06/08 Javascript
详解ES6中的let命令
2020/04/05 Javascript
nodejs开发微信小程序实现密码加密
2017/07/11 NodeJs
bootstrap table方法之expandRow-collapseRow展开或关闭当前行数据
2020/08/09 Javascript
不依任何赖第三方,单纯用vue实现Tree 树形控件的案例
2020/09/21 Javascript
vue.js页面加载执行created,mounted的先后顺序说明
2020/11/07 Javascript
JavaScript缓动动画函数的封装方法
2020/11/25 Javascript
pycharm远程调试openstack的图文教程
2017/11/21 Python
Python List cmp()知识点总结
2019/02/18 Python
Python 二叉树的层序建立与三种遍历实现详解
2019/07/29 Python
利用Python复制文件的9种方法总结
2019/09/02 Python
Python+OpenCV实现图像的全景拼接
2020/03/05 Python
Java面试笔试题大全
2016/11/23 面试题
高中英语教学反思
2014/02/04 职场文书
高三上学期学习自我评价
2014/04/23 职场文书
商标侵权律师函
2015/05/27 职场文书
2015年食品安全宣传周活动总结
2015/07/09 职场文书
情况说明书怎么写
2015/10/08 职场文书
2015年秋学期师德师风建设工作总结
2015/10/23 职场文书
2016应届毕业生实习评语
2015/12/01 职场文书
机关干部正风肃纪心得体会
2016/01/15 职场文书
Mysql如何实现不存在则插入,存在则更新
2022/03/25 MySQL
Python OpenCV超详细讲解基本功能
2022/04/02 Python