Svelte Material UI (SMUI) 主题定制完全指南

Svelte Material UI (SMUI) 主题定制完全指南

svelte-material-ui Svelte Material UI Components svelte-material-ui 项目地址: https://gitcode.com/gh_mirrors/sv/svelte-material-ui

前言

Svelte Material UI (SMUI) 是基于 Material Design 的 Svelte 组件库,提供了强大的主题定制能力。本文将深入讲解如何通过 Sass 和 CSS 变量两种方式为 SMUI 创建自定义主题,让你的应用拥有独特的视觉风格。

第一部分:使用 Sass 定制主题

1.1 准备工作

在开始主题定制前,需要安装 SMUI 主题构建工具:

npm install --save-dev smui-theme

1.2 创建主题模板

运行以下命令生成主题模板文件:

npx smui-theme template src/theme

这将创建:

  • src/theme/_smui-theme.scss (浅色主题)
  • src/theme/dark/_smui-theme.scss (深色主题)

1.3 配置构建脚本

在 package.json 中添加构建脚本:

"scripts": {
  "prepare": "npm run smui-theme-light && npm run smui-theme-dark",
  "smui-theme-light": "smui-theme compile build/smui.css -i src/theme",
  "smui-theme-dark": "smui-theme compile build/smui-dark.css -i src/theme/dark"
}

如果不需要深色模式,简化配置:

"prepare": "smui-theme compile build/smui.css -i src/theme"

运行 npm run prepare 构建 CSS 文件。

1.4 引入主题文件

在 HTML 中引入生成的主题文件:

<!-- 支持深色模式 -->
<link rel="stylesheet" href="/smui.css" media="(prefers-color-scheme: light)" />
<link rel="stylesheet" href="/smui-dark.css" media="screen and (prefers-color-scheme: dark)" />

<!-- 仅浅色模式 -->
<link rel="stylesheet" href="/smui.css" />

重要提示:安装新 SMUI 包后,需要重新运行 npm run prepare 以包含新包的样式。

1.5 核心主题变量配置

_smui-theme.scss 中,可以配置以下核心变量:

@use '@material/theme/color-palette';

$background: #fff;

@use '@material/theme/index' as theme with (
  $primary: color-palette.$purple-500,  // 主色
  $secondary: color-palette.$teal-600,  // 次要色
  $surface: #fff,                       // 表面色
  $background: $background,             // 背景色
  $error: #b00020                       // 错误色
);

// 基础样式
html, body {
  background-color: $background;
  color: if(theme.contrast-tone($background) == 'dark', #000, #fff);
}

1.6 高级定制选项

形状定制
@use '@material/shape/index' as shape with (
  $small-component-radius: 0,   // 小组件圆角
  $medium-component-radius: 0,  // 中等组件圆角
  $large-component-radius: 0    // 大组件圆角
);
排版定制
@use '@material/typography/index' as typography with (
  $font-family: 'Roboto, sans-serif'
);

第二部分:使用 CSS 变量定制主题

对于不使用 Sass 的项目,可以通过 CSS 变量实现基础主题定制:

:root {
  /* 主题色 */
  --mdc-theme-primary: #ff3e00;
  --mdc-theme-secondary: #676778;
  --mdc-theme-background: #fff;
  --mdc-theme-surface: #fff;
  
  /* 文字色 */
  --mdc-theme-text-primary-on-background: rgba(0, 0, 0, 0.87);
  --mdc-theme-text-secondary-on-background: rgba(0, 0, 0, 0.54);
  
  /* 布局网格 */
  --mdc-layout-grid-margin-desktop: 24px;
  --mdc-layout-grid-gutter-desktop: 24px;
}

注意:CSS 变量只能覆盖部分样式,完整定制仍需使用 Sass。

第三部分:最佳实践

  1. 色彩对比度:确保文字与背景有足够对比度,可使用 Material 提供的 contrast-tone() 函数自动计算。

  2. 主题一致性:保持浅色和深色模式的视觉一致性,只是颜色值不同。

  3. 性能优化:将主题构建纳入 CI/CD 流程,避免手动操作。

  4. 渐进增强:先定义基础 CSS 变量主题,再逐步添加 Sass 高级定制。

结语

通过本文的指导,你应该已经掌握了 SMUI 主题定制的核心方法。无论是简单的颜色更换,还是深度的样式重构,SMUI 都提供了灵活的解决方案。建议从基础主题开始,逐步探索更高级的定制选项,打造独具特色的 Material Design 应用。

svelte-material-ui Svelte Material UI Components svelte-material-ui 项目地址: https://gitcode.com/gh_mirrors/sv/svelte-material-ui

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

成冠冠Quinby

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值