交换element-ui的MessageBox弹框的确定和取消位置

博主分享了在Element-UI中使用MessageBox组件时,如何通过自定义CSS和按钮类名来调整确定和取消按钮的位置,实现确定按钮前置的样式。

博主在使用element-ui的MessageBox弹框时发现默认的弹框是取消在前,确定在后,如图所示:
默认MessageBox弹框
博主并不喜欢这种样式,博主比较喜欢确定在前,取消在后的样式。于是在网上寻找改变按钮位置的方法,如下:

//按钮点击会触发addSubmit方法
<el-button type="primary" v-show="addOrEdit == 0" @click.native="addSubmit">提交</el-button>
//addSubmit会调用MessageBox弹框,cancelButtonClass为取消按钮的自定义类名
addSubmit(){
...
	this.$confirm("确认提交吗?", "提示", {
		cancelButtonClass: "btn-custom-cancel"
	})
...
}
//设置取消按钮向右浮动,左magin为10px,即与确定按钮间距为10px
.btn-custom-cancel {
  float: right;
  margin-left: 10px;
}

这样,就达到了交换确定和取消按钮的效果,如图所示:

修改后MessageBox弹框

<think>好的,我现在需要解决用户的问题:在Element UIMessageBox交换取消确定按钮的位置。让我先仔细看看用户提供的参考资料。 用户引用了几个相关的解决方法,其中大部分涉及到CSS样式的调整。比如引用[1]提到使用flex-direction: row-reverse来反转按钮顺序,而引用[3]也是类似的方法,但更详细地指定了类名作用域。引用[2][5]则是通过给取消按钮添加自定义类,然后用float或者margin调整位置。不过用户可能更倾向于全局的解决方案,而不是每个单独设置。 首先,我需要确认Element UIMessageBox组件结构。通常,按钮容器可能有类名如.el-message-box__btns,里面的按钮顺序是确定在前还是取消在前?根据引用[1][3],默认是取消在前,确定在后,所以需要反转顺序。使用Flex布局的row-reverse应该可以实现这一点。 接下来要考虑的是CSS的作用域。如果用户是在某个组件的scoped样式中添加,可能会因为scoped的限制导致样式不生效。这时候可能需要全局样式,或者在App.vue中引入,如引用[3]所示。需要提醒用户去掉scoped属性或者在全局样式文件中添加。 另外,用户可能有不同的类型,比如confirm、alert等,需要确保修改的样式适用于所有情况。检查引用中的示例,发现都是针对.el-message-box__btns类进行调整,这应该是通用的。 可能的步骤是:1. 使用Flex布局反转按钮顺序;2. 调整按钮间距;3. 注意样式的作用域。然后给出代码示例,并提醒用户全局样式的注意事项。同时,用户可能还想知道如何仅针对特定调整,这时候可以提到添加自定义类的方法,如引用[2][5]所示,但这可能更复杂。 需要验证这些方法是否有效,比如在浏览器中检查元素,确认类名是否正确,Flex是否应用成功。另外,检查是否有其他样式冲突,比如原有的float或margin可能影响布局,需要覆盖这些样式。 总结解决方案:通过全局CSS修改按钮容器的Flex方向为row-reverse,并调整按钮间距,确保样式正确应用。同时提供两种方式:全局修改单个自定义,但根据用户的问题,重点在交换位置,所以推荐全局方法。最后,生成相关问题,比如其他样式调整或不同组件的按钮顺序问题。</think>在 Element UI调整 MessageBox 的按钮位置,可通过以下两种方式实现: ### 方法一:全局样式调整(推荐) 1. **修改按钮容器布局** 在全局样式文件中添加 CSS 代码,通过 `flex-direction: row-reverse` 反转按钮顺序: ```css /* 全局样式文件或 App.vue */ .el-message-box__btns { display: flex; flex-direction: row-reverse; /* 反转按钮顺序 */ justify-content: flex-start; /* 左对齐 */ gap: 10px; /* 按钮间距 */ padding: 5px 15px 0; } ``` ```css /* 覆盖默认的按钮间距 */ .el-message-box__btns .el-button { margin-left: 0 !important; } ``` 2. **效果验证** 调用 `this.$confirm` 时,按钮将显示为**确定在前,取消在后**[^1][^3]。 --- ### 方法二:单个窗自定义(需逐个配置) 1. **添加自定义类名** 在调用窗时通过 `customClass` 注入样式: ```javascript this.$confirm('确认操作?', '提示', { confirmButtonText: '确定', cancelButtonText: '取消', customClass: 'custom-message-box' // 自定义类名 }) ``` ```css /* 局部样式(需去掉 scoped 或使用全局样式) */ .custom-message-box .el-message-box__btns { display: flex; flex-direction: row-reverse; } ``` --- ### 关键注意事项 1. **作用域问题** - 若使用 `<style scoped>`,需改为全局样式或通过 `::v-deep` 穿透: ```css ::v-deep .el-message-box__btns { ... } ``` 2. **兼容性测试** 需检查 Element UI 版本(不同版本类名可能微调)[^2][^5]。 ---
评论 15
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值