样式穿透
1、为什么需要穿透scoped?
引用了第三方组件后,需要在组件中局部修改第三方组件的样式,而又不想去除scoped属性造成组件之间的样式污染。此时只能通过特殊的方式,穿透scoped。
2、样式穿透的方法
样式穿透的写法有三种:>>>、/deep/、::v-deep
第一种方法:>>>
如果项目使用的是css原生样式,那么可以直接使用 >>> 穿透修改
/* 用法: */ div >>> .cla { color: red; }
第二种方法:/deep/
项目中用到了预处理器 scss 、sass、less 操作符 >>> 可能会因为无法编译而报错 。可以使用 /deep/注意:vue-cli3以上版本不可以
/* 用法: */ div /deep/ .cla { color: red; }
第三种方法::v-deep
/* 用法: */ div ::v-deep .cla { color: red; }
3、样式穿透原理
scoped后选择器最后默认会加上当前组件的一个标识,比如[data-v-49729759]
用了样式穿透后,在deep之后的选择器最后就不会加上标识。
1.示例
父组件:
<template> <div> <!-- 样式穿透 --> <cssdeepcom></cssdeepcom> </div> </template> <script> import cssdeepcom from '../components/cssdeepcom' export default { data(){ return{ } }, components:{ cssdeepcom, }, } </script> <style scoped> .cssdeep /deep/ .cssdeepcom{ background: blue; } </style>
子组件:
<template> <div></div> </template> <script> export default { data(){ return{ } }, } </script> <style scoped> .cssdeepcom{ width: 100px; height: 100px; background: red; } </style>
通过以上内容我们知道了vue中的样式穿透方法及原理。感谢您访问“我爱捣鼓(www.woaidaogu.com)”网站的内容,希望对大家有所帮助!引用本文内容时,请注明出处!谢谢合作!