关于Vue中的样式穿透
前段时间,写一个轮播图组件的时候遇到了一个样式不生效的问题,通过样式穿透解决了,记录一下。
对于vue文件中的 <style>
标签,加上 scoped
属性,它的css样式只能用于当前的组件,它的原理的是通过使用 PostCSS 来实现转换
scoped 转换规则
- 组件的根元素、组件自身的后代元素、子组件的根元素都会加上该组件特定的
data-v-x
属性。 - css样式中,最后一个选择器会被添加上
data-v-xxx
属性选择器
/* Father.vue */
<template>
<div class="father-wrapper">
<div class="inner">
father-inner
</div>
<child-cmp></child-cmp>
</div>
</template>
<style scoped>
.father-wrapper {
border: 1px solid;
}
.father-wrapper .inner {
font-size: 20px;
}
.father-wrapper .child-wrapper .inner-1 {
font-size: 20px;
}
</style>