vue3.0 ant design 表格固定表頭和高度自適應
阿新 • • 發佈:2021-06-18
ant官方提供 :scroll="{ x: num, y: num }" 來設定表格的高度和寬度,可實際開發中有表格隨視窗的高度變化而改變的。所以通過不斷嘗試,終於找到了一個解決辦法,在此記錄下。
官方固定表頭:https://2x.antdv.com/components/table-cn/#components-table-demo-fixed-header
步驟:
1、設定:scroll="{ x: 'calc(700px + 50%)', y: tableHeight }",y引數tableHeight是一個變數,由window.onresize計算,但是變數改變並不會使表格重新渲染,所以只能一次性賦值
export default {
data(){
return{
tableHeight : document.documentElement.clientHeight - 260 + 'px'
}
},
mounted () {
/** 控制table的高度 */
window.onresize = function () {
tableHeight = document.documentElement.clientHeight - 260 + 'px'
}
}
}
設定之後我們可以看到,渲染出來的標籤多了一個行內樣式
2、加上以下樣式,其中v-bind()是vue3.0的css中獲取js引數語法,參照: https://github.com/vuejs/rfcs/pull/231
&:deep(.ant-table-body) {
max-height:v-bind(tableHeight) !important;
}
&:deep(.ant-table-body-inner) {
max-height:v-bind(tableHeight) !important;
}
另外ant表格字會換行,有時會導致佈局錯亂,加上以下解決
&:deep(.ant-table-thead) > tr > th { white-space: nowrap !important;// 防止IE等瀏覽器不支援'max-content'屬性 導致內容換行 }
總結:利用vue3.0 v-bind()直接修改ant某些標籤類樣式,從而達到預期效果。
注意:tableHeight引數貌似只能設在data上,setup會找不到引數。高度減/加多少,根據自己專案實際情況除錯,最好分頁欄和表格內容分開,使用flex佈局