原生js实现吸顶效果


Posted in Javascript onMarch 13, 2017

实现思路如下:

1. div初始居普通文档流中

2. 给window添加scroll事件(可事件节流),获取div的offset的top值,滚动时scrollTop值和top比较,当到达top时给div添加一个fixed的class使其固定

3. 向上滚动时当到达div初始top时则删除fixed的class,此时div又回到普通文档流中

4. fixed样式非IE6浏览器使用position:fixed,IE6使用position:absolute和IE expression

效果图:

原生js实现吸顶效果

代码如下:

<!doctype html>
<html>
<head>
 <meta charset="utf-8">
 <title>无标题文档</title>
 <style>
  * {
   margin: 0;
   padding: 0;
  }
  #div1 {
   width: 100%;
   height: 50px;
   background: skyblue;
  }
 </style>
 <script>
  window.onload = function() {
   var oDiv = document.getElementById('div1');
   var divT = oDiv.offsetTop;
   //console.log(divT);
   window.onscroll = function() {
    // 获取当前页面的滚动条纵坐标位置 (依次为火狐谷歌、safari、IE678)
    var scrollT = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;
    if (scrollT >= divT) {
     if (window.navigator.userAgent.indexOf('MSIE 6.0') != -1) {
      // 兼容IE6代码
      oDiv.style.position = 'absolute';
      oDiv.style.top = scrollT + 'px';
      oDiv.style.left = 0 + 'px';
     } else { 
      // 正常浏览器代码
      oDiv.style.position = 'fixed';
      oDiv.style.top = 0;
      oDiv.style.left = 0;
     }
    } else
     oDiv.style.position = '';
   }
  }
 </script>
</head>
<body>
 <div class="all">
  以上<br>
  以上<br>
  以上<br>
  以上<br>
  以上<br>
  以上<br>
  以上<br>
  <div id="div1"></div>
  啦啦啦啦啦<br>
  啦啦啦啦啦<br>
  啦啦啦啦啦<br>
  啦啦啦啦啦<br>
  啦啦啦啦啦<br>
  啦啦啦啦啦<br>
  啦啦啦啦啦<br>
  啦啦啦啦啦<br>
  啦啦啦啦啦<br>
  啦啦啦啦啦<br>
  啦啦啦啦啦<br>
  啦啦啦啦啦<br>
  啦啦啦啦啦<br>
  啦啦啦啦啦<br>
  啦啦啦啦啦<br>
  啦啦啦啦啦<br>
  啦啦啦啦啦<br>
  啦啦啦啦啦<br>
  啦啦啦啦啦<br>
  啦啦啦啦啦<br>
  啦啦啦啦啦<br>
  啦啦啦啦啦<br>
  啦啦啦啦啦<br>
  啦啦啦啦啦<br>
  啦啦啦啦啦<br>
  啦啦啦啦啦<br>
  啦啦啦啦啦<br>
  啦啦啦啦啦<br>
  啦啦啦啦啦<br>
  啦啦啦啦啦<br>
  啦啦啦啦啦<br>
  啦啦啦啦啦<br>
  啦啦啦啦啦<br>
  啦啦啦啦啦<br>
  啦啦啦啦啦<br>
  啦啦啦啦啦<br>
  啦啦啦啦啦<br>
  啦啦啦啦啦<br>
  啦啦啦啦啦<br>
  啦啦啦啦啦<br>
  啦啦啦啦啦<br>
  啦啦啦啦啦<br>
  啦啦啦啦啦<br>
  啦啦啦啦啦<br>
  啦啦啦啦啦<br>
  啦啦啦啦啦<br>
  啦啦啦啦啦<br>
  啦啦啦啦啦<br>
  啦啦啦啦啦<br>
  啦啦啦啦啦<br>
  啦啦啦啦啦<br>
 </div>
</body>
</html>

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持三水点靠木!

