当前位置: 首页 > article >正文

WHAT - Antd 定制主题之预设算法

目录

  • Antd 定制主题
  • 预设算法
    • 主要概念
    • 主题定制的实现
    • 使用预设算法
        • 示例:切换亮色与暗色主题
    • 主要算法
    • 使用场景

Antd 定制主题

官方文档:https://ant.design/docs/react/customize-theme-cn

预设算法

在上述文档中提到了预设算法的使用,那这个功能究竟是什么?

Ant Design 的预设算法(Preset Algorithm)是一套用于主题定制的工具,能够帮助开发者轻松修改和应用全局的设计样式和颜色体系。它基于 Token 系统,允许开发者通过简单的配置调整应用中的配色方案、布局、组件样式等内容。Ant Design 提供了一些常见的预设算法,如亮色模式和暗色模式。

主要概念

  1. Design Token: Design Token 是 Ant Design 设计系统中用来描述设计属性(如颜色、字体、间距等)的最小单位。它们类似于全局变量,可以被灵活地修改以改变整体的样式。

  2. Preset Algorithm: Ant Design 提供了多种预设的主题算法,如:

    • 亮色主题(Default Theme): 默认的明亮配色方案。
    • 暗色主题(Dark Theme): 针对暗色背景的主题方案。
    • 压缩算法(Compact Theme): 用于提供更紧凑的布局和间距,通常在表单、数据密集型应用中使用。

主题定制的实现

Ant Design 使用 @ant-design/cssinjs 来支持动态主题和基于 Design Token 的样式管理。通过这些 Token 和算法,开发者可以快速应用和切换主题,而无需逐个手动修改每个组件的样式。

有关 cssinjs 可以阅读:WHAT - CSS Modules、Tailwind CSS 和 CSS-in-JS

使用预设算法

Ant Design 中,可以通过传入预设的算法来配置主题,比如亮色和暗色主题。

示例:切换亮色与暗色主题
import React, { useState } from 'react';
import { ConfigProvider, Button } from 'antd';
import { defaultAlgorithm, darkAlgorithm } from 'antd/es/theme';

const App = () => {
  const [isDarkMode, setIsDarkMode] = useState(false);

  return (
    <ConfigProvider
      theme={{
        algorithm: isDarkMode ? darkAlgorithm : defaultAlgorithm,
      }}
    >
      <div style={{ padding: 24 }}>
        <Button type="primary" onClick={() => setIsDarkMode(!isDarkMode)}>
          切换 {isDarkMode ? '亮色模式' : '暗色模式'}
        </Button>
      </div>
    </ConfigProvider>
  );
};

export default App;

主要算法

  1. defaultAlgorithm: 默认的亮色主题。
  2. darkAlgorithm: 暗色主题,适用于深色背景。
  3. compactAlgorithm: 紧凑型主题,适用于需要节省空间的布局。

使用场景

  • 主题定制: 开发者可以基于这些预设算法快速定制出符合业务需求的主题风格,比如应用暗色模式或紧凑布局。
  • 动态主题切换: 利用这些算法,可以实现应用内的主题动态切换,用户能够在亮色和暗色模式间无缝切换。

Ant Design 的预设算法通过抽象的设计 Token 实现了高度灵活的样式定制能力,帮助开发者轻松实现应用的主题化设计。


http://www.kler.cn/a/355067.html

相关文章:

  • postgresql ERROR: cannot drop the currently open database
  • 云手机+YouTube:改变通信世界的划时代技术
  • 构建一个rust生产应用读书笔记7-确认邮件2
  • 学习因子异步化的粒子群优化算法(AsyLnCPSO)——源码
  • 本地部署webrtc应用怎么把http协议改成https协议?
  • 动态规划<四> 回文串问题(含对应LeetcodeOJ题)
  • 【论文笔记】Fine-tuned CLIP Models are Efficient Video Learners
  • 代替AD作为身份认证组件,深信服零信任aTrust与宁盾身份目录实现互操作
  • leetcode 刷题day43动态规划Part12(115.不同的子序列、583. 两个字符串的删除操作、72. 编辑距离)
  • 一键获取每日股票数据,自动更新,尽在掌握
  • Autosar软件组件概述
  • 数字图像处理:图像复原应用
  • java 调用 k8s 的 apiserver
  • 公开选拔!产业实践教授
  • RHCE--at,crontab例行性工作
  • 滚雪球学Redis[5.3讲]:Redis持久化优化深度解析:RDB与AOF的策略选择与实践
  • Unity3D 框架如何实现道路引导 UV 动画详解
  • 如何优化API以提高数据获取的准确性?
  • 从MySQL到OceanBase离线数据迁移的实践
  • 鸿蒙跨设备协同开发06——应用接续
  • SpringCloud Gateway 网关路由全自动实现方案
  • MongoDB未授权访问
  • 《Spring Boot 应用开发研究》
  • 【OSCP Proving Grounds 靶场系列】Slort
  • oracle查询数据库占用大小
  • VTK的学习方法-第一类型应用