Skip to content

自定义样式 v0.3.0+

uView Pro 默认提供了一套美观且统一的组件样式,但在实际项目开发中,往往需要根据业务需求进行个性化定制。参考自定义主题

然而,如果仅是需要覆盖组件的默认样式,或增加样式,uView Pro 则支持两种主流的自定义样式方式,灵活满足各种场景:

方式一:custom-class 样式穿透

所有组件均支持 custom-class 属性,可为组件根节点添加自定义 class,实现样式穿透和深度定制。推荐配合 :deep()/deep/ 实现作用域样式穿透。

示例:

html
<view class="my-page">
  <u-button custom-class="my-btn"></u-button>
</view>
scss
.my-page {
  :deep(.my-btn) {
    background-color: #2979ff;
    color: #fff;
    border-radius: 8px;
  }
}
  • 可用于自定义背景、字体、边框、动画等任意样式。
  • 支持多层嵌套和全局样式覆盖。

方式二:custom-style 内联样式

所有组件均支持 custom-style 属性,可直接传递内联样式字符串,快速实现样式定制。

示例:

html
<u-button
  custom-style="background: linear-gradient(90deg,#2979ff,#00c6ff);color:#fff;border-radius:8px;"
></u-button>
  • 适合简单样式调整和动态样式绑定。
  • 支持与变量、计算属性结合。

进阶说明

  • 两种方式可结合使用,优先级:custom-style > custom-class > 组件默认样式。
  • 推荐在页面根节点加唯一 class,避免样式污染。
  • 复杂场景建议使用 custom-class,便于维护和复用。
  • 组件文档均有对应属性说明,详见各组件 API。

常见问题

  • 为什么样式不生效?
    • 检查 class 名称是否正确,是否在正确的作用域下。
    • 确认样式优先级,必要时使用 !important
    • Vue3/uni-app 下建议用 :deep() 实现穿透。
  • 如何批量定制所有组件样式?
    • 可通过全局样式或主题变量统一覆盖,参考自定义主题