首页 > 其他分享 >vue指令方式实现element table高度随浏览器和部分dom变化适应

vue指令方式实现element table高度随浏览器和部分dom变化适应

时间:2022-10-31 18:34:49浏览次数:48  
标签:el style vue dom getElementsByClassName height table element document

主要代码

v-resize="resetTableHeight"
// 监听高度变化
resetTableHeight() {
  // 监听到searchArea高度变化使ivu-table-body高度发生改变
  if (document.getElementsByClassName('el-table__body-wrapper')[0]) {
    this.clientHeight = document.getElementsByClassName('searchArea')[0].clientHeight
    document.getElementsByClassName('el-table__body-wrapper')[0].style.height = `calc(100vh - ${this.clientHeight + 163}px)`
  }
},

使用,跟随searchArea区域变化而变化

    <div class="searchArea"  v-resize="resetTableHeight">
    </div>

methods方法

    // 监听高度变化
    resetTableHeight() {
      // 监听到searchArea高度变化使el-table__body-wrapper高度发生改变
      if (document.getElementsByClassName('el-table__body-wrapper')[0]) {
        this.clientHeight = document.getElementsByClassName('searchArea')[0].clientHeight
        document.getElementsByClassName('el-table__body-wrapper')[0].style.height = `calc(100vh - ${this.clientHeight + 163}px)`
      }
    },

utils创建工具

// 监听元素高度变化
//将该代码定义为一个js文件
let resize = {
  bind(el,binding) {
    let width = '', height = '';
    function isResize() {
      const style = document.defaultView.getComputedStyle(el);
      if (width !== style.width || height !== style.height) {
        binding.value();
      }
      width = style.width;
      height = style.height;
    }
    el._vueSetInterval_ = setInterval(isResize,100);
  },
  unbind(el) {
    clearInterval(el._vueSetInterval_);
  }
}
export default resize;

引入即可

 



标签:el,style,vue,dom,getElementsByClassName,height,table,element,document
From: https://www.cnblogs.com/myqinyh/p/16845300.html

相关文章

  • vue3 报错解决:找不到模块‘xxx.vue’或其相应的类型声明。(Vue 3 can not find module)
    在使用vuets语言开发项目的过程中,会遇到,导入vue文件后,提示 找不到模块‘xxx.vue’或其相应的类型声明。(Vue3cannotfindmodule)解决方式:在项目根目录新建一个......
  • vue-cli项目中,rouer-link点击后无效
    昨日,重构我的vue-cli项目,但是在使用router-link时发现,无论如何点击其都不起反应。症状:鼠标左键点击无效鼠标移上后,(谷歌)浏览器左下角正常显示链接网址网页解析正常,​​<route......
  • vue-cli项目报错:Maximum call stack size exceeded
    ​​Maximumcallstacksizeexceeded​​这个错误,看得出是说调用栈溢出,一般来说自己的代码不至于让调用栈溢出吧,所以这个错误往往是因为循环调用而导致的一种调用循环。即......
  • Echarts——VUE中非根节点时不显示图表也无报错
    前言因为之前的封装都是直接作为根节点封装的,使用this.$el,非根组件的时候使用this.$refs.xx指定即可内容简写<divref="container":id="id"style="height:165px;......
  • element-ui el-table 开发环境 无法渲染,无法显示的问题
    其他vue项目正常,html环境正常,生产环境正常。只有开发环境无法渲染。试过切换element-ui的版本。依然没有作用。 最终排查的原因是vue.config.js下面的这段代码出......
  • vue进阶
    1计算属性#如果{{函数()}},每次页面刷新,函数都会重新执行#函数---》当属性来使用,缓存<!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8">......
  • 关于vue项目中用户手动刷新,页面回到初始状态的问题
    当点击个人中心后手动刷新页面,下标会回到默认的首页下方此时可以通过vuex+localStorage来解决  在store目录下新建header.js ......
  • vue路由守卫
    路由守卫有三种:1:全局钩子:beforeEach、afterEach2:独享守卫(单个路由里面的钩子):beforeEnter、beforeLeave3:组件内守卫:beforeRouteEnter、beforeRouteUpdate、beforeRout......
  • [Vue]npm创建vue环境
    1.vite创建vue环境[root@PythonVue]#npminitvite@latestNeedtoinstallthefollowingpackages:[email protected]?(y)✔Projectname:…......
  • vue条件渲染
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><metahttp-e......