仿新浪微博返回顶部的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 学习之二 属性 文本与值(text,val)
Nov 25 Javascript
编写自己的jQuery插件简单实现代码
Apr 19 Javascript
浏览器加载、渲染和解析过程黑箱简析
Nov 29 Javascript
你必须知道的Javascript知识点之&quot;字面量和对应类型&quot;说明介绍
Apr 23 Javascript
javascript中使用正则计算中文长度的例子
Apr 29 Javascript
Nginx上传文件全部缓存解决方案
Aug 17 Javascript
jQuery实现的网格线绘制方法
Jun 20 Javascript
浅谈js中test()函数在正则中的使用
Aug 19 Javascript
Mobile Web开发基础之四--处理手机设备的横竖屏问题
Aug 11 Javascript
Vuejs 单文件组件实例详解
Feb 09 Javascript
微信小程序实现一个简单swiper代码实例
Dec 30 Javascript
js实现无缝轮播图效果
Mar 09 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
PHP4实际应用经验篇(8)
2006/10/09 PHP
php给一组指定关键词添加span标签的方法
2015/03/31 PHP
Smarty保留变量用法分析
2016/05/23 PHP
php+Memcached实现简单留言板功能示例
2017/02/15 PHP
Ext第一周 史上最强学习笔记---GridPanel(基础篇)
2008/12/29 Javascript
jquery星级插件、支持页面中多次使用
2012/03/25 Javascript
jquery事件重复绑定的快速解决方法
2014/01/03 Javascript
js判断浏览器版本以及浏览器内核的方法
2015/01/20 Javascript
jquery实现简单文字提示效果
2015/12/02 Javascript
总结jQuery插件开发中的一些要点
2016/05/16 Javascript
jQuery中$.ajax()方法参数解析
2016/10/22 Javascript
详解使用vue脚手架工具搭建vue-webpack项目
2017/05/10 Javascript
全面介绍vue 全家桶和项目实例
2017/12/27 Javascript
jQuery实现ajax回调函数带入参数的方法示例
2018/06/26 jQuery
详解Vue一个案例引发「内容分发slot」的最全总结
2018/12/02 Javascript
如何实现js拖拽效果及原理解析
2020/05/08 Javascript
[02:21]DOTA2英雄基础教程 蝙蝠骑士
2013/12/16 DOTA
[43:26]完美世界DOTA2联赛PWL S2 Forest vs Rebirth 第二场 11.20
2020/11/23 DOTA
从零学Python之hello world
2014/05/21 Python
python中对list去重的多种方法
2014/09/18 Python
简单总结Python中序列与字典的相同和不同之处
2016/01/19 Python
python实现求解列表中元素的排列和组合问题
2018/03/15 Python
在Pycharm terminal中字体大小设置的方法
2019/01/16 Python
在Pandas中DataFrame数据合并,连接(concat,merge,join)的实例
2019/01/29 Python
对Python3 pyc 文件的使用详解
2019/02/16 Python
使用Pandas的Series方法绘制图像教程
2019/12/04 Python
Pytorch 使用不同版本的cuda的方法步骤
2020/04/02 Python
TUMI马来西亚官方网站:国际领先的高品质商旅箱包品牌
2018/04/26 全球购物
英国自行车商店:AW Cycles
2021/02/24 全球购物
Yahoo-PHP面试题4
2012/05/05 面试题
运行时异常与一般异常有何异同?
2014/01/05 面试题
高三家长寄语
2014/04/03 职场文书
物流管理专业推荐信
2014/09/06 职场文书
法制教育观后感
2015/06/17 职场文书
高一地理教学工作总结
2015/08/12 职场文书
MySQL索引篇之千万级数据实战测试
2021/04/05 MySQL