-
解决方案 (任选其一)
1.1 升级vite版本到4.2.1以上(推荐)
1.2 添加父标签,使用以下写法(官网示例)``` <style scoped> .a :deep(.b) { /* ... */ } </style> ``` 上面的代码会被编译成: ``` .a[data-v-f3f3eg9] .b { /* ... */ } ```
-
场景复现(无父标签)
使用:deep() 添加样式无效
<template> <a-comp class="pdf-preview"> </a-comp> <template> <style lang="scss" scoped> .pdf-preview { :deep(.xx) { padding: 0; } } </style>
-
问题原因
针对1.1
vite 4.2.1 以上 新版本官方支持不带父级标签也可以生效
针对1.2
原因:使用
scoped
的时候,在 html 的标签中会生成data-v-xxx
的一个属性,样式穿透就是利用的这个属性生成的css;而在 vue3 中,我们可以在
template
下不使用一个标签来包裹全部内容,而此时el-dialog
在第一层的情况下就没有对应的data-v-xxx
父级元素标签,所以样式穿透也就无效了.
VUE3 :deep() 无效
最新推荐文章于 2024-08-04 09:42:22 发布
本文介绍了在升级Vite4.2.1及以上版本时,如何处理因父标签缺失导致的样式穿透问题。升级至新版本后,官方支持不带父级标签的样式生效,同时解释了在Vue3中,由于template结构变化,scoped样式穿透失效的原因。
摘要由CSDN通过智能技术生成