vue中style scope深度访问方式
背景:vue-cli3.0项目中需要修改element-ui collapse collapse-item 的样式(背景色等),template简单如下:
<el-collapse class="my-collapse"> <el-collapse-item title="分类1" name="1" class="plugins-collapse-item"> <span>分类1</span> </el-collapse-item> <el-collapse-item title="分类2" name="2"> <span>分类2</span> </el-collapse-item> </el-collapse>试了scoped局部样式,完全不生效。
<style lang="scss" scoped> .el-collapse-item { .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; } } .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; } } }</style>去掉scoped,写在全局样式里,生效了!
<style lang="scss">///上述代码</style>第一次试全局样式没生效,找到起因:没写父类class .el-collapse-item,层级加载顺序出了问题,样式被覆盖了。
尽管全局样式可以处理,但是不想写在全局样式里,怎样办呢?找到了Deep Selectors,可以在父组件中修改子组件的样式,那咱就来尝个鲜吧。
- 在css中,使用
>>>
<style > .el-collapse-item >>> .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 >>> .el-collapse-item__wrap { background: #262720; border-bottom: 1px solid #4b4c44; color: #ffffff;} </style>- 在无法正确解析
>>>的预解决器中(例如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)
说明
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » vue中style scope深度访问方式
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » vue中style scope深度访问方式