elementui: el-dialog的header设置样式不生效

问:

el-dialog的header设置样式不生效

回答:

场景:

 
   

<el-dialog
      v-model="dialogVisible"
      width="800px"
      :before-close="beforeClose"
      append-to-body
      :close-on-click-modal="false"
      title="增加文档"
    >
     <template #footer>
      <div style="text-align:center">
        <el-button type="primary" @click="saveFieldOption" :disabled="confirmUpload">
          确 定 
        </el-button>
        <el-button @click="uploadDialogClose">取 消</el-button>
      </div>
    </template>
    </el-dialog>
 
    <style lang="scss" scoped>
    ::v-deep(.el-dialog__header) {
      border-bottom: 1px solid #E7E7E7 !important;
      color:#3D3D3D !important;
    }
    ::v-deep(.el-dialog__body) {
      padding: 24px 40px  12px !important;
    }
    </style>


如上:我想给header插槽增加下边框,并且想改变el-dialog__body盒子的内边距,但是不生效。 

解决方案

给el-dialog加个类,在不带scope的<style></style>中设置样式,如下:

   

<el-dialog
      class="dialog-bar"
    >
    </el-dialog>


样式:

<style lang="scss">
.dialog-bar{
  .el-dialog__body {
    padding: 24px 40px  12px !important;
  }
  .el-dialog__header {
    border-bottom: 1px solid #E7E7E7 !important;
    color:#3D3D3D !important;
  }
}
</style>


实现效果如下:

注意:

<style></style>中如果不添加scope,则其中的样式会在所有页面生效,所以务必给该el-dialog添加一个全局都不会重复的类名或者Id属性
<style></style>可以与<style  scoped></style>同时存在于同一个组件,两者并不会冲突,除了el-dialog之外的其他样式还是应该写在<style  scoped></style>中,如下图:

<style lang="scss">
.dialog-bar{
  .el-dialog__body {
    padding: 24px 40px  12px !important;
  }
  .el-dialog__header {
    border-bottom: 1px solid #E7E7E7 !important;
    color:#3D3D3D !important;
  }
}
</style>
 
<style lang="scss" scoped>
//除了el-dialog之外的其他样式
</style>

### Element UI `el-dialog` 组件样式修改不生效的解决方案 对于 `el-dialog` 的样式修改,在 `<style scoped>` 中直接修改不会生效。正确的方法是移除 `scoped` 属性,并为 `el-dialog` 自定义一个类名,再通过该类名来调整内部样式[^1]。 #### HTML模板部分 ```html <template> <el-dialog title="信息" :visible.sync="dialogFormVisible" width="60%" class="custom-dialog"> 我是弹框内容 </el-dialog> </template> ``` #### CSS样式部分 为了确保样式的优先级足够高并能覆盖原有样式,建议使用更具体的选择器路径: ```css <style> .custom-dialog { /* 对话框整体样式 */ } /* 针对对话框头部 */ .custom-dialog .el-dialog__header { background-color: #f1f1f1; } /* 如果还需要针对其他部分做特殊处理 */ .custom-dialog .el-dialog__body { font-size: 18px; } </style> ``` 这样做不仅解决了样式无法应用的问题,还提高了代码的可维护性和扩展性。另外需要注意的是,如果希望某些特定情况下仅影响某个页面或模块中的 `el-dialog`,可以通过组合父容器或其他唯一标识符进一步限定作用范围。 当涉及到全局性的布局调整如垂直居中显示时,则可以采用如下方式设置 `.el-dialog__wrapper` 和其子元素 `.el-dialog` 的样式[^2]: ```css .el-dialog__wrapper { display: flex; justify-content: center; align-items: center; } .el-dialog { margin: auto !important; } ``` 以上方法能够有效解决 `el-dialog` 样式修改不生效的情况,并实现更加灵活多样的视觉呈现效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值