在使用第三方组件时有时候我们想修改组件的样式,可以使用全局的方式,即不使用scoped。如果多处共用我们只需要统一修改,假如有多种类型呢?我们不得不另起一个名字。如果我们想要封装一个组件,定义的样式希望在该文件中生效,不影响其他组件,我们将使用scpoed的方式。这种方式去修改第三方组件的样式往往是无效的,什么原因呢?怎么处理呢?
使用scoped的方式定义的自定义dom样式所生成的dom结构有额外的属性,然而所定义的组件样式在组件结构中并不会添加该属性
而打包生成的样式结构类似于.cost-detail .singleConstImg[data-v-762c4be2]
,所以样式.cost-detail .el-dialog
无效。
解决方式:
在less或者scss等编译语言中使用/deep/
或者在style(没用使用scss等)中使用>>>
如cost-detail >>> .el-dialog{}
这时候打包出来的样式结构是
在组件样式上使用了/deep/
后,内部定义的组件样式或者自定义样式不需要再次使用/deep/
,否则样式无效。