仿新浪微博返回顶部的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 使用简明教程
Mar 05 Javascript
Javascript学习笔记之 对象篇(三) : hasOwnProperty
Jun 24 Javascript
原生js与jQuery实现简单的tab切换特效对比
Jul 30 Javascript
js clearInterval()方法的定义和用法
Nov 11 Javascript
js实现商城星星评分的效果
Dec 29 Javascript
JavaScript实现删除数组重复元素的5种常用高效算法总结
Jan 18 Javascript
微信小程序Getuserinfo解决方案图解
Aug 24 Javascript
JS实现数组的增删改查操作示例
Aug 29 Javascript
关于vue v-for循环解决img标签的src动态绑定问题
Sep 18 Javascript
fastadmin中调用js的方法
May 14 Javascript
layer ui插件显示tips时,修改字体颜色的实现方法
Sep 11 Javascript
Vue常用传值方式、父传子、子传父及非父子实例分析
Feb 24 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函数解决SQL injection
2006/10/09 PHP
php下pdo的mysql事务处理用法实例
2014/12/27 PHP
php+mysqli实现批量替换数据库表前缀的方法
2014/12/29 PHP
php pdo操作数据库示例
2017/03/10 PHP
PHP实现的mysql主从数据库状态检测功能示例
2017/07/20 PHP
关于B/S判断浏览器断开的问题讨论
2008/10/29 Javascript
JQuery最佳实践之精妙的自定义事件
2010/08/11 Javascript
鼠标选择动态改变网页背景颜色的JS代码
2013/12/10 Javascript
node.js中的buffer.Buffer.byteLength方法使用说明
2014/12/10 Javascript
js实现表单多按钮提交action的处理方法
2015/10/24 Javascript
JS截取字符串实例详解
2015/11/24 Javascript
解决jQuery上传插件Uploadify出现Http Error 302错误的方法
2015/12/18 Javascript
jquery实现上传文件大小类型的验证例子(推荐)
2016/06/25 Javascript
URL的参数中有加号传值变为空格的问题(URL特殊字符)
2016/11/04 Javascript
浅谈js之字面量、对象字面量的访问、关键字in的用法
2016/11/20 Javascript
微信小程序教程系列之设置标题栏和导航栏(7)
2020/06/29 Javascript
基于vue.js路由参数的实例讲解——简单易懂
2017/09/07 Javascript
AngularJS 事件发布机制
2018/08/28 Javascript
新版小程序登录授权的方法
2018/12/12 Javascript
详解钉钉小程序组件之自定义模态框(弹窗封装实现)
2020/03/07 Javascript
谈谈我在vue-cli3中用预渲染遇到的坑
2020/04/22 Javascript
python中zip()方法应用实例分析
2016/04/16 Python
spyder常用快捷键(分享)
2017/07/19 Python
python+VTK环境搭建及第一个简单程序代码
2017/12/13 Python
Python学习笔记之lambda表达式用法详解
2019/08/08 Python
amazeui模态框弹出后立马消失并刷新页面
2020/08/19 HTML / CSS
VICHY薇姿美国官方网站:欧洲药房第一的抗衰老品牌
2017/11/22 全球购物
爱奇艺VIP会员:大剧抢先看
2018/07/11 全球购物
加拿大大码女装购物网站:Penningtons
2020/12/26 全球购物
环境工程专业个人求职信
2013/12/05 职场文书
竞选劳动委员演讲稿
2014/04/28 职场文书
幼儿园大班教师个人工作总结
2015/02/05 职场文书
2015年教师节演讲稿范文
2015/03/19 职场文书
2015年暑期社会实践报告
2015/07/13 职场文书
Win11怎样将锁屏账户头像图片改成动画视频
2021/11/21 数码科技
MySQL数据库Innodb 引擎实现mvcc锁
2022/05/06 MySQL