第三方UI组件库的样式修改方案

一、前端开发中经常会使用第三方UI组件库,但是有时候我们需要自定义一些样式,但是经常修改后的样式不生效。

二、这里我们以vant-ui 为例进行说明,其它ui组件库也类似

1、如果组件中用了插槽插入了自己的元素,那么在自己的作用域中直接修改这个元素。

<van-tabbar-item >
          <template #icon>
            <img src="@/image/1.png"  alt="" />
          </template>
</van-tabbar-item>

以上代码中如果要改img的样式,可以直接在组件的style模块直接更改

<style lang="less" scoped>
  img {
    height: 28px;
  }
</style>

2、如果不是插槽,比如直接修改 van-tabbar-item 的文本样式

①方法一: 在全局css里面的:root 里面定义一个同名变量,重新赋值,覆盖原有的样式,但是这个有个缺点是全局中使用了这个变量的地方都改变了。

:root {
  --van-tabbar-item-text-color:green;
}

②方法二、在组件中定义这个变量,重新赋值,这样样式就只在这个组件生效了
该组件或者父标签的css类中设置变量

<style lang="less" scoped>
.myClass{
  --van-tabbar-item-text-color:green;
}
</style>

以上修改变量时,组件库大部分都有在文档中直接体现比如

③方法三、直接查找对应的子组件选择器,使用:deep(子组件中元素的选择器) {}进行修改,如果不用deep样式也是不生效

<style lang="less" scoped>
    :deep(.van-tabbar-item) {  //如果是id选择器可以 #van-tabbar-item
    color:green;
  }
</style>
posted @ 2022-11-17 09:58  清和时光  阅读(869)  评论(0)    收藏  举报