vue3中覆盖组件样式的方法

在前端设计时,遇到时间框组件el-date-picker的样式需要单独覆盖掉

如覆盖如下实施日期的时间框边框

html 复制代码
<template>
     <el-dialog :title="text" v-model="open" width="80%" destroy-on-close>
        <div class="dialog-box">
          <el-scrollbar>
            <el-form :model="importList" :rules="importRules" ref="userRef" label-width="80px">
              <el-row>
            <el-col>
            <el-table v-loading="loading" :data="importList" >
               <!-- <el-table-column type="selection" width="50" align="center" /> -->
               <!-- <el-table-column label="编号" align="center" key="userId" prop="userId" /> -->
               <el-table-column label="标准名称" align="center" key="name" prop="name"  :show-overflow-tooltip="true" />
               <el-table-column label="标准(级别)类型" align="center" key="sandardLevel" prop="sandardLevel" />
               <el-table-column label="标准号/计划号" align="center" key="resultsLabel" prop="resultsLabel" />
               <el-table-column label="起草单位" align="center" key="affiliation" prop="affiliation" />
               <el-table-column label="起草人" align="center" key="relatedPersonnel" prop="relatedPersonnel" />
               <el-table-column label="前言" align="center" key="preface" prop="preface" />
               <el-table-column label="(适用)应用范围" align="center" key="applicationRange" prop="applicationRange" />
               <el-table-column label="发(下达)日期" align="center" prop="outputTime" width="160">
                  <template #default="scope">
                     <!-- <span>{{ parseTime(scope.row.outputTime)}}</span> -->
                     <!-- <el-input v-model="scope.row.outputTime" /> -->
                    <el-date-picker
                      v-model="scope.row.outputTime"
                      format="YYYY-MM-DD"
                      value-format="YYYY-MM-DD"
                      type="date"
                      disabled
                      style="width:100%"
                    />
                  </template>
               </el-table-column>
               <el-table-column label="实施日期" align="center" prop="implementationDate" width="160">
                  <template #default="scope">
                     <!-- <span>{{ parseTime(scope.row.implementationDate) }}</span> -->
                     <el-date-picker
                      v-model="scope.row.implementationDate"
                      format="YYYY-MM-DD"
                      value-format="YYYY-MM-DD"
                      type="date"
                      prefix-icon="former"
                      readonly
                      style="width:100%;"
                    />
                  </template>
               </el-table-column>

               <el-table-column label="操作" align="center" width="150" class-name="small-padding fixed-width">
                  <template #default="scope">
                     <el-tooltip content="删除" placement="top" v-if="scope.row.id !== 1">
                        <el-button link type="primary" icon="Delete" @click="handleImportDelete(scope.row,scope)" ></el-button>
                     </el-tooltip>
                  </template>
               </el-table-column>
            </el-table>
            <pagination
               v-show="import_total > 0"
               :total="import_total"
               v-model:page="import_params.pageIndex"
               v-model:limit="import_params.pageSize"
               @pagination="getImportList"
            />
            </el-col>
          </el-row>
            </el-form>
          </el-scrollbar>
        </div>
        <template #footer>
          <span class="dialog-footer">
            <div>
              <el-button @click="open = false">取消</el-button>
              <el-button type="primary" @click="submitImport">
                确定
              </el-button>
            </div>
          </span>
        </template>
      </el-dialog>
</template>

直接在页面style中写样式,覆盖不了,就算加上!important也不行

<style lang="scss" scoped>
.el-input__wrapper){

display:contents !important;

}

</style>

解决方法是使用 ::v-deep 含义是-样式穿透可覆盖组件样式

/**::v-deep 含义-样式穿透可覆盖组件样式 */

::v-deep(.el-input__wrapper) {

display:contents !important;

}

注意:

"::v-deep"是Vue.js框架中的一个特殊选择器,用于在样式中深度选择子组件的元素。在Vue组件中,通常只能通过父组件的样式来影响子组件的样式,但是有时候我们需要直接影响子组件内部的元素样式,这时就可以使用"::v-deep"选择器。

使用"::v-deep"选择器时,可以在样式中直接使用子组件的类名或标签名来选择子组件内部的元素,而不受父组件的样式影响。这样可以更灵活地控制子组件内部元素的样式。

需要注意的是,"::v-deep"选择器只在使用了CSS预处理器(如Sass、Less等)的情况下才有效,因为它是预处理器提供的功能。

希望以上介绍对您有帮助!如果还有其他问题,请随时提问。

相关推荐
IT枫斗者6 小时前
IntelliJ IDEA 2025.3史诗级更新:统一发行版+Spring Boot 4支持,这更新太香了!
java·开发语言·前端·javascript·spring boot·后端·intellij-idea
NGC_66116 小时前
二分查找算法
java·javascript·算法
享誉霸王7 小时前
15、告别混乱!Vue3复杂项目的规范搭建与基础库封装实战
前端·javascript·vue.js·前端框架·json·firefox·html5
滕青山8 小时前
URL编码/解码 核心JS实现
前端·javascript·vue.js
有马贵将8 小时前
【3】前端手撕-深浅拷贝
javascript
柳杉10 小时前
使用AI从零打造炫酷的智慧城市大屏(开源):React + Recharts 实战分享
前端·javascript·数据可视化
Highcharts.js10 小时前
玩转Highcharts气泡图|从散点图到气泡图:增加一个维度,数据可视化瞬间立体起来
javascript·信息可视化·散点图·highcharts·图表开发·气泡图·图表创建
颜酱11 小时前
差分数组:高效处理数组区间批量更新的核心技巧
javascript·后端·算法
Joker Zxc11 小时前
【前端基础(Javascript部分)】2、JavaScript的变量和数据类型
开发语言·前端·javascript
颜酱14 小时前
前缀和技巧全解析:从基础到进阶
javascript·后端·算法