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 相关文章推荐
多浏览器兼容性比较好的复制到剪贴板的js代码
Oct 09 Javascript
Jquery和JS用外部变量获取Ajax返回的参数值的方法实例(超简单)
Jun 17 Javascript
jQuery插件实现文字无缝向上滚动效果代码
Feb 25 Javascript
Jq通过td获取同行其它列td的方法
Oct 05 Javascript
js数字舍入误差以及解决方法(必看篇)
Feb 28 Javascript
jQuery实现的下雪动画效果示例【附源码下载】
Feb 02 jQuery
Vue.directive使用注意(小结)
Aug 31 Javascript
微信小程序登录session的使用
Mar 17 Javascript
vue 中 beforeRouteEnter 死循环的问题
Apr 23 Javascript
快速对接payjq的个人微信支付接口过程解析
Aug 15 Javascript
layer.alert自定义关闭回调事件的方法
Sep 27 Javascript
Vue toFixed保留两位小数的3种方式
Oct 23 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
PHP CURL模拟登录新浪微博抓取页面内容 基于EaglePHP框架开发
2012/01/16 PHP
用Json实现PHP与JavaScript间数据交换的方法详解
2013/06/20 PHP
php实现数组筛选奇数和偶数示例
2014/04/11 PHP
PHP轻量级数据库操作类Medoo增加、删除、修改、查询例子
2014/07/04 PHP
PHP获取一年有几周以及每周开始日期和结束日期
2015/08/06 PHP
php处理json格式数据经典案例总结
2016/05/19 PHP
PHP使用FFmpeg获取视频播放总时长与码率等信息
2016/09/13 PHP
PHP单例模式与工厂模式详解
2017/08/29 PHP
经常用的图片在容器中的水平垂直居中实例
2007/06/10 Javascript
Js 订制自己的AlertBox(信息提示框)
2009/01/09 Javascript
jQuery中:focus选择器用法实例
2014/12/30 Javascript
Javascript核心读书有感之语句
2015/02/11 Javascript
简单实现异步编程promise模式
2015/07/31 Javascript
jQuery实现滚动鼠标放大缩小图片的方法(附demo源码下载)
2016/03/05 Javascript
EasyUI修改DateBox和DateTimeBox的默认日期格式示例
2017/01/18 Javascript
原生js获取浏览器窗口及元素宽高常用方法集合
2017/01/18 Javascript
通过构造函数实例化对象的方法
2017/06/28 Javascript
浅谈jquery中ajax跨域提交的时候会有2次请求的问题
2017/11/10 jQuery
AngularJs用户输入动态模板XSS攻击示例详解
2018/04/21 Javascript
angular2组件中定时刷新并清除定时器的实例讲解
2018/08/31 Javascript
Vue-不允许嵌套式的渲染方法
2018/09/13 Javascript
通过说明与示例了解js五种设计模式
2019/06/17 Javascript
使用axios发送post请求,将JSON数据改为form类型的示例
2019/10/31 Javascript
json_decode 索引为数字时自动排序问题解决方法
2020/03/28 Javascript
解决vue路由name同名,路由重复的问题
2020/08/05 Javascript
[12:29]2018国际邀请赛 开幕秀
2018/08/22 DOTA
python 删除大文件中的某一行(最有效率的方法)
2017/08/19 Python
Python将多份excel表格整理成一份表格
2018/01/03 Python
使用python itchat包爬取微信好友头像形成矩形头像集的方法
2019/02/21 Python
简单了解django orm中介模型
2019/07/30 Python
Pycharm安装python库的方法
2020/11/24 Python
欧缇丽美国官网:Caudalie美国
2016/12/31 全球购物
德国Discount-Apotheke中文官网:DC德式康线上药房
2020/02/18 全球购物
承诺保证书格式
2015/02/28 职场文书
2015年学校心理健康教育工作总结
2015/05/11 职场文书
雷锋的故事观后感
2015/06/10 职场文书