scoped一旦设置。那么该样式只能在当前组件中有效,因此有些样式是在组件内进行使用,因此直接设置是无效的

    1. <template>
    2. <div class="box">
    3. <!-- 九宫格区域 -->
    4. <van-grid :column-num="3">
    5. <van-grid-item v-for="item in itemList" :key="item.url" :icon="item.url" :text="item.title" />
    6. </van-grid>
    7. </div>
    8. </template>
    9. <style lang="less" scoped>
    10. .vant-grid{
    11. .van-icon__image{
    12. width:2em;
    13. height: 2em;
    14. }
    15. }
    16. </style>

    以上的设置样式是无效的,因为图标所在的i标签并不在这个组件内,因此直接设置样式是无效的
    这里采用样式穿透来解决
    样式穿透:可以使得在当前组件设定样式,但是对当前组件的子组件一样有效。
    在scss,less中一般使用/deep/
    在**stylus**中一般使用>>>

    1. .van-grid{
    2. /deep/ .van-icon__image{
    3. width:2em !important;
    4. height: 2em !important;
    5. }
    6. }