Vue 项目中 style 样式中为什么要添加 scoped

1、作用 

在 Vue 中使用 scoped 属性可以让样式作用域仅限于当前组件中,不影响全局,避免了样式污染和样式冲突的问题。

在组件中使用 scoped 的方式如下:



在这个例子中,.example 样式规则只会作用于当前组件内部的元素,而不会影响全局的样式。

 

2、原理:

为了达到组件样式模块化,做了两个处理:

① scoped 会为每个组件的 DOM 节点添加一个唯一的 data 属性(例如: data-v-5558831a)作为标记;

② css样式上是通过 data 属性选择器([data-v-2311c06a])的方式来私有化样式。

3、编译前后

Vue中的 scoped 属性的效果主要是通过PostCss实现的。

以下是转译前的代码:



转译后:

.example[data-v-1121845a] {
  color: red;
}

即:PostCSS 给一个组件中的所有 DOM 添加了一个独一无二的动态属性,给 css 选择器额外添加一个对应的属性选择器,来选择组件中的 DOM,这种做法使得样式只作用于含有该属性的 DOM 元素(组件内部的 DOM)。


 

你可能感兴趣的:(每日专栏,Vue1.x和Vue2.x,Vue3.x,vue.js,前端,javascript)