React操作真实DOM实现动态吸底部的示例


Posted in Javascript onOctober 23, 2017

动态吸底:开始时fixed在页面上,当页面滚动到距离底部一定距离的时fixed部分固定。

这个是需要计算页面滚动距离的,如果使用Jquery或者原生js实现是非常好实现的,但是由于使用react并不推崇操作DOM,但是如果使用virtual DOM的话是无法实现该效果的,所以还是要引入js去直接获取DOM进行操作。

react在componentDidMount之后页面渲染完成,所以可以在这里面直接用js原生方法获取DOM元素,进而进行操作。

componentDidMount() {
 this.changeFixed()
}
//?算高度
changeFixed(){
 //getDOMNode
 const layoutNode = document.querySelectorAll('.page-layout')[0];
 const orderPriceNode = document.querySelectorAll('.test-price')[0];
 window.addEventListener('scroll', function (e) {
  const windowInnerHeight = window.innerHeight;
  const layoutNodeHeight = layoutNode.offsetHeight;
  //滚动超出视野距离
  let scrollTop = window.pageYOffset|| document.documentElement.scrollTop || document.body.scrollTop;
  const distanceBottom = layoutNodeHeight - scrollTop - windowInnerHeight;
  //120的时候吸底
  if(distanceBottom <= 120){
   orderPriceNode.classList.remove('fixed');
  }else{
   orderPriceNode.classList.add('fixed');
  }
 })
}

这样就实现了当距离底部120的时候吸底

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
dwz 如何去掉ajaxloading具体代码
May 22 Javascript
js+html5通过canvas指定开始和结束点绘制线条的方法
Jun 05 Javascript
基于jQuery和hwSlider实现内容左右滑动切换效果附源码下载(一)
Jun 22 Javascript
在线引用最新jquery文件的实现方法
Aug 26 Javascript
JS简单实现禁止访问某个页面的方法
Sep 13 Javascript
jQuery弹出层插件popShow(改进版)用法示例
Jan 23 Javascript
js面向对象编程总结
Feb 16 Javascript
Angular2进阶之如何避免Dom误区
Apr 02 Javascript
vue.js template模板的使用(仿饿了么布局)
Aug 13 Javascript
在 Vue.js中优雅地使用全局事件的方法
Feb 01 Javascript
详解vue中router-link标签所必备了解的属性
Apr 15 Javascript
微信小程序如何实现点击图片放大功能
Jan 21 Javascript
利用pm2部署多个node.js项目的配置教程
Oct 22 #Javascript
vue.js中父组件调用子组件的内部方法示例
Oct 22 #Javascript
vue 1.x 交互实现仿百度下拉列表示例
Oct 21 #Javascript
JS返回顶部实例代码
Aug 09 #Javascript
VUE2实现事件驱动弹窗示例
Oct 21 #Javascript
vue+socket.io+express+mongodb 实现简易多房间在线群聊示例
Oct 21 #Javascript
vue使用keep-alive实现数据缓存不刷新
Oct 21 #Javascript
You might like
支付宝接口开发集成支付环境小结
2015/03/17 PHP
PHP 返回13位时间戳的实现代码
2016/05/13 PHP
php实现URL加密解密的方法
2016/11/17 PHP
js模拟select下拉菜单控件的代码
2013/05/08 Javascript
jquery中的ajax方法怎样通过JSONP进行远程调用
2014/05/04 Javascript
jquery对table中各数据的增加、保存、删除操作示例
2014/05/14 Javascript
jquery text()方法取标签中的文本
2014/07/25 Javascript
28个常用JavaScript方法集锦
2015/01/14 Javascript
Web开发必知Javascript技巧大全
2016/02/23 Javascript
浅析JavaScriptSerializer类的序列化与反序列化
2016/11/22 Javascript
nodejs中全局变量的实例解析
2017/03/07 NodeJs
详解webpack介绍&amp;安装&amp;常用命令
2017/06/29 Javascript
vue使用中的内存泄漏【推荐】
2018/07/10 Javascript
微信小程序Getuserinfo解决方案图解
2018/08/24 Javascript
vue+elementUI动态生成面包屑导航教程
2019/11/04 Javascript
微信小程序实现上拉加载功能
2019/11/20 Javascript
js实现列表向上无限滚动
2020/01/13 Javascript
[25:59]Newbee vs TNC 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python实现屏幕截图的代码及函数详解
2016/10/01 Python
Python pymongo模块常用操作分析
2018/09/01 Python
Opencv实现抠图背景图替换功能
2019/05/21 Python
Python Django搭建网站流程图解
2020/06/13 Python
css3实现图片遮罩效果鼠标hover以后出现文字
2013/11/05 HTML / CSS
莫斯科隐形眼镜网上商店:Linzi
2019/07/22 全球购物
应届生服装设计自我评价
2013/09/20 职场文书
违反学校规定检讨书
2014/01/18 职场文书
公务员职业生涯规划书范文  
2014/01/19 职场文书
《小熊住山洞》教学反思
2014/02/21 职场文书
学校地质灾害防治方案
2014/06/10 职场文书
学校元旦晚会开场白
2014/12/14 职场文书
努力工作保证书
2015/02/28 职场文书
2016大学军训通讯稿
2015/11/25 职场文书
《你在为谁工作》心得体会(共8篇)
2016/01/20 职场文书
离婚协议书格式范本
2016/03/18 职场文书
Python中的xlrd模块使用整理
2021/06/15 Python
浅谈Go语言多态的实现与interface使用
2021/06/16 Golang