vue
组件中的scoped
是很常用的属性,用于将组件的样式私有化,防止样式污染全局,那它又是如何实现的?
先来看一个简单的组件:
<template>
<div>父组件</div>
</template>
<style>
div { color: red; }
</style>
以上组件目前没有添加scoped
,那么实际的css
代码会对外部所有的div
都会产生影响。
所以需要添加一个scoped
,而添加完scoped
可以发现组件的DOM
结构都加了用于确保唯一性的标识,这个唯一标识就是自定义属性(data-v-
加八位的随机数)。
所以scoped
之所以能实现样式隔离, 主要是给组件内所有标签元素添加了唯一的自定义属性,而且对应的样式选择器都会添加上这个唯一的属性选择器,这样就可以做到组件的样式隔离。
网友评论