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 相关文章推荐
accesskey 提交
Jun 26 Javascript
一段实时更新的时间代码
Jul 07 Javascript
Javascript中常见的校验如域名、手机、邮箱等等
Jan 02 Javascript
window.open不被拦截的简单实现代码(推荐)
Aug 04 Javascript
自制微信公众号一键排版工具
Sep 22 Javascript
多种方式实现js图片预览
Dec 12 Javascript
JavaScript队列的应用实例详解【经典数据结构】
Apr 12 Javascript
JavaScript实现QQ列表展开收缩扩展功能
Oct 30 Javascript
jQuery实现轮播图效果
Nov 26 jQuery
JavaScript对象属性操作实例解析
Feb 04 Javascript
基于ant design日期控件使用_仅月份的操作
Oct 27 Javascript
vue如何在data中引入图片的正确路径
Jun 05 Vue.js
利用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修改Linux或Unix口令的方法分享
2012/01/30 PHP
php、mysql查询当天,查询本周,查询本月的数据实例(字段是时间戳)
2017/02/04 PHP
实例讲解PHP表单处理
2019/02/15 PHP
PHP中常用的三种设计模式详解【单例模式、工厂模式、观察者模式】
2019/06/14 PHP
使用新的消息弹出框blackbirdjs
2008/10/16 Javascript
JS获取整个页面文档的实现代码
2011/12/15 Javascript
jQuery实现tab标签自动切换的方法
2015/02/28 Javascript
详解参数传递四种形式
2015/07/21 Javascript
jQuery实现返回顶部按钮和scroll滚动功能[带动画效果]
2017/07/05 jQuery
angular2系列之路由转场动画的示例代码
2017/11/09 Javascript
vue 不使用select实现下拉框功能(推荐)
2018/05/17 Javascript
详解mpvue中小程序自定义导航组件开发指南
2019/02/11 Javascript
jQuery each和js forEach用法比较
2019/02/27 jQuery
JavaScript惰性载入函数实例分析
2019/03/27 Javascript
vue按需加载实例详解
2019/09/06 Javascript
微信js-sdk 录音功能的示例代码
2019/11/01 Javascript
[02:08:58]2014 DOTA2国际邀请赛中国区预选赛 Ne VS CIS
2014/05/22 DOTA
Python的Tornado框架异步编程入门实例
2015/04/24 Python
python修改操作系统时间的方法
2015/05/18 Python
使用Python读写文本文件及编写简单的文本编辑器
2016/03/11 Python
Python自然语言处理之词干,词形与最大匹配算法代码详解
2017/11/16 Python
Python及PyCharm下载与安装教程
2017/11/18 Python
使用python进行文本预处理和提取特征的实例
2018/06/05 Python
python中ASCII码字符与int之间的转换方法
2018/07/09 Python
Django 通过JS实现ajax过程详解
2019/07/30 Python
python实现canny边缘检测
2020/09/14 Python
Python爬虫如何破解JS加密的Cookie
2020/11/19 Python
探讨HTML5移动开发的几大特性(必看)
2015/12/30 HTML / CSS
.TTL是什么?有什么用处,通常那些工具会用到它?(ping? traceroute? ifconfig? netstat?)
2016/05/09 面试题
公司成本主管岗位责任制
2014/02/21 职场文书
党委班子对照检查材料
2014/08/19 职场文书
批评与自我批评总结
2014/10/17 职场文书
万能检讨书2000字
2014/10/17 职场文书
通用员工手册范本
2015/05/14 职场文书
让生命充满爱观后感
2015/06/08 职场文书
丧事酒宴答谢词
2015/09/30 职场文书