仿新浪微博返回顶部的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 相关文章推荐
Javascript计算两个marker之间的距离(Google Map V3)
Apr 26 Javascript
jquery弹出框的用法示例(一)
Aug 26 Javascript
关于js内存泄露的一个好例子
Dec 09 Javascript
Javascript学习笔记之相等符号与严格相等符号
Nov 23 Javascript
js生成随机数的方法实例
Oct 16 Javascript
Backbone View 之间通信的三种方式
Aug 09 Javascript
[js高手之路]寄生组合式继承的优势详解
Aug 28 Javascript
WEEX环境搭建与入门详解
Oct 16 Javascript
vue项目实现图片上传功能
Dec 23 Javascript
Vue 中使用 typescript的方法详解
Feb 17 Javascript
微信小程序实现录制、试听、上传音频功能(带波形图)
Feb 27 Javascript
解决vue 给window添加和移除resize事件遇到的坑
Jul 21 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框架的性能
2008/01/10 PHP
Session的工作机制详解和安全性问题(PHP实例讲解)
2014/04/10 PHP
本地计算机无法启动Apache故障处理
2014/08/08 PHP
一个关于javascript匿名函数的问题分析
2012/03/30 Javascript
js 限制数字 js限制输入实现代码
2012/12/04 Javascript
动态创建script标签实现跨域资源访问的方法介绍
2014/02/28 Javascript
jquery自定义下拉列表示例
2014/04/25 Javascript
jquery中done和then的区别(详解)
2017/12/19 jQuery
vue里面父组件修改子组件样式的方法
2018/02/03 Javascript
es6函数中的作用域实例分析
2020/04/18 Javascript
JavaScript实现10秒后再次获取验证码
2020/12/02 Javascript
[19:24]DOTA2客户端使用指南 一分钟快速设置轻松超神
2013/09/24 DOTA
python使用正则搜索字符串或文件中的浮点数代码实例
2014/07/11 Python
Python import自定义模块方法
2015/02/12 Python
在Python中使用base64模块处理字符编码的教程
2015/04/28 Python
Python中用于返回绝对值的abs()方法
2015/05/14 Python
python检查序列seq是否含有aset中项的方法
2015/06/30 Python
Python读取properties配置文件操作示例
2018/03/29 Python
Python中.join()和os.path.join()两个函数的用法详解
2018/06/11 Python
python调用tcpdump抓包过滤的方法
2018/07/18 Python
运用PyTorch动手搭建一个共享单车预测器
2019/08/06 Python
Python内置类型性能分析过程实例
2020/01/29 Python
Python拼接字符串的7种方式详解
2020/03/19 Python
解决pip安装的第三方包在PyCharm无法导入的问题
2020/10/15 Python
HTML5 Canvas实现文本对齐的方法总结
2016/03/24 HTML / CSS
DJI大疆德国官方商城:大疆无人机
2018/09/01 全球购物
Java中有几种类型的流?JDK为每种类型的流提供了一些抽象类以供继承,请说出他们分别是哪些类?
2012/05/30 面试题
扬尘污染防治方案
2014/06/15 职场文书
大学生联谊活动策划书(光棍节)
2014/10/10 职场文书
刑事辩护授权委托书范本
2014/10/17 职场文书
专业见习报告范文
2014/11/03 职场文书
乡镇保密工作承诺书
2015/05/04 职场文书
2019财务管理制度最新范本!
2019/07/09 职场文书
CSS中em的正确打开方式详解
2021/04/08 HTML / CSS
教你如何让spark sql写mysql的时候支持update操作
2022/02/15 MySQL
Win11如何默认打开软件界面最大化?Win11默认打开软件界面最大化的方法
2022/07/15 数码科技