el-dialog对话框自适应高度,仅body内容部分滚动

项目背景:

        需求是,在触发各节点时,要显示当前节点下各时间点对应的订单量,并以表格形式表现。如图所示:

前期:

引入element ui 基本可以满足大部分的样式。

 第一次使用el-popover+el-table组合,发现table无法适配原始页面,不会随机型大小进行缩放适配。超出了屏幕范围。但调试无果。

第二次,选择了el-dialog+el-table结合使用。

使用dialog的过程中,也是出现了适配问题,dialog高度需要做适配。于是,通过定义以下样式,进行适配:

.pub_dialog {
    display: flex;
    justify-content: center;
    align-items: Center;
    overflow: hidden;
    .el-dialog {
        margin: 0 auto !important;
        height: 90%;
        overflow: hidden;
        .el-dialog__body {
            position: absolute;
            left: 0;
            top: 54px;
            bottom: 0;
            right: 0;
            padding: 0;
            z-index: 1;
            overflow: hidden;
            overflow-y: auto;
        }
    }
}

el-dialog标签中设置class="pub_dialog"即可。

弹窗为页面高度的90%,且上下居中。

el-dialog__body内容部分会根据内容的高度,自动显示上下的滚动条。

如上转载自:https://www.mybj123.com/5131.html

经过以上,dialog能够适配整个页面,但是多个机型测试,发现屏幕小的机型中,当表格下拉列表过长时,表格长度超出了dialog的长度。如图:

这样的结果还会影响那个机型的下拉,下拉不到底,且滑动效果是滑动的当前弹框后边的主页面。

先解决这个超出长度的问题:

在dialog中添加表格,但是表格数据过多时,弹框会被拉长。然后就想设置表格内容滚动。但尝试修改table自身的高度,发现就算改了,当列表加长的时候,还是会超出。并没有控制住。

如上解决方案:

/deep/.el-dialog__body {
  height: 70vh;overflow: auto;
}

vh:1vh等于视口高度的1%  补充:css3自适应布局单位vw,vh详解

通过添加以上控制,发现可以将表格控制再dialog中通过滚动条实现滑动查看数据的效果了。

至此,整个需求算是基本完成了。

但是存在另外也兼容问题就是,iPhone7机型或者系统,在使用以上办法时,操作滚动条,会导致内部页面跟着滚动。

这个问题暂时还没有解决,保留,

  • 7
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
在Vue中,el-dialog组件的高度可以通过设置其style属性来自适应。以下是一种常见的方法: 1. 首先,确保你已经在Vue项目中引入了el-dialog组件。 2. 在el-dialog组件中,设置一个data属性来存储对话框高度,例如: ```vue <template> <el-dialog :visible.sync="dialogVisible" :style="{ height: dialogHeight }"> <!-- 对话框内容 --> </el-dialog> </template> <script> export default { data() { return { dialogVisible: false, dialogHeight: 'auto', // 初始高度设置为auto }; }, }; </script> ``` 3. 接下来,根据需要来动态计算对话框高度。你可以使用Vue的生命周期钩子函数或者监听属性的变化来实现。下面是一个示例: ```vue <script> export default { data() { return { dialogVisible: false, dialogHeight: 'auto', }; }, methods: { calculateDialogHeight() { // 假设你有一些需要参考的DOM元素,可以通过获取其高度来计算对话框高度 const referenceElement = document.getElementById('reference-element'); if (referenceElement) { const referenceElementHeight = referenceElement.offsetHeight; // 根据需要进行高度的计算 this.dialogHeight = `${referenceElementHeight}px`; } }, }, mounted() { this.calculateDialogHeight(); // 初始化时计算高度 }, }; </script> ``` 在这个示例中,我们假设有一个ID为'reference-element'的DOM元素作为参考,并获取其高度来计算对话框高度。你可以根据实际需求来替换这部分代码。 通过以上步骤,你就可以实现el-dialog组件的高度自适应了。当参考元素的高度发生变化时,对话框高度也会相应地进行调整。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值