仿新浪微博返回顶部的jquery实现代码

一、引言

  在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下相关操作与插件”一文。