仿新浪微博返回顶部的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弹出层代码
Sep 24 Javascript
基于jquery实现的鼠标拖拽元素复制并写入效果
Aug 23 Javascript
Javascript面向对象设计一 工厂模式
Dec 20 Javascript
在jquery中combobox多选的不兼容问题总结
Dec 24 Javascript
Bootstrap每天必学之按钮(一)
Nov 24 Javascript
JavaScript拖拽、碰撞、重力及弹性运动实例分析
Jan 08 Javascript
jQuery Tree Multiselect使用详解
May 02 jQuery
Vue 中的受控与非受控组件的实现
Dec 17 Javascript
JavaScript使用canvas绘制随机验证码
Feb 17 Javascript
只有 20 行的 JavaScript 模板引擎实例详解
May 11 Javascript
解决vue props传Array/Object类型值,子组件报错的情况
Nov 07 Javascript
JS实现九宫格拼图游戏
Jun 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
PHP 时间转换Unix时间戳代码
2010/01/22 PHP
php opendir()列出目录下所有文件的实例代码
2016/10/02 PHP
PHP中常用的魔术方法
2017/04/28 PHP
stripos函数知识点实例分享
2019/02/11 PHP
jquery操作下拉列表、文本框、复选框、单选框集合(收藏)
2014/01/08 Javascript
纯js和css实现渐变色包括静态渐变和动态渐变
2014/05/29 Javascript
使用jQuery jqPlot插件绘制柱状图
2014/12/18 Javascript
Javascript之Math对象详解
2016/06/07 Javascript
AngularJS 视图详解及示例代码
2016/08/17 Javascript
详解Nodejs的timers模块
2016/12/22 NodeJs
JavaScript 中 apply 、call 的详解
2017/03/21 Javascript
Angular指令之restict匹配模式的详解
2017/07/27 Javascript
JavaScript实现背景自动切换小案例
2019/09/27 Javascript
基于纯JS实现多张图片的懒加载Lazy过程解析
2019/10/14 Javascript
javascript实现简单打字游戏
2019/10/29 Javascript
vue+elementui 对话框取消 表单验证重置示例
2019/10/29 Javascript
vue如何实现动态加载脚本
2020/02/05 Javascript
[43:24]VG vs Serenity 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/20 DOTA
python中os操作文件及文件路径实例汇总
2015/01/15 Python
简单理解Python中的装饰器
2015/07/31 Python
python中关于for循环的碎碎念
2017/06/30 Python
小 200 行 Python 代码制作一个换脸程序
2020/05/12 Python
英国虚拟主机服务商:eUKhost
2016/08/16 全球购物
美体小铺加拿大官方网站:The Body Shop加拿大
2016/10/30 全球购物
French Connection官网:女装、男装及家居用品
2019/03/18 全球购物
南京软件公司的.net程序员笔试题
2014/08/31 面试题
安全生产检查通报
2014/01/29 职场文书
旅游网创业计划书
2014/01/31 职场文书
致全体运动员广播稿
2014/02/01 职场文书
党的群众路线教育实践活动个人整改措施材料
2014/11/04 职场文书
父亲节活动总结
2015/02/12 职场文书
离婚起诉书怎么写
2015/05/19 职场文书
2015年医院科室工作总结范文
2015/05/26 职场文书
浅谈mysql返回Boolean类型的几种情况
2021/06/04 MySQL
Vue Element-ui表单校验规则实现
2021/07/09 Vue.js
JavaScript数组 几个常用方法总结
2021/11/11 Javascript