当前位置: 首页 > Web前端 > CSS

【干货】关于vue3SFC作用域中的scoped-styles样式穿透

时间:2023-03-31 11:55:24 CSS

VueSFC作用域使得CSS只适用于当前组件。在很多情况下,用户通常会遇到这种情况。可以改进深度选择器。Vue框架的初始版本支持>>>组合器,使选择器变得“深”。但是,某些CSS预处理器(例如LESS/SASS)在解析它时会遇到问题,因为这不是官方的CSS组合器。.Modal>>>.ant-select{颜色:#f00;}后来切换到/deep/,它曾经是CSS的事实上的补充(甚至是Chrome原生的),但由于未知原因被放弃了。/deep/仅被Vue的SFC编译器用作编译时提示来覆盖选择器,并在最终的CSS中被删除。.Modal/deep/.ant-select{颜色:#f00;后来vue的第二个版本引入了另一个自定义的combinator::v-deep,这次更加明确这是一个vue-specific,并且使用了伪元素语法,这样任何预处理器都可以解析它。.Modal::v-deep.ant-select{颜色:#f00;}升级到Vue3后,官方不再支持>>>和/deep/。然后换成CSS伪元素的组合器,使用::v-deep()的工作方式。.Modal:v-deep(.ant-select){颜色:#f00;}当然,如果需要显式定位开槽内容,也可以使用::v-sloated()伪元素。::v-deep(.bar){}//编译输出:[v-data-xxxxxxx].bar{}::v-slotted(.foo){}//编译输出:.foo[v-data-xxxxxxx-s]{}::v-global(.foo){}//编译输出:.foo{}如果对你有帮助,请点个赞,打码不易~?