官方文档, 文档其实写的比较清楚了。需要注意的点是,外部样式类是不支持嵌套选择器的。只能一对一的修改。
因为我写 uniapp 多一些,可能是因为习惯遇到了下面的问题。
子组件
js
/* 组件 custom-component.js */
Component({
externalClasses: ["my-class"],
});
html
<!-- 页面的 wxml -->
<view class="my-class">
<view class="item-text">Hello, World!</view>
</view>
父组件
html
<custom-component my-class="red-text" />
css
/* 页面的 wxss */
.red-text .item-text {
color: red;
}
这种方式是无效的。因为在 vue 和 uniapp 里面,只要编写了样式穿透组件内部的父盒子选择器,那么父盒子里面的元素我可以随便修改样式。
scss
:deep(.parent-class) {
// 这里可以随便写,只要在父盒子里面就可以自定义组件内部标签的样式
.child-class {
color: red;
}
.item-text {
color: red;
}
}
但是在小程序里面,这种样式是无效的,因为外部样式类不支持嵌套选择器。必须放到你需要修改的标签上。比如下面,修改你的组件文件,把externalClasses: ["my-class"]
修改到你需要修改的标签上, 一对一的修改。就可以了
html
<view>
<!-- 把你的自定义类名一对一的放在标签上 -->
<view class="my-class">Hello, World!</view>
</view>