仿新浪微博返回顶部的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 相关文章推荐
5个可以帮你理解JavaScript核心闭包和作用域的小例子
Oct 08 Javascript
js实现Select下拉框具有输入功能的方法
Feb 06 Javascript
Javascript实现计算个人所得税
May 10 Javascript
BootStrap+Angularjs+NgDialog实现模式对话框
Aug 24 Javascript
Canvas 制作动态进度加载水球详解及实例代码
Dec 09 Javascript
使用3D引擎threeJS实现星空粒子移动效果
Sep 13 Javascript
详解javascript中的变量提升和函数提升
May 24 Javascript
微信小程序实现星级评价效果
Dec 28 Javascript
ES6中定义类和对象的方法示例
Jul 31 Javascript
深度解读vue-resize的具体用法
Jul 08 Javascript
Vue项目打包编译优化方案
Sep 16 Javascript
JS实现多功能计算器
Oct 28 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
4月1日重磅发布!《星际争霸II》6.0.0版本更新
2020/04/09 星际争霸
php中$_REQUEST、$_POST、$_GET的区别和联系小结
2011/11/23 PHP
php格式化日期和时间格式化示例分享
2014/02/24 PHP
PHP函数strip_tags的一个bug浅析
2014/05/22 PHP
php 截取utf-8格式的字符串实例代码
2016/10/30 PHP
关于IE、Firefox、Opera页面呈现异同 写脚本很痛苦
2009/08/28 Javascript
IE6/7 and IE8/9/10(IE7模式)依次隐藏具有absolute或relative的父元素和子元素后再显示父元素
2011/07/31 Javascript
javascript获取选中的文本的方法代码
2013/10/30 Javascript
Node.js中的模块机制学习笔记
2014/11/04 Javascript
js实现右下角提示框的方法
2015/02/03 Javascript
JavaScript中的函数模式详解
2015/02/11 Javascript
使用jQuery制作遮罩层弹出效果的极简实例分享
2016/05/12 Javascript
微信JS-SDK坐标位置如何转换为百度地图坐标
2016/07/04 Javascript
checkbox 选中一个另一个checkbox也会选中的实现代码
2016/07/09 Javascript
Jquery AJAX POST与GET之间的区别详细介绍
2016/10/17 Javascript
Javascript 函数的四种调用模式
2016/11/05 Javascript
javaScript+turn.js实现图书翻页效果实例代码
2017/02/16 Javascript
关于vue-router的beforeEach无限循环的问题解决
2017/09/09 Javascript
React Native日期时间选择组件的示例代码
2018/04/27 Javascript
使用layer弹窗和layui表单实现新增功能
2018/08/09 Javascript
vue弹窗插件实战代码
2018/09/08 Javascript
微信小程序日历/日期选择插件使用方法详解
2018/12/28 Javascript
Vue element-ui父组件控制子组件的表单校验操作
2020/07/17 Javascript
javascript实现前端分页功能
2020/11/26 Javascript
[48:22]VGJ.S vs VG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
跟老齐学Python之有容乃大的list(3)
2014/09/15 Python
python实现比较两段文本不同之处的方法
2015/05/30 Python
Python面向对象程序设计OOP入门教程【类,实例,继承,重载等】
2019/01/05 Python
纯css3制作的火影忍者写轮眼开眼至轮回眼及进化过程实例
2014/11/11 HTML / CSS
详解rem 适配布局
2018/10/31 HTML / CSS
好药师网上药店:安全合法的网上药品零售药房
2017/02/15 全球购物
简述你对Statement,PreparedStatement,CallableStatement的理解
2013/03/25 面试题
重点工程汇报材料
2014/08/27 职场文书
Python基础之字符串格式化详解
2021/04/21 Python
世界各国短波电台对东亚播送时间频率表(SW)
2021/06/28 无线电
使用pd.merge表连接出现多余行的问题解决
2022/06/16 Python