elementplus根据弹窗高度设置table高度

弹窗里要放一个table表格,表格高度跟随弹窗高度的变化而变化。

代码如下:

javascript 复制代码
<template>
	<el-dialog ref="lookDialogRef" v-model="dialogLook.visible" :title="dialogLook.title" width="1000px" append-to-body @close="closeDialog" @open="openDialog">
		<el-table :data="tableData" :height="dialogHeight">
	        <el-table-column v-if="true" label="编号" align="center" prop="code" />
	        <el-table-column v-if="true" label="姓名" align="center" prop="name" />
	        <el-table-column v-if="true" label="年龄" align="center" prop="age" />
	    </el-table>
	</el-dialog>
</template>

<script setup lang="ts">
const dialogHeight = ref('200px')
const lookDialogRef = ref(null)
const lookDialog = () => {
    console.log(lookDialogRef.value.$el.querySelector('.el-dialog__body'))
}
onMounted(() => {
    window.onresize = () => {
        dialogLook.visible && lookDialog()
    }
})
</script>
            

报错如下:

原因:写法有问题。

javascript 复制代码
//少写了一个dialogContentRef
console.log(lookDialogRef.value.dialogContentRef.$el.querySelector('.el-dialog__body'))

知识点:

‌ElementPlus中的dialogContentRef是一个引用(ref),用于获取`el-dialog组件内部的具体DOM元素,特别是对话框的内容区域。‌

在ElementPlus中,el-dialog组件提供了dialogContentRef属性,通过这个属性可以获取到对话框内容的DOM元素。这在进行一些自定义操作时非常有用,比如动态设置对话框内容的高度、宽度或者进行其他DOM操作。

最终代码:(获取元素可视高度)

javascript 复制代码
<template>
	<el-dialog ref="lookDialogRef" v-model="dialogLook.visible" :title="dialogLook.title" width="1000px" append-to-body @close="closeDialog" @open="openDialog">
		<el-table :data="tableData" :height="tableHeight">
	        <el-table-column v-if="true" label="编号" align="center" prop="code" />
	        <el-table-column v-if="true" label="姓名" align="center" prop="name" />
	        <el-table-column v-if="true" label="年龄" align="center" prop="age" />
	    </el-table>
	</el-dialog>
</template>

<script setup lang="ts">
const tableHeight = ref('200px')
const lookDialogRef = ref(null)
const openDialog = () => {
    nextTick(() => {
        let h = lookDialogRef.value.dialogContentRef.$el.querySelector('.el-dialog__body').clientHeight - 130
        tableHeight.value = h + 'px'
    })
}
onMounted(() => {
    window.onresize = () => {
       dialogLook.visible && openDialog()
    }
})
</script>

注:

javascript 复制代码
// 获取实际高度(包括padding和border)
const actualHeight = element.offsetHeight;

// 获取可视高度(不包括滚动条)
const visualHeight = element.clientHeight;
相关推荐
eric-sjq3 小时前
10 分钟实战:用 0.6B 本地模型生成中文网页(WanlyFrontend + 编译器全流程)
javascript·机器学习·自然语言处理·html
To_OC3 小时前
LC 438 找到所有字母异位词:暴力超时后,我靠滑动窗口一招搞定
javascript·算法·leetcode
90后的晨仔3 小时前
Mac 开发 uni-app 终极方案:让安卓模拟器彻底脱离 Android Studio 独立运行
前端·vue.js
kyriewen4 小时前
面试官问"这段逻辑为什么这样写"——我才发现,这半年我写的代码,我自己都解释不了
前端·javascript·面试
一壶浊酒..5 小时前
Scrape Webpack练习
开发语言·javascript·webpack
默_笙8 小时前
⛵ 我用 React + TS 做了个"调色盘",顺便学会了企业级项目的目录架构
前端·javascript
渣波8 小时前
拒绝 Redux 样板代码:Zustand 核心原理与实战进阶指南(基础、异步与切片模式)
前端·javascript
C++、Java和Python的菜鸟9 小时前
第12章 前端Web进阶(Vue工程化+ElementPlus)
前端·javascript·vue.js
妙码生花9 小时前
让各大 AI 整理出来的前端工程命名最简实践(Vue + TS)
前端·javascript·vue.js
郭wes代码11 小时前
纯 CSS+JS 实战:手搓一张支持自定义的通用金色电子奖状(万字详细拆解)
前端·javascript·css