vue3的element-plus的el-dialog的样式加上scoped发现:deep()不再生效解决方案

文章讲述了在Vue项目中使用ElementUI的el-dialog组件时,如何在append-to-body属性开启的情况下设置弹窗头部和主体的padding为0。通过添加自定义类名custom-class和使用scoped样式,或者包裹el-dialog在一个div内来实现样式生效的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  • 想要将 弹框 el-dialog__header .el-dialog__body 的padding值设为0,但是

官网解释 :Dialog 自身是否插入至 body 元素上。嵌套的 Dialog 必须指定该属性并赋值为 true

代码如下: (加上scoped,样式不生效)

<style lang="scss">
:deep( .el-dialog ){
  	 	 .el-dialog__header{
 		   padding: 0 ;
		}
	 .el-dialog__header + .el-dialog__body{
  		  padding: 0 ;                 
	 }
	 .el-dialog__body{
  		  padding: 0 ;
 	 }
}
</style>

解决方案: 弹框加上 自定义类名 custom-class

 <template>
 		<el-dialog v-model="visible" append-to-body    custom-class="dialog-class">    </el-dialog>
 </template>
---------------------------------------------------
<style lang="scss">
	.dialog-class{
 	   border-radius: 12px;
  	  .el-dialog__header{
 		   padding: 0 ;
}
	 .el-dialog__header + .el-dialog__body{
  		  padding: 0 ;                 
 }
	 .el-dialog__body{
  		  padding: 0 ;
  }
}
</style>
-------------这里写弹框里其他内容的样式--------------------------------
<style lang="scss" scoped>
:deep( .calss){
}
</style>
  • 情况二: 将append-to-body 属性去掉 使用以下方法即可使:deep()生效
    需要div包住 el-dialog
 <template>
	 <div>
 			<el-dialog v-model="visible"  custom-class="dialog-class">    </el-dialog>
 	 </div>
 </template>
 
<style lang="scss" scoped>
:deep( .el-dialog){
	 .el-dialog__header{
 		   padding: 0 ;
	}
	 .el-dialog__header + .el-dialog__body{
  		  padding: 0 ;                 
	 }
	 .el-dialog__body{
  		  padding: 0 ;
	  }
	.main{
	}
}
</style>

  • 情况三 :一个页面有两个或者更多弹窗,使用:deep( .el-dialog){ } 写法会造成所有弹窗样式都变了,这个时候,不需要加custom-class,也不用:deep() ,直接加append-to-body ,在
<el-dialog :model-value="visible"  class="main-dialog" append-to-body @close="handleClose">
</el-dialog>	
<el-dialog v-model="showConfirm" title="提示" width="300px" class="two-dialog" append-to-body :close-on-click-modal="false">
</el-dialog>	

<style lang="scss">
.main-dialog {
	padding: 0!important;
	.el-dialog__header {
	    padding: 0!important;
		height: 0!important;
	}
	.el-dialog__header + .el-dialog__body{
  		  padding: 0!important;                 
	 }
	.el-dialog__body {
		padding: 0!important;
	}
	.el-el-dialog__footer {
		padding: 0!important;
	}
}
.privacy-dialog {
.......
}
<style lang="scss" scoped> 这里写别的样式
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值