CSS样式穿透

当我们在vue项目中使用第三方组件时,有时候需要去修改某些元素的样式,但有时写的css样式不会覆盖组件的样式,所以要用到样式穿透。

常用的方法有这几种:(1)>>> (2)/deep/ (3)::v-deep (4):deep()

但由于不同的样式解析器识别的语法不同,有时也不一定会生效。

用vant组件库的navbar组件举个例子。

​​​​​​地址:Vant 4 - A lightweight, customizable Vue UI library for mobile web apps.

vue2

使用vant组件库的版本:

修改导航栏标题的颜色,先找到标题对应的class:

html 复制代码
<template>
    <div class="world">
        <van-nav-bar title="标题" left-text="返回" left-arrow/>
    </div>
</template>

<script>
export default {

}
</script>

<style scoped>
/*.world >>> .van-nav-bar__title {*/
/*    color: red;*/
/*}*/

/*::v-deep .van-nav-bar__title{*/
/*    color: red;*/
/*}*/

/*/deep/ .van-nav-bar__title{*/
/*    color: red;*/
/*}*/

:deep(.van-nav-bar__title){
    color: red;
}
</style>

结果:

(1)当使用 css 时,这四种方法都可以生效。

(2)当使用 less 时,>>> 失效,其余三种方法都生效。

(3)当使用 sass 时,>>> 和 /deep/ 失效,其余两种方法生效。

vue3

使用vant组件库版本:

结果:

(1)当使用 css 时,>>> 失效,其余三种方法都生效。

(2)当使用 less 时,>>> 失效,其余三种方法都生效。

(3)当使用 sass 时,>>> 和 /deep/ 失效,其余两种方法生效。

虽然有些方法可以使用,但会在终端出现警告,比方说,当在使用 vue3 并且使用 less 的情况下,用 ::v-deep 和 /deep/ 生效,出现警告让使用 :deep() 。

相关推荐
郑州光合科技余经理1 小时前
本地生活系统:多业务订单字段怎么分账本导出
java·开发语言·前端·数据库·uni-app·php·ai编程
怕浪猫8 小时前
FDE 如何正确解决现场项目工程性的问题
前端·后端·ai编程
西瓜太郎12348 小时前
外层模型卡片与分组详情成功率不一致,应该怎么排查?
前端·typescript·go·软件工程·react
GreenTea8 小时前
vLLM 与 SGLang KV Cache 底层实现机制深度调研报告
前端·后端·算法
几何心凉11 小时前
没有万能模型:我用 AiiOnly Token Plan,把多款大模型的长处拼进同一个项目
前端
kyriewen11 小时前
Claude Code 的额度今天缩水了17%——官方公告上写的是"永久提高25%"
前端·ai编程·claude
雪芽蓝域zzs12 小时前
vue解构平铺VS对象包裹
前端·javascript·vue.js
风骏时光牛马13 小时前
从零到实战,完整AI学习路线
前端
三十而立洋13 小时前
深入理解 Monorepo:子包安装依赖
前端·前端工程化
IT_陈寒14 小时前
Java Stream处理大集合,我的内存怎么就炸了
前端·人工智能·后端