# 9.针对scoped设置规则
单文件组件 <style scoped>
现在可以包含全局规则或只针对插槽内容的规则
1、deep 父组件覆盖子组件的样式
2、slot 设置父组件中slot的样式
3、global 设置全局的样式
<style scoped>
/* deep selectors */
::v-deep(.foo) {}
/* shorthand */
:deep(.foo) {}
/* targeting slot content */
::v-slotted(.foo) {}
/* shorthand */
:slotted(.foo) {}
/* one-off global rule */
::v-global(.foo) {}
/* shorthand */
:global(.foo) {}
</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
父组件 App.vue
<template>
<div>
<div class="text">父组件内容,子组件的全局样式生效</div>
<Child24><span class="my-slot">我是父组件的slot,子组件设置父组件中slot的样式</span></Child24>
</div>
</template>
<script>
import Child24 from './children/child24.vue';
export default {
components: {
Child24,
}
}
</script>
<style scoped>
/*覆盖子组件的样式*/
:deep(.my-child){
color:red;
}
</style>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
子组件 HelloWorld.vue
<template>
<div class="wraper">
<div class="text">子组件内容,全局样式生效</div>
<slot>我是slot的替代内容</slot>
<div class="my-child">子组件内容,父组件样式</div>
</div>
</template>
<style scoped>
:global(.text) {
color:blueviolet;
}
.my-child{
color:green;
}
/*设置父组件中slot的样式*/
:slotted(.my-slot){
color:blue;
}
</style>
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20