# 样式覆盖

# 介绍

MUI 基于微信小程序的机制,为开发者提供了以下 3 种修改组件样式的方法

# 解除样式隔离

样式隔离的相关背景知识请查阅微信小程序文档 (opens new window)


MUI 的所有组件都开启了addGlobalClass: true以接受外部样式的影响,可以使用如下 2 种方式覆盖组件样式

在页面中使用 MUI 组件时,可直接在页面的样式文件中覆盖样式

<mx-button type="primary">主要按钮</mx-button>
/* page.wxss */
.mx-button--primary {
  font-size: 20px;
  background-color: pink;
}

在自定义组件中使用 MUI 组件时,需开启styleIsolation: 'shared'选项

<mx-button type="primary">主要按钮</mx-button>
Component({
  options: {
    styleIsolation: 'shared',
  },
});
.mx-button--primary {
  font-size: 20px;
  background-color: pink;
}

# 使用外部样式类

外部样式类的相关知识背景请查阅微信小程序文档 (opens new window)


MUI 开放了大量的外部样式类供开发者使用,具体的样式类名称可查阅对应组件的“外部样式类”部分。

需要注意的是普通样式类和外部样式类的优先级是未定义的,因此使用时请添加!important以保证外部样式类的优先级。

<mx-cell
  title="单元格"
  value="内容"
  title-class="cell-title"
  value-class="cell-value"
/>
.cell-title {
  color: pink !important;
  font-size: 20px !important;
}

.cell-value {
  color: green !important;
  font-size: 12px !important;
}

# 使用 CSS 变量

MUI 为部分 CSS 属性开放了基于 CSS 属性的定制方案。

相较于 解除样式隔离 和 使用外部样式类,这种方案支持在页面或应用级别对多个组件的样式做批量修改以进行主题样式的定制。

当然,用它来修改单个组件的部分样式也是绰绰有余的。具体的使用方法请查阅[定制主题]