开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 1641|回复: 0
收起左侧

[JS例程分享] 为网页添加一个gotoTop(回到顶部)按钮

[复制链接]
结帖率:52% (14/27)
发表于 2013-2-17 05:27:43 | 显示全部楼层 |阅读模式   湖北省荆州市
  1. /**
  2. * 在页面上产生个gotop按钮。
  3. * 用纯粹的JS实现,无须额外的CSS和HTML支持。
  4. *
  5. * @param int width 网页的主体宽度,以下三种取值
  6. * - 0 按钮靠浏览器左
  7. * - -1 按钮靠流利器右
  8. * - 其它正数 按钮靠网页内容右侧
  9. * @return void
  10. * @link http://blog.830725.com/post/add-goto-top-button.html
  11. */
  12. function gotoTop(width)
  13. {
  14.   document.write('<a id="goto-top">^</a>');
  15.   var gotop = document.querySelector('#goto-top');
  16.   /* 默认情况下CSS属性的设置 */
  17.   gotop.style.visibility='hidden';
  18.   gotop.style.cursor='pointer';
  19.   gotop.style.position = 'fixed';
  20.   gotop.style.fontSize='2.5em';
  21.   gotop.style.fontWeight='900';
  22.   gotop.style.textAlign='center';
  23.   gotop.style.background = 'gray';
  24.   gotop.style.borderRadius = '0.2em';
  25.   gotop.style.width='1.4em';
  26.   gotop.style.height='1em';
  27.   gotop.style.top = (document.documentElement.clientHeight / 2) + 100 + 'px';
  28.   gotop.style.opacity='0.3';
  29.   gotop.style.visibility = (document.body.scrollTop + document.documentElement.scrollTop > 10) ? 'visible' : 'hidden';
  30.   if(0 == width)
  31.   { gotop.style.left = '0em';  }
  32.   else if(-1 == width)
  33.   { gotop.style.right = '0em';  }
  34.   else
  35.   {
  36.   var resize = function()
  37.   {
  38.   var left = (document.documentElement.clientWidth - width) / 2 + width + 10;
  39.   if((left - gotop.clientWidth) < width)
  40.   {
  41.   gotop.style.right='0em';
  42.   gotop.style.left = null;  // 设定了right属性,则需要取消left属性。
  43.   }
  44.   else
  45.   {
  46.   gotop.style.left = left + 'px';
  47.   gotop.style.right = null;
  48.   }
  49.   };
  50.   resize();
  51.   window.addEventListener('resize', function()
  52.   {
  53.   resize();
  54.   }, false);

  55.   }
  56.   gotop.addEventListener('mouseover', function()
  57.   {
  58.   this.style.opacity='0.8';
  59.   this.style.textDecoration='none';
  60.   }, false);
  61.   gotop.addEventListener('mouseout', function()
  62.   {
  63.   this.style.opacity='0.3';
  64.   }, false);
  65.   gotop.addEventListener('click', function()
  66.   {
  67.   // IE9和opera下body.scrollTop为0,chrome下documentElement.scrollTop为0
  68.   // 两者始终有一个为0
  69.   var h = document.body.scrollTop + document.documentElement.scrollTop; // 当前位置
  70.   var t = window.setInterval(function()
  71.   {
  72.   window.scrollTo(0,h -= 100); // 每次上移100像素
  73.   if(h <= 0)
  74.   { window.clearInterval(t);  }
  75.   }, 5);
  76.   }, false);
  77.   /* 通过window.onscroll事件确定按钮是否需要显示 */
  78.   window.addEventListener('scroll', function()
  79.   {
  80.   var scrollTop = document.body.scrollTop + document.documentElement.scrollTop;
  81.   gotop.style.visibility = scrollTop > 10 ? 'visible':'hidden';
  82.   }, false);
  83. };
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表