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 相关文章推荐
jQuery根据纬度经度查看地图处理程序
May 08 Javascript
javascript中处理时间戳为日期格式的方法
Jan 02 Javascript
为jQuery添加Webkit的触摸的方法分享
Feb 02 Javascript
ExtJS 刷新后如何默认选中刷新前最后一次选中的节点
Apr 03 Javascript
jQuery 隐藏和显示 input 默认值示例
Jun 03 Javascript
jQuery中:button选择器用法实例
Jan 04 Javascript
JS实现判断碰撞的方法
Feb 11 Javascript
基于jQuery实现的QQ表情插件
Aug 25 Javascript
使用jQuery.Qrcode插件在客户端动态生成二维码并添加自定义Logo
Sep 01 Javascript
原生js+cookie实现购物车功能的方法分析
Dec 21 Javascript
Bootstrap-table自定义可编辑每页显示记录数
Sep 07 Javascript
react ant Design手动设置表单的值操作
Oct 31 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运行出现Call to undefined function curl_init()的解决方法
2010/11/02 PHP
php中转义mysql语句的实现代码
2011/06/24 PHP
php预定义变量使用帮助(带实例)
2013/10/30 PHP
yii 2.0中表单小部件的使用方法示例
2017/05/23 PHP
不错的asp中显示新闻的功能
2006/10/13 Javascript
改版了网上的一个js操作userdata
2007/04/27 Javascript
javascript与asp.net(c#)互相调用方法
2009/12/13 Javascript
微信浏览器内置JavaScript对象WeixinJSBridge使用实例
2015/05/25 Javascript
Node.js事件驱动
2015/06/18 Javascript
基于javascript实现动态时钟效果
2020/08/18 Javascript
图解prototype、proto和constructor的三角关系
2016/07/31 Javascript
详解AngularJS中$filter过滤器使用(自定义过滤器)
2017/02/04 Javascript
angularjs中的$eval方法详解
2017/04/24 Javascript
JavaScript自执行函数和jQuery扩展方法详解
2017/10/27 jQuery
nginx部署访问vue-cli搭建的项目的方法
2018/02/12 Javascript
详解Vue CLI3配置解析之css.extract
2018/09/14 Javascript
vue2.0+vue-router构建一个简单的列表页的示例代码
2019/02/13 Javascript
深入理解 Python 中的多线程 新手必看
2016/11/20 Python
django模板语法学习之include示例详解
2017/12/17 Python
Python实现PS图像调整黑白效果示例
2018/01/25 Python
Python读取系统文件夹内所有文件并统计数量的方法
2018/10/23 Python
python使用KNN算法识别手写数字
2019/04/25 Python
Python字节单位转换实例
2019/12/05 Python
python主线程与子线程的结束顺序实例解析
2019/12/17 Python
python requests模拟登陆github的实现方法
2019/12/26 Python
python爬虫模拟浏览器访问-User-Agent过程解析
2019/12/28 Python
20行Python代码实现视频字符化功能
2020/04/13 Python
python爬虫容易学吗
2020/06/02 Python
html5 touch事件实现页面上下滑动效果【附代码】
2016/03/10 HTML / CSS
机电一体化自荐信
2013/12/10 职场文书
市政施工员自我鉴定
2014/01/15 职场文书
质量保证书范本
2014/04/29 职场文书
2015年中职班主任工作总结
2015/05/25 职场文书
婚礼迎宾词大全
2015/08/10 职场文书
全民创业工作总结
2015/08/13 职场文书
Python 批量下载阴阳师网站壁纸
2021/05/19 Python