当前位置: 首页 > news >正文

vue中的css深度选择器


在Vue.js项目中,尤其是在使用组件化开发时,我们时常需要修改组件内部的样式,但Vue的样式封装特性(如<style scoped>)会阻止外部样式直接作用于组件内部。为了应解决这个问题,Vue社区引入了深度选择器(也称为穿透选择器或阴影穿透选择器),让我们能够跨越组件的封装边界,对内部元素进行样式定制。

解决办法一:

由于scoped属性的防渗透作用,添加的样式不会生效,将scoped属性去掉,样式生效了.这种写法是作用到全局的,如果不严格规范class的命名,非常容易污染全局样式。这种写法,等同于写在全局样式文件中。

解决方法二:

保留scoped属性,使用深度选择器

1. /deep/

/deep/Vue 2.x中用于穿透组件样式封装的一种方式,兼容性:支持CSS预处理器(如Sass、Less)和CSS原生样式。注意:在Vue 3.x中,/deep/不再被官方直接支持

2. >>>

CSS原生语法:>>>是CSS原生中的深度选择器语法,用于穿透样式封装。但在Vue单文件组件(.vue)中,它并不总是被直接支持,因为Vue会将其视为普通CSS选择器的一部分。兼容性:仅在某些特定环境(如Webpack的css-loader配置中)和原生CSS中有效,Vue单文件组件中通常需要特定配置才能使用。注意:在Vue 3.x中,>>>同样不再被推荐使用

3. ::v-deep

Vue 3.x中的推荐用法::v-deepVue 3.x中引入的官方深度选择器,用于替代Vue 2.x中的/deep/和原生CSS中的>>>兼容性:支持CSS预处理器和CSS原生样式,是Vue 3.x中推荐使用的深度选择器。

4. :deep

特殊用法:在Vue 3的Composition API中,可以通过v-deep()函数在<style>标签中动态应用深度选择器。这不是CSS语法的一部分,而是Vue 3特有的模板编译特性。用法:通常在<style>标签的scoped属性下,结合v-bind:classv-bind:style在模板中动态绑定样式时使用。

总结

Vue 2.X

<style scoped>
.parent /deep/ .child {/* 样式规则 */
}
</style>

或者使用>>>(需要配置支持):

<style scoped>
.parent >>> .child {/* 样式规则 */
}
</style>
Vue 3.x
<style scoped>
:deep(.van-card__thumb) {width: 120px;display: flex;justify-content: space-around;
}
</style>

新的vue3.0 单文件规范中,如果你还是使用写法3,会碰到如下警告:

[@vue/compiler-sfc] ::v-deep usage as a combinator has been deprecated. Use :deep(<inner-selector>) instead.

写法3在vue3.0中已经被不推荐使用,在开发vue3.0项目的时候,使用写法4

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 基于STM32的RTOS--freertos的使用(HAL实现多任务)
  • react 子组件调用父组件方法,获取的数据不是最新值
  • 用RNN(循环神经网络)预测股票价格
  • 前端技术(六)—— AJAX详解
  • 为什么 2!=false 和 2!=true 返回的都是true
  • Java-IO:浅谈对IO的认识
  • 【大规模语言模型:从理论到实践】Transformer中PositionalEncoder详解
  • java 给list对象根据给定条数进行分组工具类
  • 视频中的噪点怎么去除?
  • ES之三:springboot集成ES
  • JavaScript基础面试题:(第二天)
  • 搞定JavaScript异步原理,深入学习Promise
  • 什么是TypeScript?
  • python测试开发基础---multiprocessing.Pool
  • 机器人笛卡尔空间轨迹规划原理与MATLAB实现
  • AHK 中 = 和 == 等比较运算符的用法
  • JavaScript 基础知识 - 入门篇(一)
  • PAT A1092
  • puppeteer stop redirect 的正确姿势及 net::ERR_FAILED 的解决
  • VUE es6技巧写法(持续更新中~~~)
  • Vue.js源码(2):初探List Rendering
  • 利用jquery编写加法运算验证码
  • 聊聊directory traversal attack
  • 前端技术周刊 2019-02-11 Serverless
  • 世界上最简单的无等待算法(getAndIncrement)
  • 小程序、APP Store 需要的 SSL 证书是个什么东西?
  • - 语言经验 - 《c++的高性能内存管理库tcmalloc和jemalloc》
  • 自动记录MySQL慢查询快照脚本
  • 06-01 点餐小程序前台界面搭建
  • hi-nginx-1.3.4编译安装
  • #php的pecl工具#
  • (5)STL算法之复制
  • (DenseNet)Densely Connected Convolutional Networks--Gao Huang
  • (zhuan) 一些RL的文献(及笔记)
  • (阿里云万网)-域名注册购买实名流程
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (转)jQuery 基础
  • **《Linux/Unix系统编程手册》读书笔记24章**
  • .“空心村”成因分析及解决对策122344
  • .cn根服务器被攻击之后
  • .mysql secret在哪_MYSQL基本操作(上)
  • .NET 8.0 中有哪些新的变化?
  • .net core 6 集成 elasticsearch 并 使用分词器
  • .NET Entity FrameWork 总结 ,在项目中用处个人感觉不大。适合初级用用,不涉及到与数据库通信。
  • .NET HttpWebRequest、WebClient、HttpClient
  • .NET下ASPX编程的几个小问题
  • @Autowired和@Resource装配
  • @RequestMapping处理请求异常
  • [ IOS ] iOS-控制器View的创建和生命周期
  • [ 云计算 | AWS 实践 ] Java 如何重命名 Amazon S3 中的文件和文件夹
  • [100天算法】-二叉树剪枝(day 48)
  • [Android]Tool-Systrace
  • [Angular] 笔记 9:list/detail 页面以及@Output
  • [AutoSar]BSW_OS 01 priority ceiling protocol(PCP)