Javascript 相关文章推荐
JS简单的轮播的图片滚动实例
Jun 17 Javascript
浅谈JavaScript中的Math.atan()方法的使用
Jun 14 Javascript
jquery实现漂亮的二级下拉菜单代码
Aug 26 Javascript
jquery实现经典的淡入淡出选项卡效果代码
Sep 22 Javascript
javaScript中定义类或对象的五种方式总结
Dec 04 Javascript
解决JSON.stringify()自动将中文转译成unicode的问题
Jan 05 Javascript
旺旺在线客服代码 旺旺客服代码生成器
Jan 09 Javascript
vue自动化表单实例分析
May 06 Javascript
vue使用监听实现全选反选功能
Jul 06 Javascript
js实现翻牌小游戏
Jul 31 Javascript
微信小程序实现转盘抽奖
Sep 21 Javascript
Javascript中async与await的捕捉错误详解
Mar 03 Javascript
vue2.0嵌套路由实现豆瓣电影分页功能(附demo)
Mar 13 #Javascript
jquery.flot.js简单绘制折线图用法示例
Mar 13 #Javascript
深入理解Node.js中的进程管理
Mar 13 #Javascript
jQuery简易时光轴实现方法示例
Mar 13 #Javascript
JavaScript评论点赞功能的实现方法
Mar 13 #Javascript
JS+html5 canvas实现的简单绘制折线图效果示例
Mar 13 #Javascript
JS实现含有中文字符串的友好截取功能分析
Mar 13 #Javascript
You might like
php从数组中随机抽取一些元素的代码
2012/11/05 PHP
php无限级分类实现方法分析
2016/10/19 PHP
基于ThinkPHP5.0实现图片上传插件
2017/09/25 PHP
php实现获取农历(阴历)、节日、节气的类与用法示例
2017/11/20 PHP
JavaScript 异步调用框架 (Part 1 - 问题 &amp; 场景)
2009/08/03 Javascript
utf-8编码引起js输出中文乱码的解决办法
2010/06/23 Javascript
jq选项卡鼠标延迟的插件实例
2013/05/13 Javascript
Jquery搜索父元素操作方法
2015/02/10 Javascript
解析预加载显示图片艺术
2016/12/05 Javascript
解析js如何获取css样式
2016/12/11 Javascript
在Debian(Raspberry Pi)树莓派上安装NodeJS的教程详解
2017/09/19 NodeJs
node文字生成图片的示例代码
2017/10/26 Javascript
nuxt框架中路由鉴权之Koa和Session的用法
2018/05/09 Javascript
Electron vue的使用教程图文详解
2019/07/05 Javascript
vue 使用外部JS与调用原生API操作示例
2019/12/02 Javascript
在centos7中分布式部署pyspider
2017/05/03 Python
python 函数传参之传值还是传引用的分析
2017/09/07 Python
基于Python log 的正确打开方式
2018/04/28 Python
python求最大值,不使用内置函数的实现方法
2019/07/09 Python
python的debug实用工具 pdb详解
2019/07/12 Python
python圣诞树编写实例详解
2020/02/13 Python
Amara德国:家居饰品、设计师品牌和豪华礼品
2019/05/20 全球购物
LVMH旗下最大的奢侈品网站平台:24S
2020/05/24 全球购物
营销与策划个人求职信
2013/09/22 职场文书
元旦晚会邀请函
2014/01/27 职场文书
物流毕业生个人的自我评价
2014/02/13 职场文书
知识竞赛活动方案
2014/02/18 职场文书
办公自动化毕业生求职信
2014/03/09 职场文书
报关员个人职业生涯规划书
2014/03/12 职场文书
小班开学寄语
2014/04/04 职场文书
党员个人剖析材料2014
2014/10/08 职场文书
2015年建党94周年演讲稿
2015/03/19 职场文书
2015年成本会计工作总结
2015/10/14 职场文书
JavaScript执行机制详细介绍
2021/12/06 Javascript
Windows server 2012搭建FTP服务器
2022/04/29 Servers
Python 避免字典和元组的多重嵌套问题
2022/07/15 Python