当前位置: 首页 > news >正文

返回顶部的js实现

原文链接:http://www.cnblogs.com/ATree/archive/2011/04/09/JQuery_Mootools_Back-Top.html

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

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

无论是这里的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);

}

 

(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+。

这里注意脚本的引用位置哦如果按照上面的引用 需要把他放置在body里面或者下面任何地方,如果需要引用到head上面把上面的脚本需要放置到$(document).ready(function(){........})

在IE6下有抖动的问题 解决办法如下:

 

* html,* html body {background-image:url(about:blank);background-attachment:fixed;}

 下面我们来解决“抖动”问题:引用http://blog.sina.com.cn/s/blog_56e3129d0100az9s.html

  显然IE有一个多步的渲染进程。当滚动或调整浏览器大小的时候,它将重置所有内容并重画页面,这个时候它就会重新处理css表达式。这会引起一个丑陋 的“抖动”bug,在此处固定位置的元素需要调整以跟上(页面的)滚动,于是就会“抖动”。(仅用上面的代码时,就会出现这样的抖动。)

  解决此问题的技巧就是使用background-attachment:fixed为body或html元素添加一个background-image。这就会强制页面在重画之前先处理CSS。因为是在重画之前处理CSS,也就会同样在重画之前首先处理你的CSS表达式。从而实现完美平滑的固定位置元素!

  作者(原文位置:http://subtlegradient.com/articles/2009/07/29/css_position_fixed_for_ie6.html)还发现了另外一个小技巧:根本无需一个真实的图片!可以使用一个about:blank替代一个spacer.gif图片,而且它工作的同样出色。


CSS CODE:

.fixed-top {position:fixed;bottom:auto;top:0px;}
.fixed-bottom {position:fixed;bottom:0px;top:auto;}
.fixed-left {position:fixed;right:auto;left:0px;}
.fixed-right {position:fixed;right:0px;left:auto;}

* html,* html body {background-image:url(about:blank);background-attachment:fixed;}
* html .fixed-top {position:absolute;bottom:auto;top:expression(eval(document.documentElement.scrollTop));}
* html .fixed-right  {position:absolute;right:auto;left:expression(eval(document.documentElement.scrollLeft+document.documentElement.clientWidth-this.offsetWidth)-(parseInt(this.currentStyle.marginLeft,10)||0)-(parseInt(this.currentStyle.marginRight,10)||0));}

* html .fixed-bottom {position:absolute;bottom:auto;top:expression(eval(document.documentElement.scrollTop+document.documentElement.clientHeight-this.offsetHeight-(parseInt(this.currentStyle.marginTop,10)||0)-(parseInt(this.currentStyle.marginBottom,10)||0)));}

* html .fixed-left {position:absolute;right:auto;left:expression(eval(document.documentElement.scrollLeft));}

 经过整理如下

* html,* html body {background-image:url(about:blank);background-attachment:fixed;}

.backToTop {
    border:1px solid red;
    display: block;
    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;
    _top:expression(eval(document.documentElement.scrollTop+document.documentElement.clientHeight-this.offsetHeight-150));
    cursor: pointer;
    opacity: .6;
    filter: Alpha(opacity=60);
    z-index:9999999;
}

去掉上面js段落中的

//IE6下的定位
if (!window.XMLHttpRequest) {
$backToTopEle.css("top", st + winh - 166);

转载于:https://www.cnblogs.com/yeminglong/archive/2012/12/28/2837447.html

相关文章:

  • 将新添加硬盘划到根目录的方法(利用lvm)
  • DebuggerStepThroughAttribute 类
  • poj1450
  • 惠普安腾服务器打“融合”牌
  • Android 搜索框自动提示及其保存历史记录
  • 无法运行宏,可能是因为该宏在此工作簿中不可用,或者所有的宏都被禁用的解决方法...
  • 通过“时间管理",加快学习进度
  • 美女电子相册
  • CMAKE2.8.10在HP-UNIX上安装异常解决
  • Reflow
  • emacs-shell
  • WPF 去除头部,实现拖动
  • shell四大变量和实例_李强强
  • 通过SharpShell快速实现Windows Shell扩展
  • 简明 Vim 练级攻略 | 酷壳 - CoolShell.cn
  • 【162天】黑马程序员27天视频学习笔记【Day02-上】
  • bootstrap创建登录注册页面
  • C++11: atomic 头文件
  • IDEA常用插件整理
  • Java 多线程编程之:notify 和 wait 用法
  • java中具有继承关系的类及其对象初始化顺序
  • Leetcode 27 Remove Element
  • React中的“虫洞”——Context
  • sublime配置文件
  • TiDB 源码阅读系列文章(十)Chunk 和执行框架简介
  • ⭐ Unity 开发bug —— 打包后shader失效或者bug (我这里用Shader做两张图片的合并发现了问题)
  • unity如何实现一个固定宽度的orthagraphic相机
  • Vue--数据传输
  • 飞驰在Mesos的涡轮引擎上
  • 容器化应用: 在阿里云搭建多节点 Openshift 集群
  • 如何合理的规划jvm性能调优
  • 世界上最简单的无等待算法(getAndIncrement)
  • 赢得Docker挑战最佳实践
  • “十年磨一剑”--有赞的HBase平台实践和应用之路 ...
  • k8s使用glusterfs实现动态持久化存储
  • ​【C语言】长篇详解,字符系列篇3-----strstr,strtok,strerror字符串函数的使用【图文详解​】
  • ​sqlite3 --- SQLite 数据库 DB-API 2.0 接口模块​
  • ​无人机石油管道巡检方案新亮点:灵活准确又高效
  • (14)学习笔记:动手深度学习(Pytorch神经网络基础)
  • (6)添加vue-cookie
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (二)hibernate配置管理
  • (二)springcloud实战之config配置中心
  • (二十三)Flask之高频面试点
  • (过滤器)Filter和(监听器)listener
  • (一)eclipse Dynamic web project 工程目录以及文件路径问题
  • (转) Android中ViewStub组件使用
  • (转)IIS6 ASP 0251超过响应缓冲区限制错误的解决方法
  • ***详解账号泄露:全球约1亿用户已泄露
  • .NET 4.0网络开发入门之旅-- 我在“网” 中央(下)
  • .NET成年了,然后呢?
  • .net分布式压力测试工具(Beetle.DT)
  • .NET高级面试指南专题十一【 设计模式介绍,为什么要用设计模式】
  • .net与java建立WebService再互相调用
  • ?php echo ?,?php echo Hello world!;?