本文介绍了Vue2和Vue3中用于穿透组件样式隔离的五种方法,包括>>>/deep/、::v-deep、:deep()等选择器,以及它们在不同CSS预处理器中的应用。同时提到,当修改第三方组件库如Vant3的样式不起作用时,可能需要更精确地定位父组件来实现样式覆盖。 摘要由CSDN通过智能技术生成

vue2语法提供3种 >>>   /deep/  ::v-deep
父组件选择器 >>> 子组件选择器 { 子组件样式 }
/deep/ 子组件选择器 { 子组件样式 }
::v-deep 子组件选择器 { 子组件样式 }

vue3语法提供2种  :deep()   ::v-deep()
:deep(子组件选择器){ 子组件样式 }
::v-deep(子组件选择器){ 子组件样式 }

经测试, 这五种穿透语法在vue2和vue3中都兼容

<style scoped>
/* >>> 只对css原生样式穿透 */
#app >>> h2 {
color: red;
}
/* /deep/ css/less/sass通用样式穿透 */
/deep/ h2{
background-color: #42b983;
}
/* ::v-deep css/less/sass通用样式穿透 */
::v-deep h2{
border-radius: 10px;
}
/* :deep() vue3新增  css/less/sass通用样式穿透  */
:deep(h2){
font-size: 30px;
}
/* ::v-deep() vue3新增  css/less/sass通用样式穿透 */
::v-deep(h2){
line-height: 50px;
}
</style>

注意: 有时,第三方组件库中使用穿透改子组件样式也不生效,
如,修改vant3中的NavBar标题样式
.van-nav-bar__title{ color: red; } 不生效
可能是此标签嵌套的层级太深, 样式查找不准确, 在前边加上父标签限制即可
#app .van-nav-bar .van-nav-bar__title{ color: red; } 生效

一、污染是如何产生的? 得益于 Vue -loader,在 Vue 中可以使用类似于 Web Component 的 组件 写法 , <template></template><style></style>[removed][removed] ,在大多数情况下,我们希望 组件 间定义的 样式 是相互 隔离 的,在 Weex 当中的确如此, 组件 天生 隔离 ,可是在 Vue 当中,运行的载体还是浏览器,所有的 样式 类还是会通过 style 标签插入头部,影响全局,交叉污染 二、增加 Scope d 标识 依然是 Vue -loader,通过为 组件 中的 style 标签增加一个 scope d 标识, Vue -loader 在编译的
Scope d CSS 当 <style> 标签有 scope d 属性时,它的 CSS 只作用于当前 组件 中的元素。这类似于 Shadow DOM 中的 样式 封装。它有一些注意事项,但不需要任何 polyfill。它通过使用 PostCSS 来实现以下转换: <style scope d> .example { color: red; </style>
1. vue 2的css 样式 穿透 : >>> 2. vue 3的css 样式 穿透 : :deep()和::v-deep() 3.关于less和sass的css 样式 穿透 : /deep/ ::v-deep 4.关于 important 解决 样式 的使用方法
因为关键字 scope d的原因,style标签内的 样式 只会对当前 组件 内容生效,因为最终生成出来的 样式 选择器是这样的: .page .data[data-v-98cf4d84] , 所以这个data 样式 只会对含有 data-v-98cf4d84 属性的HTML元素生效。 但是如果这个data 样式 ,是在某个第三方 组件 当中的
CSDN-Ada助手: 恭喜您撰写了第5篇博客!标题“uniapp语法特点”非常吸引人。您对uniapp语法特点的深入探索让读者能够更好地理解和应用这个框架。继续保持这样的创作热情和努力,相信您的博客会越来越受欢迎。 在下一步的创作中,建议您可以结合具体的实例或案例,进一步阐述uniapp语法特点的实际应用场景,这样读者可以更直观地感受到这些特点的优势和实用性。同时,如果能够深入探讨uniapp语法特点与其他框架的异同之处,也将为读者提供更全面的参考。 再次恭喜您,期待您未来更多的精彩博文! 跨域解决方案 CSDN-Ada助手: 恭喜你写了第6篇博客!标题"跨域解决方案"听起来非常有趣。我很高兴看到你持续创作,这表明你对这个主题有着相当深入的了解。在下一步的创作中,或许你可以考虑添加一些实际案例或者示例代码,以帮助读者更好地理解和应用这些跨域解决方案。希望你继续保持谦虚的态度,继续分享你的知识和经验,我期待着你的下一篇博客!加油! 同源策略的概念 CSDN-Ada助手: 恭喜您写了第7篇博客!标题“同源策略的”引起了我的兴趣。您对同源策略的探讨一定非常有见地。在下一步的创作中,或许您可以考虑探索同源策略在不同应用场景下的实际应用,并分享一些实用的解决方案。期待您的进一步创作,谦虚而深入的探索将为读者提供更多有价值的知识。加油! 使用vite创建react CSDN-Ada助手: 恭喜您在第8篇博客中分享了关于使用vite创建react的内容!持续创作是非常值得鼓励的,您的努力让读者受益匪浅。对于下一步的创作建议,或许您可以考虑分享一些关于vite的高级用法或者与其他前端工具的整合经验,这将进一步丰富读者的知识储备。再次恭喜您,并期待您的下一篇博客! react中查找DOM的方法 CSDN-Ada助手: 恭喜你写了第9篇博客!标题“react中查找DOM的方法”听起来非常有趣。你在这篇博客中分享了什么样的方法呢?我对这个主题非常感兴趣,因为在React中查找DOM是一个常见的需求。希望你能继续创作,分享更多关于React的知识。或许下一步你可以写一篇关于React中优化DOM操作的文章,因为这对于提高性能非常重要。谢谢你的分享!