在vue文件中的style标签上有一个特殊的属性:scoped(布尔值);
该属性的作用是将当前标签下的样式私有化,仅对当前组件起作用
若是给style标签添加了scoped属性,在编译时
虽然这样做保证样式只对当前组件起作用,不造成全局污染,但是于此同时
在我们使用第三方插件(eg:vant)的时候,想要修改其中的样式时—>若是我们写在带有scoped的style中时,默认会在选择器上加一个属性,这样就修改不到子元素的身上(无法修改子组件的样式);
[1]解决1—使用穿透 ::v-deep
/deep/
----存在兼容性(vue3打包的时候会报错)>>>
—存在兼容性问题(scss使用会报错)::v-deep
—兼容性最好;原理 :去掉了该标签的属性选择器;
[2]解决2—在同一组件写两个style标签
举例
//在登录组件中使用vant的导航栏(自带padding,我们不需要,想要去掉)
<template>
<div class="login">
<van-nav-bar>
<template #left>
<span class="iconfont icon44">span>
template>
van-nav-bar>
div>
template>
//使用穿透(本来不能修改子组件的样式,只要在选择器加上 ::v-deep 就可以修改了)