原生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 相关文章推荐
php 中序列化和json使用介绍
Jul 08 Javascript
jquery简单的弹出层浮动层代码
Apr 27 Javascript
JS+CSS实现鼠标滑过时动态翻滚的导航条效果
Sep 24 Javascript
移动端横屏的JS代码(beta)
May 16 Javascript
JavaScript中的事件委托及好处
Jul 12 Javascript
基于js中的原型、继承的一些想法
Aug 10 Javascript
用jQuery实现优酷首页轮播图
Jan 09 Javascript
js清除浏览器缓存的几种方法
Mar 15 Javascript
Vue键盘事件用法总结
Apr 18 Javascript
基于node打包可执行文件工具_Pkg使用心得分享
Jan 24 Javascript
详解Vue.js iview实现树形权限表(可扩展表)
Sep 30 Javascript
layui type2 通过url给iframe子页面传值的例子
Sep 06 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
php5.2时间相差8小时
2007/01/15 PHP
PHP中使用Imagick操作PSD文件实例
2015/01/26 PHP
YII框架中搜索分页jQuery写法详解
2016/12/19 PHP
详谈配置phpstorm完美支持Codeigniter(CI)代码自动完成(代码提示)
2017/04/07 PHP
Laravel 5.5 实现禁用用户注册示例
2019/10/24 PHP
PHP7 字符串处理机制修改
2021/03/09 PHP
JavaScript 事件记录使用说明
2009/10/20 Javascript
javascript中的数字与字符串相加实例分析
2011/08/14 Javascript
在百度知道团队中快速审批新成员的js脚本
2014/02/02 Javascript
JS图像无缝滚动脚本非常好用
2014/02/10 Javascript
jQuery实现表格行和列的动态添加与删除方法【测试可用】
2016/08/01 Javascript
教你5分钟学会用requirejs(必看篇)
2017/07/25 Javascript
bootstrap-table组合表头的实现方法
2017/09/07 Javascript
详细分析jsonp的原理和实现方式
2017/11/20 Javascript
浅谈react-router HashRouter和BrowserRouter的使用
2017/12/29 Javascript
webpack vue 项目打包生成的文件,资源文件报404问题的修复方法(总结篇)
2018/01/09 Javascript
jQuery实现合并表格单元格中相同行操作示例
2019/01/28 jQuery
vue使用Proxy实现双向绑定的方法示例
2019/03/20 Javascript
Node.js如何优雅的封装一个实用函数的npm包的方法
2019/04/29 Javascript
微信小程序实现同一页面取值的方法分析
2019/04/30 Javascript
js中的this的指向问题详解
2019/08/29 Javascript
Vue Router中应用中间件的方法
2020/08/06 Javascript
使用Python获取CPU、内存和硬盘等windowns系统信息的2个例子
2014/04/15 Python
快速解决pandas.read_csv()乱码的问题
2018/06/15 Python
优衣库台湾官网:UNIQLO台湾
2019/02/01 全球购物
Viking Direct荷兰:购买办公用品
2019/06/20 全球购物
程序运行正确, 但退出时却"core dump"了,怎么回事
2014/02/19 面试题
linux面试题参考答案(3)
2012/09/13 面试题
毕业实习个人鉴定范文
2013/12/10 职场文书
电气工程和自动化自荐信范文
2013/12/25 职场文书
办公室人员先进事迹
2014/01/27 职场文书
技能竞赛活动方案
2014/02/21 职场文书
工程学毕业生自荐信
2014/06/14 职场文书
2015年个人招商工作总结
2015/04/25 职场文书
redis 存储对象的方法对比分析
2021/08/02 Redis
Python实战实现爬取天气数据并完成可视化分析详解
2022/06/16 Python