vue 中 deep(深层作用选择器) 的作用(浅入)

685 阅读2分钟

1. vue 组件的特殊编号

首先当我们打开有复杂组件关系 vue 项目时,会发现很多 html 标签上会有一串自定义属性:

这些自定义属性是 vue 根据不同组件给予的不同编号。

我们知道,每个组件中的样式标签上,只要加上 scoped 属性就表示这个 style 中的样式只会在当前组件中生效,并且不会影响到其他组件,**原理就是每个样式上都用属性选择器被加上了属于这个组件的编号: **

这样做的好处就是让组件的样式独立,需要共用的样式会被写在公共 css 中。

但是同时当我们的组件是一个父子关系时,并且想父组件能修改子组件的样式,因为每个组件的样式有特定的属性编号,这时就不能修改到属于子组件的样式。这时就需要用到 deep 深层作用选择器。

2. deep 深层作用选择器的使用

既然我们知道了不同组件有不同的属性编号,我们想要父组件能够修改到子组件的样式,就获取到这个对应的属性编号就可以了。

而 deep 就可以帮助我们获取到深层(子组件)的属性编号:

/deep/ div {
    /* 这时这个样式中的样式就可以影响到子组件中 div 的样式了 */
}

不过我们想要修改深层样式,也是因为项目中存在像 element-ui 这样的组件,这时有需求要修改一个路由组件的子组件里的样式,一般这个时候我们需要用到 deep 深层作用选择器,不过也有其他很多用法,我也需要更深度的学习。如果有任何理解不对的地方,希望谅解。