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等)的情况下才有效,因为它是预处理器提供的功能。

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

相关推荐
用户28003832908404 小时前
升级Vue3.4+版本,ant-design-vue 3.x 版本的Modal函数方式无法关闭问题
vue.js
小菜全4 小时前
uniapp新增页面及跳转配置方法
开发语言·前端·javascript·vue.js·前端框架
白水清风4 小时前
关于Js和Ts中类(class)的知识
前端·javascript·面试
前端Hardy4 小时前
只用2行CSS实现响应式布局,比媒体查询更优雅的布局方案
javascript·css·html
小菜全5 小时前
uniapp基础组件概述
前端·css·vue.js·elementui·css3
车口5 小时前
滚动加载更多内容的通用解决方案
javascript
艾小码5 小时前
手把手教你实现一个EventEmitter,彻底告别复杂事件管理!
前端·javascript·node.js
因吹斯汀6 小时前
一饭封神:当AI厨神遇上你的冰箱,八大菜系大师在线battle!
前端·vue.js·ai编程
崔璨7 小时前
详解Vue3的响应式系统
前端·vue.js
摸鱼的鱼lv7 小时前
🔥 Vue.js组件通信全攻略:从父子传值到全局状态管理,一篇搞定所有场景!🚀
前端·vue.js