场景:一个list展示列表,点击每条列表信息的详情按钮,可以弹出el-dialog弹出框用来展示信息详情。
我要的效果:
我在给详情页面内容添加el-scrollbar滚动条时,无论怎么该都不出效果,我一度怀疑是我添加代码时添加错了,代码如下:
<el-dialog class="complainInfo" :visible.sync="openView" width="900px" append-to-body>
<div class="section-title" slot="title">
<div class="verticalBar"> </div>
XXXXXX
</div>
<el-scrollbar style="height: 100%">
<el-form action="">
<!-- 表单内容 -->
......
</el-form>
</el-scrollbar>
</el-dialog>
.complainInfo .el-dialog__body {
height: 700px;
}
后来查了百度,在一篇 文章 找到了问题所在和解决办法,但是并没有说明原因。
- 问题所在:append-to-body属性,导致内层弹框样式设置不上
- 解决办法:去除 append-to-body 属性
最终效果:
ElementUI 官方文档解释说append-to-body:
Dialog 自身是否插入至 body 元素上。嵌套的 Dialog 必须指定该属性并赋值为 true
在嵌套Dialog场景中,将内层 Dialog 的该属性设置为 true,它就会插入至 body 元素上,从而保证内外层 Dialog 和遮罩层级关系的正确
这样原因就出来了:
设置了append-to-body属性的el-dialog是挂载到body上的,不在.complainInfo父级样式的控制下