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

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

相关推荐
一路向前的月光44 分钟前
Vue2中的监听和计算属性的区别
前端·javascript·vue.js
长路 ㅤ   1 小时前
vue-live2d看板娘集成方案设计使用教程
前端·javascript·vue.js·live2d
Fan_web1 小时前
jQuery——事件委托
开发语言·前端·javascript·css·jquery
Jiaberrr2 小时前
Element UI教程:如何将Radio单选框的圆框改为方框
前端·javascript·vue.js·ui·elementui
安冬的码畜日常4 小时前
【D3.js in Action 3 精译_029】3.5 给 D3 条形图加注图表标签(上)
开发语言·前端·javascript·信息可视化·数据可视化·d3.js
太阳花ˉ4 小时前
html+css+js实现step进度条效果
javascript·css·html
程序员大金4 小时前
基于SpringBoot+Vue+MySQL的装修公司管理系统
vue.js·spring boot·mysql
john_hjy4 小时前
11. 异步编程
运维·服务器·javascript
风清扬_jd5 小时前
Chromium 中JavaScript Fetch API接口c++代码实现(二)
javascript·c++·chrome