vue基于ElementUI動(dòng)態(tài)設(shè)置表格高度的3種方法
方法一、css + js的形式
這個(gè)方法需要在表格外層設(shè)置一個(gè)div,原理是將表格的高度設(shè)置成外層div的高度,所以外層的div需要使用calc來(lái)設(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è)置和方法一相同,不過(guò)表格高度不用動(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)用傳遞過(guò)來(lái)的數(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')
// 獲取距底部距離(用于展示頁(yè)碼等信息)
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)聽屏幕的變化來(lái)動(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 表格分頁(yè)限制最大頁(yè)碼數(shù)的操作代碼
- elementui實(shí)現(xiàn)表格(el-table)默認(rèn)選中功能
- vue elementUi+sortable.js實(shí)現(xiàn)嵌套表格拖拽問(wèn)題
- Vue+ElementUI踩坑之動(dòng)態(tài)顯示/隱藏表格的列el-table-column問(wèn)題
- 使用elementUI的表格table給列添加樣式
相關(guān)文章
微信小程序開發(fā)注意指南和優(yōu)化實(shí)踐(小結(jié))
這篇文章主要介紹了微信小程序開發(fā)注意指南和優(yōu)化實(shí)踐,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-06-06
JS使用replace()方法和正則表達(dá)式進(jìn)行字符串的搜索與替換實(shí)例
這篇文章主要介紹了JS使用replace()方法和正則表達(dá)式進(jìn)行字符串的搜索與替換實(shí)例,需要的朋友可以參考下2014-04-04
uniapp如何實(shí)現(xiàn)tabBar之間傳參
這篇文章主要給大家介紹了關(guān)于uniapp如何實(shí)現(xiàn)tabBar之間傳參的相關(guān)資料,文中通過(guò)代碼示例介紹的非常詳細(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-10
JS實(shí)現(xiàn)圖片高斯模糊切換效果的焦點(diǎn)圖實(shí)例
這篇文章主要給大家介紹了利用原生JS如何實(shí)現(xiàn)圖片高斯模糊切換效果的焦點(diǎn)圖,文中給出了完整的實(shí)例代碼,相信對(duì)大家的理解和學(xué)習(xí)具有一定的參考借鑒價(jià)值,下面來(lái)一起看看吧。2017-01-01
HTML中setCapture、releaseCapture 使用方法淺析
本文給大家簡(jiǎn)單介紹了下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é)合起來(lái)發(fā)現(xiàn)insertBefore()方法插入節(jié)點(diǎn),是可以在子節(jié)點(diǎn)列表的任意位置。2011-07-07
JS倒計(jì)時(shí)實(shí)例_天時(shí)分秒
下面小編就為大家?guī)?lái)一篇JS倒計(jì)時(shí)實(shí)例_天時(shí)分秒。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08

