组件没有提供样式修改props?利用css变量+样式穿透优雅的进行修改

56 阅读1分钟

引出问题

前端的ui组件库几乎人人都会用,但是如果ui官方没有提供样式修改的prop,我们会用到样式穿透:

<van-cell icon="send-gift-o" title="测试"/>
/*这里因为van-cell底层使用了这个class名,我们直接写就好了,具体可以打开控制台检查元素*/
.van-cell{
    &:deep(.van-icon){
        color:red;
    }
}

image.png

可是这样写了,动态修改怎么办呢?我们可以如此优化

<van-cell icon="send-gift-o" title="测试" :style="{'--icon-color':'red'}"/>
.van-cell{
    &:deep(.van-icon){
        color:var(--icon-color);
    }
}

使用样式穿透+css变量便可以绕开props动态的修改别人封装好的组件样式