vue css 功能 
scoped 通过 postcss 实现 
vue
<style scoped>
.example {
  color: red;
}
</style>
<template>
  <div class="example">hi</div>
</template>1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
vue
<style>
.example[data-v-f3f3eg9] {
  color: red;
}
</style>
<template>
  <div class="example" data-v-f3f3eg9>hi</div>
</template>1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
深度选择器 
:deep()
vue
<style scoped>
.a :deep(.b) {
  /* ... */
}
</style>
.a[data-v-f3f3eg9] .b {
  /* ... */
}1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
插槽选择器 
:slotted(div)
全局选择器 
scoped 里的透传给全局
vue
<style scoped>
:global(.red) {
  color: red;
}
</style>1
2
3
4
5
2
3
4
5
css modules 
vue
<template>
  <p :class="$style.red">This should be red</p>
</template>
<style module>
.red {
  color: red;
}
</style>1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
或者写 module="class" 自定义导出的类名字
vue
// 在 setup() 作用域中...
// 默认情况下,返回 <style module> 的 class
useCssModule()
// 具名情况下,返回 <style module="classes"> 的 class
useCssModule('classes')1
2
3
4
5
6
2
3
4
5
6
css 里的 v-bind 
自定义属性会通过内联样式的方式应用到组件的根元素上,并且在源值变更的时候响应式地更新。
vue
<script setup>
import { ref } from 'vue'
const theme = ref({
    color: 'red',
})
</script>
<template>
  <p>hello</p>
</template>
<style scoped>
p {
  color: v-bind('theme.color');
}
</style>1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16