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 分钟前
【el-form】记一例好用的el-input输入框回车调接口和el-button按钮防重点击
javascript·vue.js·elementui
川石课堂软件测试1 小时前
性能测试|docker容器下搭建JMeter+Grafana+Influxdb监控可视化平台
运维·javascript·深度学习·jmeter·docker·容器·grafana
JerryXZR1 小时前
前端开发中ES6的技术细节二
前端·javascript·es6
problc1 小时前
Flutter中文字体设置指南:打造个性化的应用体验
android·javascript·flutter
Gavin_9151 小时前
【JavaScript】模块化开发
前端·javascript·vue.js
懒大王爱吃狼2 小时前
Python教程:python枚举类定义和使用
开发语言·前端·javascript·python·python基础·python编程·python书籍
待磨的钝刨4 小时前
【格式化查看JSON文件】coco的json文件内容都在一行如何按照json格式查看
开发语言·javascript·json
Devil枫7 小时前
Vue 3 单元测试与E2E测试
前端·vue.js·单元测试
GIS程序媛—椰子8 小时前
【Vue 全家桶】6、vue-router 路由(更新中)
前端·vue.js
前端青山8 小时前
Node.js-增强 API 安全性和性能优化
开发语言·前端·javascript·性能优化·前端框架·node.js