vue 中 module and scoped 之间有什么渊源?

2018-06-04  本文已影响15人  科哚洛夫
先来看一个例子

scoped 写法

<style scoped>
h1 {
 color: #f00;
}
</style>

. 使用scoped 编译结果如下

 h1[data-v-4c3b6c1c] {
 color: #f00;
}

只是在元素中添加了一个唯一属性来区分

深度作用选择器
如果你希望 scoped 样式中的一个选择器能够作用得
更深, 列如影响子组件,你可以使用 >>> 操作符

<style scoped>
.a >>> .b { /* ... */ }
</style>

上述代码会被编译成:

.a[data-v-f3f3eg9] .b { /* ....  */ }

有些像Sass 之类的预处理器无法正确解析 >>> . 这种情况下你可以使用 /deep/ 操作符取而代之

module

module 写法

<style lang="scss" module>
.title{
font-size:75px;
}
</style>

编译完

._2Kxy-UP7h-qWv4Uf_GsX7-_0 {
font-size: 75px;
}

从上面编译完 对比明显可以看出 module 这方面做的更好
它不是添加属性,而是直接改变类名

Modules既不是官方标准,也不是浏览器的特性,而是在构建步骤中对CSS类名选择器限定作用域的一种方式(通过hash实现类似于命名空间的方法)。

上一篇 下一篇

猜你喜欢

热点阅读