原生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 面向对象 对象(Object)
May 13 Javascript
javascript向flash swf文件传递参数值注意细节
Dec 11 Javascript
javascript判断并获取注册表中可信任站点的方法
Jun 01 Javascript
ClearTimeout消除闪动实例代码
Feb 29 Javascript
原生JS封装Ajax插件(同域、jsonp跨域)
May 03 Javascript
Vue刷新修改页面中数据的方法
Sep 16 Javascript
vue下拉菜单组件(含搜索)的实现代码
Nov 25 Javascript
JS实现鼠标拖拽盒子移动及右键点击盒子消失效果示例
Jan 29 Javascript
基于JS实现web端录音与播放功能
Apr 17 Javascript
改变layer confirm弹窗按钮的颜色方法
Sep 12 Javascript
关于layui toolbar和template的结合使用方法
Sep 19 Javascript
详解微信小程序动画Animation执行过程
Sep 23 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面向对象全攻略 (十七) 自动加载类
2009/09/30 PHP
php的list()的一步操作给一组变量进行赋值的使用
2011/05/18 PHP
Laravel 5框架学习之Blade 简介
2015/04/08 PHP
PHP+JS实现的实时搜索提示功能
2018/03/13 PHP
使用PHP+Redis实现延迟任务,实现自动取消订单功能
2019/11/21 PHP
给Function做的OOP扩展
2009/05/07 Javascript
jQuery遍历Table应用示例
2014/04/09 Javascript
jQuery模拟点击A标记示例参考
2014/04/17 Javascript
微信分享的标题、缩略图、连接及描述设置方法
2014/10/14 Javascript
js实现带按钮的上下滚动效果
2015/05/12 Javascript
JavaScript引用类型和基本类型详解
2016/01/06 Javascript
Node.js实用代码段之获取Buffer对象字节长度
2016/03/17 Javascript
jQuery 判断元素整理汇总
2017/02/28 Javascript
vue-swiper的使用教程
2018/08/30 Javascript
vue中引入第三方字体文件的方法示例
2018/12/17 Javascript
JS面向对象编程实现的Tab选项卡案例详解
2020/03/03 Javascript
使用python 获取进程pid号的方法
2014/03/10 Python
python使用TensorFlow进行图像处理的方法
2018/02/28 Python
Python实现的计算马氏距离算法示例
2018/04/03 Python
python实现图书借阅系统
2019/02/20 Python
python deque模块简单使用代码实例
2020/03/12 Python
eDreams巴西:廉价机票,酒店优惠和度假套餐
2017/04/14 全球购物
设置器与访问器的定义以及各自特点
2016/01/08 面试题
历史学专业推荐信
2013/11/06 职场文书
工作迟到检讨书
2014/02/21 职场文书
报关专员求职信范文
2014/02/22 职场文书
领导班子个人对照检查剖析材料
2014/09/29 职场文书
2014年体育部工作总结
2014/11/13 职场文书
就业推荐表导师评语
2014/12/31 职场文书
2015年植树节活动总结
2015/02/06 职场文书
2015年精神文明建设工作总结
2015/04/21 职场文书
2015年教研组工作总结
2015/05/04 职场文书
步步惊心观后感
2015/06/12 职场文书
2015年小学语文教师工作总结
2015/10/23 职场文书
2016年母亲节广告语
2016/01/28 职场文书
Nginx的反向代理实例详解
2021/03/31 Servers