Element UI - 打开弹出框(el-dialog)页面会抖动是什么原因?

应用情景

当 dialog 出现时,页面右边缩小了 5px,看起来像是标题所说的抖动了一下。

解决方案

然后我看了一下页面的样式,发现 body 多了样式:padding-right: 5px 和 overflow: hidden。紧接着我就在全局设置 bodypadding-right: 0 !important 就好了~

### 关于 Element UI 弹出框的使用 #### 子组件中的窗实例 在 Vue 和 Element UI 组合使用的场景里,可以通过定义子组件来创建一个带有表单验证功能的窗。具体来说,在 `detail.vue` 文件中可以找到如下结构[^1]: ```vue <template> <el-dialog :visible.sync="dialogVisible"> <!-- 表单项 --> <el-form ref="form" :model="formData" label-width="80px"> <el-form-item label="活动名称" prop="name"> <el-input v-model="formData.name"></el-input> </el-form-item> ... </el-form> <span slot="footer" class="dialog-footer"> <el-button @click="closeDialog">取 消</el-button> <el-button type="primary" @click="submitForm('form')">确 定</el-button> </span> </el-dialog> </template> <script> export default { data() { return { dialogVisible: false, formData: {} }; }, methods: { closeDialog() { this.dialogVisible = false; }, submitForm(formName) { this.$refs[formName].validate((valid) => { if (valid) { alert('提交成功!'); this.closeDialog(); } else { console.log('错误提交!!'); return false; } }); } } }; </script> ``` #### 父组件调用方式 对于父级组件而言,则是在适当位置引入并注册该子组件,并提供必要的属性绑定以及事件监听逻辑。例如在 `Home.vue` 中有这样一段代码用于控制窗显示与否及其内部数据传递: ```vue <template> <div id="app"> <button @click="openDialog">打开详情页</button> <DetailComponent :visible.sync="isShow"/> </div> </template> <script> import DetailComponent from './components/detail'; export default { components: { DetailComponent }, data(){ return{ isShow:false } }, methods:{ openDialog(){ this.isShow=true; } } } </script> ``` #### 增加前置校验机制 为了确保用户体验良好,可以在触发窗展示之前加入一些简单的业务规则检验流程。比如当用户点击按钮准备开启对话时先执行某些条件判断,如果不符合预期则阻止其继续操作并给出相应提示信息。这方面的处理思路已经在实际案例中有过描述[^4]。 #### 使用 Popover 实现其他类型的浮层效果 除了标准意义上的模态窗口外,Element 还提供了另一种轻量级的选择——Popover(气泡卡片),适用于更灵活多变的应用场合。它允许开发者自定义触发器、内容区域乃至交互行为模式等细节设置[^3]。
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dream_Weave

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值