vue基于ElementUI動(dòng)態(tài)設(shè)置表格高度的3種方法
方法一、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)文章!
- Vue?+?ElementUI表格內(nèi)實(shí)現(xiàn)圖片點(diǎn)擊放大效果的兩種實(shí)現(xiàn)方式
- vue elementUI table表格自定義樣式滾動(dòng)效果
- Vue+ElementUI表格狀態(tài)區(qū)分,row-class-name屬性詳解
- vue+elementui 表格分頁限制最大頁碼數(shù)的操作代碼
- elementui實(shí)現(xiàn)表格(el-table)默認(rèn)選中功能
- vue elementUi+sortable.js實(shí)現(xiàn)嵌套表格拖拽問題
- Vue+ElementUI踩坑之動(dòng)態(tài)顯示/隱藏表格的列el-table-column問題
- 使用elementUI的表格table給列添加樣式
相關(guān)文章
微信小程序開發(fā)注意指南和優(yōu)化實(shí)踐(小結(jié))
這篇文章主要介紹了微信小程序開發(fā)注意指南和優(yōu)化實(shí)踐,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2019-06-06JS使用replace()方法和正則表達(dá)式進(jìn)行字符串的搜索與替換實(shí)例
這篇文章主要介紹了JS使用replace()方法和正則表達(dá)式進(jìn)行字符串的搜索與替換實(shí)例,需要的朋友可以參考下2014-04-04uniapp如何實(shí)現(xiàn)tabBar之間傳參
這篇文章主要給大家介紹了關(guān)于uniapp如何實(shí)現(xiàn)tabBar之間傳參的相關(guān)資料,文中通過代碼示例介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2023-08-08原生js和jQuery隨意改變div屬性style的名稱和值
用原生js和jQuery實(shí)現(xiàn)改變隨意改變div屬性style的名稱和值的結(jié)果,這個(gè)實(shí)例比較實(shí)用,新手朋友們可以看看2014-10-10JS實(shí)現(xiàn)圖片高斯模糊切換效果的焦點(diǎn)圖實(shí)例
這篇文章主要給大家介紹了利用原生JS如何實(shí)現(xiàn)圖片高斯模糊切換效果的焦點(diǎn)圖,文中給出了完整的實(shí)例代碼,相信對(duì)大家的理解和學(xué)習(xí)具有一定的參考借鑒價(jià)值,下面來一起看看吧。2017-01-01HTML中setCapture、releaseCapture 使用方法淺析
本文給大家簡單介紹了下html中的高級(jí)拖動(dòng)技術(shù)setCapture、releaseCapture的使用方法,有需要的小伙伴可以參考下2016-09-09初學(xué)js插入節(jié)點(diǎn)appendChild insertBefore使用方法
由于可見insertBefore()方法的特性是在已有的子節(jié)點(diǎn)前面插入新的節(jié)點(diǎn)但是兩種情況結(jié)合起來發(fā)現(xiàn)insertBefore()方法插入節(jié)點(diǎn),是可以在子節(jié)點(diǎn)列表的任意位置。2011-07-07JS倒計(jì)時(shí)實(shí)例_天時(shí)分秒
下面小編就為大家?guī)硪黄狫S倒計(jì)時(shí)實(shí)例_天時(shí)分秒。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-08-08