//廢話補多說,先上代碼
methods: { //計算table高度 _getTableHeight() { let tableH = 280 let tableHeightDetil = window.innerHeight - tableH if (tableHeightDetil <= 300) { this.tableHeight = 300 } else { this.tableHeight = window.innerHeight - tableH } } }
然后是頁面初始的:
created() {
//頁面加載完畢計算高度
this._getTableHeight()
},
//掛載window.onresize事件
mounted() {
let _this = this
window.onresize = () => {
if (_this.resizeFlag) {
clearTimeout(_this.resizeFlag)
}
_this.resizeFlag = setTimeout(() => {
_this._getTableHeight()
_this.resizeFlag = null
}, 100)
}
},
// 注銷window.onresize事件
beforeRouteLeave(to, from, next) {
//離開組件的時候觸發
window.onresize = null
next()
},
最后是html處
<el-table
:data="branchBankList"
stripe
//這里開始(element組件里的,不懂看官網)
v-if="tableHeight"
:height="tableHeight"
//這里結束
border
:header-cell-style="{backgroundColor:'#f7f6fd'}"
empty-text=' '
>
不要忘了在data里面把tableHeight給加上.
目前就這些,實現的功能是 頁面加載自動計算高度,減的tableH是距離底部的高度.因為底部一般有分頁或者操作按鈕等東西,所以只能自己輸入自己調試,有更好的方法的歡迎私信.評論.
當瀏覽器窗口大小改變的時候,會調用計算方法,來實時改變table高度.並設置有最低高度,防止瀏覽器高度太窄使table頁看不到的情況,
為了增加性能,要在離開當前頁面的時候自動銷毀onresize方法,防止誤觸發,因為我們用的是keep-alive,不會觸發Destroyed這個生命周期,所以使用beforeRouteLeave來觸發銷毀操作.有什么問題及建議歡迎評論.
