原生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 相关文章推荐
javascript insertAfter()定义与用法示例
Jul 25 Javascript
JS简单实现tab切换效果的多窗口显示功能
Sep 07 Javascript
AngularJS通过$sce输出html的方法
Sep 22 Javascript
vue父子组件的数据传递示例
Mar 07 Javascript
jquery中each循环的简单回滚操作
May 05 jQuery
详解Vue-cli 创建的项目如何跨域请求
May 18 Javascript
微信小程序tabBar底部导航中文注解api详解
Aug 16 Javascript
浅谈react前后端同构渲染
Sep 20 Javascript
Vue项目全局配置微信分享思路详解
May 04 Javascript
详解Node.js 中使用 ECDSA 签名遇到的坑
Nov 26 Javascript
jQuery设置下拉框显示与隐藏效果的方法分析
Sep 15 jQuery
vue之组件内监控$store中定义变量的变化详解
Nov 08 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代码
2006/12/06 PHP
Yii快速入门经典教程
2015/12/28 PHP
PHP编程实现多维数组按照某个键值排序的方法小结【2种方法】
2017/04/27 PHP
防止网站内容被拷贝的一些方法与优缺点好处与坏处分析
2007/11/30 Javascript
锋利的jQuery 要点归纳(二) jQuery中的DOM操作(下)
2010/03/23 Javascript
js获取下拉列表框中的value和text的值示例代码
2014/01/11 Javascript
js post提交调用方法
2014/02/12 Javascript
JavaScript中的Math 使用介绍
2014/04/21 Javascript
JavaScript截取、切割字符串的技巧
2016/01/07 Javascript
玩转JavaScript OOP - 类的实现详解
2016/06/08 Javascript
js中遍历对象的属性和值的方法
2016/07/27 Javascript
Vue.js之slot深度复制详解
2017/03/10 Javascript
react native仿微信PopupWindow效果的实例代码
2017/08/07 Javascript
vue组件Prop传递数据的实现示例
2017/08/17 Javascript
angular4模块中给标签添加背景图的实现方法
2017/09/15 Javascript
vue与bootstrap实现简单用户信息添加删除功能
2019/02/15 Javascript
vue实现鼠标移过出现下拉二级菜单功能
2019/12/12 Javascript
Element InputNumber计数器的使用方法
2020/07/27 Javascript
浅谈vue中$event理解和框架中在包含默认值外传参
2020/08/07 Javascript
详解vue3中组件的非兼容变更
2021/03/03 Vue.js
[02:55]含熏伴清风,风行者至宝、屠夫身心及典藏宝瓶二展示
2020/09/08 DOTA
用Python中的wxPython实现最基本的浏览器功能
2015/04/14 Python
Python实现MySQL操作的方法小结【安装,连接,增删改查等】
2017/07/12 Python
好的Python培训机构应该具备哪些条件
2018/05/23 Python
Python 普通最小二乘法(OLS)进行多项式拟合的方法
2018/12/29 Python
python opencv 读取图片 返回图片某像素点的b,g,r值的实现方法
2019/07/03 Python
pytorch 自定义数据集加载方法
2019/08/18 Python
Python3 文章标题关键字提取的例子
2019/08/26 Python
Python中xml和dict格式转换的示例代码
2019/11/07 Python
Python3运算符常见用法分析
2020/02/14 Python
python GUI库图形界面开发之PyQt5时间控件QTimer详细使用方法与实例
2020/02/26 Python
在python里使用await关键字来等另外一个协程的实例
2020/05/04 Python
tensorflow模型转ncnn的操作方式
2020/05/25 Python
.net软件工程师面试题
2015/03/31 面试题
2014年大学生自我评价
2014/01/19 职场文书
python 使用Tensorflow训练BP神经网络实现鸢尾花分类
2021/05/12 Python