文章目录
- 一、scoped是什么
- 二、应用案例
- 1.使用代码
- 2.原理
- 3父组件App未添加scoped影响
一、scoped是什么
我们知道vue为了防止css样式污染,在每个组件中提供了 scoped属性进行限定css作用域;当<style>
标签有 scoped 属性时,它的 CSS 只作用于当前组件中的元素。
- 作用:让样式在局部生效,防止冲突。
- 写法:
<style scoped>
二、应用案例
1.使用代码
School.vue
<template><div class="demo"><h2 class="title">学校名称:{{name}}</h2><h2>学校地址:{{address}}</h2></div>
</template><script>export default {name:'School',data() {return {name:'vue学院',address:'上海黄浦区',}}}
</script><style scoped>.demo{background-color: skyblue;}
</style>
Student.vue
<template><div class="demo"><h2 class="title">学生姓名:{{name}}</h2><h2 class="sex">学生性别:{{sex}}</h2></div>
</template><script>export default {name:'Student',data() {return {name:'张三',sex:'男'}}}
</script><style lang="less" scoped>.demo{background-color: pink;.sex{font-size: 50px;background: red;}}
</style>
App.vue
<template><div><h2 class="title">hello world</h2><School></School><hr><Student></Student></div>
</template><script>import Student from './components/Student.vue';import School from './components/School.vue';export default {name:'App',components:{Student,School},data() {return {}},}
</script><style scoped>.title{color: red;}
</style>
2.原理
我们可以看到,各自组件加上scoped属性之后,对应的样式标签元素会随机生成一个
[data-v-2232xxxx]
这样的属性,来保证每个组件样式互不干扰。
代码如下(示例):
3父组件App未添加scoped影响
父组件的样式会应用到子组件上