仿新浪微博返回顶部的js实现

web前端 3270 0 8年前

在web页面中,如果页面较高,为了方便用户快速地返回顶部,都会添加一个返回顶部按钮。

  其中淘宝网的是要滚动条的滚动距离大于某一段距离才显示返回顶部按钮;人人网的返回顶部直接在底部的工具条上;新浪微博的返回顶部在滚动高度大于0的时候显示,且返回顶部的效果是平滑动画效果。本文的实现就是类似于新浪微博的这种效果。新浪微博启用新域名weibo.com了。

  二、jQuery下的返回顶部功能

  点击这里返回顶部字样的按钮后,页面就像是抹了润滑剂一样,倏地一声就滑到顶部了,同时,该点击按钮也玩起了躲猫猫 – 不见了。

  实现的原理嘛,恩……估计鲜有人关心,所以我也懒得浪费口水了,直接上代码。

  无论是这里的jQuery实现还是MooTools实现,下面的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(); });
})();

  寥寥十几行代码就实现了全部的交互细节了。您可以将上面代码直接拷贝到您的JavaScript文件中,页面就有效果啦!对了,请使用jQuery 1.4+。

  三、MooTools下返回顶部功能实现

  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地址后面产生一个#。