vue中多路由表头吸顶实现的几种布局方式


Posted in Javascript onApril 12, 2019

vue项目多路由表头吸顶实现的几种布局方式

因为项目较大,有五个界面,每个界面有四个子组件,每个子组件都有一个table表格,需求是每个界面的每个table滚动到顶端表头吸顶,所以尝试用vux做这种需求,

一、先聊js。

A.首先在vux可以这样设置。

1.在state文件中设置状态。

techo:{
 partsFixed:false,
 repairFixed:false,
 mateFixed:false,
 outRepairFixed:false
 }//吸顶状态

2.在action中commit状态。

export const setTecho=function ({commit},data) {
 commit(types.UPDATETECHO, {data})
}

3.mutations中更新状态。

[types.UPDATETECHO](state,{data}){
 const {name,type,other} =data;
 for (let i in state.techo) {
  if(i===name){
  state.techo[i]=other;
  state.techo[name]=type;
  }
 }
 }//更新吸顶状态

B.在界面中我们可以这样操作。

1、在methods中我们可以定义一个回调函数。

partScroll(){
 const evalPart = this.$refs.evalPart,//evalPart为表格对象
   evalTopTitle = document.querySelector('.fixedNav');//evalTopTitle为导航栏
 if(evalPart){
  let evalPartBottom = evalPart.getBoundingClientRect().bottom,
   evalPartTop = evalPart.getBoundingClientRect().top,
   evalTopTitleHeight = evalTopTitle.getBoundingClientRect().height;
  evalPartTop<=evalTopTitleHeight && evalPartBottom>=evalTopTitleHeight?
  this.$store.dispatch('setTecho',{name:"partsFixed",type:true,other:false})
  :this.$store.dispatch('setTecho',{name:"partsFixed",type:false,other:false});
 }
 },

  如果项目大,最好对函数进行封装放到全局混合。

scrollEvent(evalPart,evalTopTitle,name){
 if(evalPart){//注意一定要对表格对象进行判断,因为表格是动态添加的,可能值为空,会报错。
  let evalPartBottom = evalPart.getBoundingClientRect().bottom,
  evalPartTop = evalPart.getBoundingClientRect().top,
  evalTopTitleHeight = evalTopTitle.getBoundingClientRect().height;
  evalPartTop<=evalTopTitleHeight && evalPartBottom>=evalTopTitleHeight?
  this.$store.dispatch('setTecho',{name,type:true,other:false})
  :this.$store.dispatch('setTecho',{name,type:false,other:false});
 }
 },
partScroll(){
 const evalPart = this.$refs.evalPart,//evalPart为表格对象
  evalTopTitle = document.querySelector('.fixedNav');//evalTopTitle为导航栏
  this.scrollEvent(evalPart,evalTopTitle,'partsFixed')
}

2、在mouted里面进行滚动监听。

mounted(){
 window.addEventListener('scroll',this.partScroll);
}

3、最后记得在destroyed里面进行销毁。

destroyed () {
 window.removeEventListener('scroll', this.partScroll)
}

总结

以上所述是小编给大家介绍的vue中多路由表头吸顶实现的几种布局方式,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!
如果你觉得本文对你有帮助,欢迎转载,烦请注明出处,谢谢!

Javascript 相关文章推荐
Javascript类库的顶层对象名用户体验分析
Oct 24 Javascript
javascript解决innerText浏览器兼容问题思路代码
May 17 Javascript
js实现的折叠导航示例
Nov 29 Javascript
解析Javascript中大括号“{}”的多义性
Dec 02 Javascript
jQuery中document与window以及load与ready 区别详解
Dec 29 Javascript
高效利用Angular中内置服务$http、$location等
Mar 22 Javascript
jQuery Ajax 全局调用封装实例代码详解
Jun 02 Javascript
Javascript 6里的4个新语法
Aug 25 Javascript
详解a++和++a的区别
Aug 30 Javascript
seajs下require书写约定实例分析
May 16 Javascript
Layui弹框中数据表格中可双击选择一条数据的实现
May 06 Javascript
echarts浮动显示单位的实现方法示例
Dec 04 Javascript
Element-ui自定义table表头、修改列标题样式、添加tooltip、:render-header使用
Apr 11 #Javascript
如何检查一个对象是否为空
Apr 11 #Javascript
vue项目创建并引入饿了么elementUI组件的步骤
Apr 11 #Javascript
重学JS 系列:聊聊继承(推荐)
Apr 11 #Javascript
优雅的将ElementUI表格变身成树形表格的方法步骤
Apr 11 #Javascript
详解用场景去理解函数柯里化(入门篇)
Apr 11 #Javascript
Vue开发Html5微信公众号的步骤
Apr 11 #Javascript
You might like
关于Appserv无法打开localhost问题的解决方法
2009/10/16 PHP
Yii2 输出xml格式数据的方法
2016/05/03 PHP
Yii2框架实现登陆添加验证码功能示例
2018/07/12 PHP
PHP实现的无限分类类库定义与用法示例【基于thinkPHP】
2018/08/06 PHP
Laravel定时任务的每秒执行代码
2019/10/22 PHP
线路分流自动跳转代码;希望对大家有用!
2006/12/02 Javascript
THREE.JS入门教程(1)THREE.JS使用前了解
2013/01/24 Javascript
使用Grunt.js管理你项目的应用说明
2013/04/24 Javascript
情人节单身的我是如何在敲完代码之后收到12束玫瑰的(javascript)
2015/08/21 Javascript
jQuery实现摸拟alert提示框
2016/05/22 Javascript
json格式的javascript对象用法分析
2016/07/04 Javascript
jQuery表格(Table)基本操作实例分析
2017/03/10 Javascript
谈谈VUE种methods watch和compute的区别和联系
2017/08/01 Javascript
详解javascript中的babel到底是什么
2018/06/21 Javascript
微信小程序调用摄像头隐藏式拍照功能
2018/08/22 Javascript
vue根据值给予不同class的实例
2018/09/29 Javascript
详解Vue中使用Axios拦截器
2019/04/22 Javascript
vue的滚动条插件实现代码
2019/09/07 Javascript
webpack 如何同时输出压缩和未压缩的文件的实现步骤
2020/06/05 Javascript
深入了解Vue.js 混入(mixins)
2020/07/23 Javascript
解读Python中degrees()方法的使用
2015/05/18 Python
python os用法总结
2018/06/08 Python
Django objects的查询结果转化为json的三种方式的方法
2018/11/07 Python
Python GUI学习之登录系统界面篇
2019/08/21 Python
python的等深分箱实例
2019/11/22 Python
python dict如何定义
2020/09/02 Python
美国领先的医疗警报服务:Philips Lifeline
2018/03/12 全球购物
业务员岗位职责
2013/11/16 职场文书
大学生2014全国两会学习心得体会
2014/03/10 职场文书
作风年建设汇报材料
2014/08/14 职场文书
党的群众路线对照检查材料
2014/09/22 职场文书
出国签证在职证明范本
2014/11/24 职场文书
婚宴来宾致辞
2015/07/28 职场文书
2015年教师国培感言
2015/08/01 职场文书
创业计划书之便利店
2019/09/05 职场文书
MySQL sql_mode的使用详解
2021/05/08 MySQL