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 相关文章推荐
js获取上传文件大小示例代码
Apr 10 Javascript
JavaScript判断IE版本型号
Jul 27 Javascript
学习JavaScript设计模式(封装)
Nov 26 Javascript
BootStrap的alert提示框的关闭后再显示怎么解决
May 17 Javascript
AJAX和jQuery动态加载数据的实现方法
Dec 05 Javascript
es7学习教程之Decorators(修饰器)详解
Jul 21 Javascript
Angular CLI 安装和使用教程
Sep 13 Javascript
微信小程序实现图片懒加载的示例代码
Dec 13 Javascript
node puppeteer(headless chrome)实现网站登录
May 09 Javascript
js 实现在2d平面上画8的方法
Oct 10 Javascript
详解promise.then,process.nextTick, setTimeout 以及 setImmediate的执行顺序
Nov 21 Javascript
关于layui 弹出层一闪而过就消失的解决方法
Sep 09 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
PHP中设置时区方法小结
2012/06/03 PHP
php遍历数组的4种方法总结
2014/07/05 PHP
php安装swoole扩展的方法
2015/03/19 PHP
php删除文本文件中重复行的方法
2015/04/28 PHP
PHP 微信扫码支付源代码(推荐)
2016/11/03 PHP
js特效,页面下雪的小例子
2013/06/17 Javascript
js 表单提交后按钮变灰的实例代码
2013/08/16 Javascript
ECMAScript6函数默认参数
2015/06/12 Javascript
使用JavaScript为Kindeditor自定义按钮增加Audio标签
2016/03/18 Javascript
微信小程序 实现拖拽事件监听实例详解
2016/11/16 Javascript
js处理层级数据结构的方法小结
2017/01/17 Javascript
vue实现商城购物车功能
2017/11/27 Javascript
vue学习教程之带你一步步详细解析vue-cli
2017/12/26 Javascript
浅析Vue.js中v-bind v-model的使用和区别
2018/12/04 Javascript
js取小数点后两位四种方法
2019/01/18 Javascript
JS浅拷贝和深拷贝原理与实现方法分析
2019/02/28 Javascript
Vue数字输入框组件的使用方法
2019/10/19 Javascript
js回到页面指定位置的三种方式
2020/12/17 Javascript
Python中使用bidict模块双向字典结构的奇技淫巧
2016/07/12 Python
VSCode下配置python调试运行环境的方法
2018/04/06 Python
Python实现EXCEL表格的排序功能示例
2019/06/25 Python
Python如何实现Paramiko的二次封装
2021/01/30 Python
在python3.9下如何安装scrapy的方法
2021/02/03 Python
python中threading和queue库实现多线程编程
2021/02/06 Python
英国在线自行车店:Merlin Cycles
2018/08/20 全球购物
毕业生物理教师求职信
2013/10/17 职场文书
求职自荐信
2013/12/14 职场文书
自行车租赁公司创业计划书
2014/01/28 职场文书
2014年小学元旦活动方案
2014/02/12 职场文书
司法建议书范文
2014/05/13 职场文书
乡领导班子四风问题对照检查材料
2014/09/25 职场文书
辞职信格式模板
2015/02/27 职场文书
宾馆客房管理制度
2015/08/06 职场文书
来探秘“德国中小企业”的成功之道
2019/07/26 职场文书
学习师德师风的心得体会(2篇)
2019/10/08 职场文书
分析Netty直接内存原理及应用
2021/06/14 Java/Android