一、基本概念
1、elementui dialog 是一種彈窗組件。它可以在頁面中彈出一段對話框,用於展示信息或進行操作。
2、高度自適應是指dialog的高度根據內容自動調整,不會出現高度過高或過低的情況。
3、通常情況下,為了使dialog高度自適應,需要進行一些特殊的設置。
二、實現方法
方案一:使用flex布局自動調整高度
1、在需要使用dialog的地方,先進行樣式設置
.el-dialog__body {
display: flex;
flex-direction: column;
}
2、在使用dialog組件時,設置一個最小高度(例如200px)
<el-dialog
title="提示"
:visible.sync="dialogVisible"
:style="{minHeight: '200px'}">
<p>這是一段內容</p>
<p>這是一段內容</p>
<p>這是一段內容</p>
</el-dialog>
3、當內容比較多時,dialog會自動根據內容調整高度
方案二:使用JavaScript計算高度
1、在使用dialog組件時,綁定ref屬性
<el-dialog
title="提示"
:visible.sync="dialogVisible"
ref="dialog">
<p>這是一段內容</p>
<p>這是一段內容</p>
<p>這是一段內容</p>
</el-dialog>
2、在mounted鉤子函數中,計算dialog實際高度
mounted() {
const height = this.$refs.dialog.$el.offsetHeight;
// 設置最小高度
this.$refs.dialog.$el.style.minHeight = height + 'px';
}
3、當內容比較多時,dialog會自動根據內容調整高度
方案三:使用slot-scope計算高度
1、在使用dialog組件時,使用slot-scope來訪問dialog實例
<el-dialog
title="提示"
:visible.sync="dialogVisible"
:model="$index"
v-for="(item, index) in list"
:key="item.id">
<template slot-scope="{ $dialog }">
<p v-for="i in 10">這是一段內容</p>
<p>這是一段內容</p>
...
</template>
</el-dialog>
2、使用watch監聽dialog的顯示狀態,根據實際高度設置容器高度
watch: {
'dialogVisible'(val) {
if (val) {
// 等待dom重新渲染
this.$nextTick(() => {
const height = $dialog.$el.offsetHeight;
$dialog.$el.style.height = height + 'px';
});
}
}
}
3、當內容比較多時,dialog會自動根據內容調整高度
三、總結
根據具體需求,可以選擇不同的方法來實現dialog的高度自適應。具體實現方法如上所述,希望能夠對大家有所幫助。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/240347.html