vue中style scope深度访问方式

背景: vue-cli3.0项目中需要修改element-ui collapse collapse-item 的样式(背景色等),template简单如下: 分类1 分类2 试了scoped局部样式,完全不生效。 去掉scoped,写在全局样式里,生效了! 第一次试全局样式没生效,找到原因:没写父类class .el-collapse-item,层级加载顺序出了问题,样式被覆盖了。 虽然全局样式可以解决,但是不想写在全局样式里,怎么办呢?找到了Deep Selectors,可以在父组件中修改子组件的样式,那咱就来尝个鲜吧。 在css中,使用 >>> 在无法正确解析>>>的预处理器中(例如sass)使用 /deep/ or ::v-deep .el-collapse-item { ::v-deep .el-collapse-item__header { background: #262720; color: #ffffff; height: 24px; line-height: 24px; font-size: 12px; border-bottom: 1px solid #4b4c44; display: flex; flex-direction: row-reverse; justify-content: flex-end; .el-collapse-item__arrow { margin: 0; margin-right: 5px; } } ::v-deep .el-collapse-item__wrap { background: #262720; border-bottom: 1px solid #4b4c44; color: #ffffff; .el-collapse-item__content { color: #ffffff; padding-bottom: 0; line-height: 18px; } } } 编译后的结果: /deep/ or ::v-deep 实现逻辑在插件component-compiler-utils里,附上component-compiler-utils解析scope的源码: scope解析 参考: vue中style scope深度访问新方式(::v-deep)

本文章由javascript技术分享原创和收集

发表评论 (审核通过后显示评论):