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 相关文章推荐
一个收集图片的bookmarlet(js 刷新页面中的图片)
May 27 Javascript
jQuery 自定义函数写法分享
Mar 30 Javascript
js新闻滚动 js如何实现新闻滚动效果
Jan 07 Javascript
JavaScript实现梯形乘法表的方法
Apr 25 Javascript
javascript实现连续赋值
Aug 10 Javascript
jQuery遍历节点树方法分析
Sep 08 Javascript
使用Vue写一个datepicker的示例
Jan 27 Javascript
video.js 一个页面同时播放多个视频的实例代码
Nov 27 Javascript
使用Easyui实现查询条件的后端传递并自动刷新表格的两种方法
Sep 09 Javascript
Node.js API详解之 Error模块用法实例分析
May 14 Javascript
JavaScript通如何过RGraph实现动态仪表盘
Oct 15 Javascript
JS highcharts动态柱状图原理及实现
Oct 16 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 和 XML: 使用expat函数(二)
2006/10/09 PHP
关于mysql 字段的那个点为是定界符
2007/01/15 PHP
浅谈PHP各环境下的伪静态配置
2019/03/13 PHP
JS中实现replaceAll的方法(实例代码)
2013/11/12 Javascript
浅析jquery ajax异步调用方法中不能给全局变量赋值的原因及解决方法
2014/01/10 Javascript
javascript去除字符串中所有标点符号和提取纯文本的正则
2014/06/07 Javascript
Javascript学习笔记之 对象篇(三) : hasOwnProperty
2014/06/24 Javascript
js style动态设置table高度
2014/10/21 Javascript
javascript显示中文日期的方法
2015/06/18 Javascript
原生js与jQuery实现简单的tab切换特效对比
2015/07/30 Javascript
JS实现网页Div层Clone拖拽效果
2015/09/26 Javascript
JavaScript数组合并的多种方法
2016/05/22 Javascript
Ext JS动态加载JavaScript创建窗体的方法
2016/06/23 Javascript
js仿小米官网图片轮播特效
2016/09/29 Javascript
js选项卡的制作方法
2017/01/23 Javascript
JS实现经典的中国地区三级联动下拉菜单功能实例【测试可用】
2017/06/06 Javascript
JavaScript对象_动力节点Java学院整理
2017/06/23 Javascript
Angular4绑定html内容出现警告的处理方法
2017/11/03 Javascript
JS实现的判断方法、变量是否存在功能示例
2020/03/28 Javascript
vue.js动画中的js钩子函数的实现
2018/07/06 Javascript
layui结合form,table的全选、反选v1.0示例讲解
2018/08/15 Javascript
JS函数节流和防抖之间的区分和实现详解
2019/01/11 Javascript
vue webpack build资源相对路径的问题及解决方法
2020/06/04 Javascript
vue 使用post/get 下载导出文件操作
2020/08/07 Javascript
[01:27:44]DOTA2-DPC中国联赛 正赛 PSG.LGD vs Aster BO3 第一场 1月24日
2021/03/11 DOTA
Python使用random和tertools模块解一些经典概率问题
2015/01/28 Python
python简单猜数游戏实例
2015/07/09 Python
Python在Console下显示文本进度条的方法
2016/02/14 Python
Python 中的range(),以及列表切片方法
2018/07/02 Python
Pycharm 设置默认头的图文教程
2019/01/17 Python
在tensorflow实现直接读取网络的参数(weight and bias)的值
2020/06/24 Python
解决Python 写文件报错TypeError的问题
2020/10/23 Python
python 删除系统中的文件(按时间,大小,扩展名)
2020/11/19 Python
Casadei卡萨蒂官网:意大利奢侈鞋履品牌
2017/10/28 全球购物
高三自我鉴定范文
2013/10/19 职场文书
九年级语文教学反思
2016/03/03 职场文书