欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

vue基于ElementUI動(dòng)態(tài)設(shè)置表格高度的3種方法

 更新時(shí)間:2025年02月01日 16:24:39   作者:樂動(dòng)小鍋蓋  
ElementUI+vue動(dòng)態(tài)設(shè)置表格高度的幾種方法,拋磚引玉,還有其它方法動(dòng)態(tài)設(shè)置表格高度,大家可以開動(dòng)腦筋

方法一、css + js的形式

這個(gè)方法需要在表格外層設(shè)置一個(gè)div,原理是將表格的高度設(shè)置成外層div的高度,所以外層的div需要使用calc來設(shè)置高度,然后給表格設(shè)置:height="tableH"的屬性

<div class="table-wrapper" ref="tableWrapper" v-loading="loading">
<el-table :data="tableData" stripe style="width: 100%" :height="tableH">
    <el-table-column
      prop="date"
      label="日期"
      width="180">
    </el-table-column>
    <el-table-column
      prop="name"
      label="姓名"
      width="180">
    </el-table-column>
    <el-table-column
      prop="address"
      label="地址">
    </el-table-column>
 </el-table>
</div>

外層div高度的設(shè)置方法

//這里減去的是你個(gè)人業(yè)務(wù)除了表格之外其他內(nèi)容的高度,比如查詢條件等
<style lang="scss" scoped>
.table-wrapper {
    height: calc(100% - 60px);
 }
</style>

態(tài)獲取表格高度tableH的方法

<script>
// 在data里面初始化tableH
data() {
      return {
         tableH: 0
      }
},
methods: {
  // 重置table高度
      resetHeight() {
        return new Promise((resolve, reject) => {
          this.tableH = 0
          resolve()
        })
      },
      // 設(shè)置table高度
      fetTableHeight() {
        this.resetHeight().then(res => {
          this.tableH = this.$refs.tableWrapper.getBoundingClientRect().height - 10
        })
      }
},
// 調(diào)用
 mounted() {
    this.fetTableHeight();
 }
</script>

方法二、純css的形式

還是需要在表格外加一層div,div高度設(shè)置和方法一相同,不過表格高度不用動(dòng)態(tài)設(shè)置,直接設(shè)置height="100%"即可

方法三、指令的形式

這種方法不需要設(shè)置外層div,定義一個(gè)文件夾tableHeight分別定義一個(gè)tableHeight.js和index.js
tableHeight.js如下

import { addResizeListener, removeResizeListener } from 'element-ui/src/utils/resize-event'

// 設(shè)置表格高度
const doResize = async (el, binding, vnode) => {
  // 獲取表格Dom對(duì)象
  const { componentInstance: $table } = await vnode
  // 獲取調(diào)用傳遞過來的數(shù)據(jù)
  const { value } = binding
  // if (!$table.height) {
  //   throw new Error(`el-$table must set the height. Such as height='100px'`)
  // }
  // console.log($table, '$table$table$table$table')
  // 獲取距底部距離(用于展示頁碼等信息)
  const bottomOffset = (value && value.bottomOffset) || 30
  if (!$table) return
  // 計(jì)算列表高度并設(shè)置
  const height = window.innerHeight - el.getBoundingClientRect().top - bottomOffset
  // $table.layout.setMaxHeight(height)
  $table.layout.setHeight(height)
  // $table.maxHeight = height
  $table.doLayout()
}

export default {
  // 初始化設(shè)置
  bind(el, binding, vnode) {
    // 設(shè)置resize監(jiān)聽方法
    el.resizeListener = async () => {
      await doResize(el, binding, vnode)
    }
    // 綁定監(jiān)聽方法到addResizeListener
    addResizeListener(window.document.body, el.resizeListener)
  },
  // // 綁定默認(rèn)高度
  async inserted(el, binding, vnode) {
    await doResize(el, binding, vnode)
  },
  // // 銷毀時(shí)設(shè)置
  unbind(el) {
    // 移除resize監(jiān)聽
    removeResizeListener(el, el.resizeListener)
  }
}

ndex.js如下

import tableHeight from './table-height'

const install = function(Vue) {
  // 綁定v-adaptive指令
  Vue.directive('tableHeight', tableHeight)
}

if (window.Vue) {
  window['tableHeight'] = tableHeight
  // eslint-disable-next-line no-undef
  Vue.use(install)
}

tableHeight.install = install

export default tableHeight

用方式,在main.js里面引入以便全局使用,當(dāng)然你也可以局部引入
main.js

// 這個(gè)是你剛剛寫的index.js的路徑
import tableHeight from '@sysmng/directive/tableHeight'
// 表格自適應(yīng)指令
Vue.use(tableHeight)

表格中使用

// 這里需要設(shè)置一個(gè)默認(rèn)的高度,多少都可以,然后后面的60就是除了表格之外其他內(nèi)容的高度,比如查詢條件等
// 指令的好處是會(huì)監(jiān)聽屏幕的變化來動(dòng)態(tài)改變高度
<el-table :data="tableData" stripe style="width: 100%" height="100px" v-tableHeight="{bottomOffset: 60}">
    <el-table-column
      prop="date"
      label="日期"
      width="180">
    </el-table-column>
    <el-table-column
      prop="name"
      label="姓名"
      width="180">
    </el-table-column>
    <el-table-column
      prop="address"
      label="地址">
    </el-table-column>
 </el-table>

以上就是vue基于ElementUI動(dòng)態(tài)設(shè)置表格高度的3種方法的詳細(xì)內(nèi)容,更多關(guān)于vue基于ElementUI動(dòng)態(tài)設(shè)置表格動(dòng)態(tài)高度的3種方法的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論