vue3 单文件 style 特性
scope
只对当前组件的样式生效,这在 vue2 中经常使用。
vue
<style scoped>
.example {
color: red;
}
</style>
<template>
<div class="example">hi</div>
</template>深度选择器
选择子组件的类名
vue
<style scoped>
.a :deep(.b) {
/* ... */
}
/* 或 */
.a /deep/ .b{
}
/* 或 */
.a >>> .b{
}
</style>插槽选择器
子组件的插槽的内容属于父组件,子组件要选择需要用 :slotted
父组件
vue
<template>
<HelloWorld>
<div>122</div>
</HelloWorld>
</template>子组件
vue
<template>
<div class="children">
<slot></slot>
</div>
</template>
<style scoped>
.children :slotted(div){
color: red;
}
</style>全局选择器
选择全局的 .red class
vue
<style scoped>
:global(.red) {
color: red;
}
</style>moudle
module 属性会将css类放在 $style 对象上
vue
<template>
<p :class="$style.red"> 文本 </p>
</template>
<style module>
.red {
color: red;
}
</style>自定义名称
vue
<template>
<p :class="classes.red">red</p>
</template>
<style module="classes">
.red {
color: red;
}
</style>API 中获取 style module
js
// 默认, 返回 <style module> 中的类
useCssModule()
// 命名, 返回 <style module="classes"> 中的类
useCssModule('classes')v-model 动态 css
v-bind(color) 绑定即可
vue
<template>
<div class="text">hello</div>
</template>
<script>
export default {
data() {
return {
color: 'red'
}
}
}
</script>
<style>
.text {
color: v-bind(color);
}
</style><script setup>中一样
vue
<script setup>
const theme = {
color: 'red'
}
</script>
<template>
<p>hello</p>
</template>
<style scoped>
p {
color: v-bind('theme.color');
}
</style>