前端组件库——Chakra UI知识点大全(二)

简介: 教程来源 https://tmywi.cn/ Chakra UI样式系统以Style Props为核心,支持通过属性直写样式;内置主题系统管理设计令牌,轻松定制颜色、字体等;原生支持深色模式与移动优先响应式(数组/对象语法),断点精细可控,开发高效且一致。

三、样式系统

3.1 Style Props(样式属性)
Chakra UI最核心的特性是Style Props——通过React组件属性直接传递样式值,无需编写CSS或使用className。

import { Box, Button, Text } from '@chakra-ui/react'

function Example() {
  return (
    // 使用样式属性直接控制外观
    <Box bg="blue.500" p={4} rounded="md" shadow="lg">
      <Text fontSize="xl" fontWeight="bold" color="white">
        欢迎使用Chakra UI!
      </Text>
      <Button colorScheme="teal" mt={4}>
        开始使用
      </Button>
    </Box>
  )
}

常用Style Props分类:
image.png
3.2 主题系统
Chakra UI使用主题系统统一管理设计令牌(Design Tokens)。默认主题包含颜色、间距、断点、字体等配置。

import { extendTheme, ChakraProvider } from '@chakra-ui/react'

// 自定义主题
const theme = extendTheme({
  colors: {
    brand: {
      50: '#e6f7ff',
      100: '#bae7ff',
      500: '#1890ff',
      900: '#003a8c',
    },
  },
  fonts: {
    heading: `'Inter', sans-serif`,
    body: `'Inter', sans-serif`,
  },
  config: {
    initialColorMode: 'light',  // 初始颜色模式
    useSystemColorMode: true,   // 跟随系统主题
  },
})

function App() {
  return (
    <ChakraProvider theme={theme}>
      <YourApp />
    </ChakraProvider>
  )
}

主题对象结构:
image.png
3.3 颜色模式(深色模式)
Chakra UI内置了深色模式支持,所有组件都提供深色变体。

import { useColorMode, Button, IconButton } from '@chakra-ui/react'
import { SunIcon, MoonIcon } from '@chakra-ui/icons'

function ColorModeToggle() {
  const { colorMode, toggleColorMode } = useColorMode()

  return (
    <IconButton
      aria-label="切换主题"
      icon={colorMode === 'light' ? <MoonIcon /> : <SunIcon />}
      onClick={toggleColorMode}
    />
  )
}

深色模式配置选项:
image.png

四、响应式设计

4.1 响应式语法概述
Chakra UI采用移动优先(mobile-first)的响应式设计,使用min-width媒体查询。它提供了两种响应式语法:数组语法和对象语法。

4.2 默认断点
Chakra UI预定义了6个响应式断点:
image.png
4.3 数组语法
数组语法是最推荐的响应式写法,按照[base, sm, md, lg, xl, 2xl]的顺序传递值:

import { Box, Text } from '@chakra-ui/react'

// 宽度响应式:移动端100%,平板50%,桌面25%
<Box w={['100%', '50%', '25%']} bg="blue.500" p={4}>
  响应式宽度
</Box>

// 字体响应式:移动端小号,平板中号,桌面大号
<Text fontSize={['sm', 'md', 'lg', 'xl']}>
  响应式字体大小
</Text>

// 跳过某些断点(使用undefined占位)
<Box w={['100%', undefined, undefined, '50%']}>
  仅在移动端和桌面端有样式
</Box>

数组语法的解释:

索引0(base):从0px起生效

索引1(sm):从480px起生效

索引2(md):从768px起生效

索引3(lg):从992px起生效

索引4(xl):从1280px起生效

索引5(2xl):从1536px起生效
4.4 对象语法
对象语法使用断点名称作为键名,适用于需要更明确语义的场景:

import { Box, Text } from '@chakra-ui/react'

// 对象语法示例
<Box 
  bg={
  { base: 'blue.500', md: 'green.500', lg: 'red.500' }}
  p={
  { base: 2, md: 4, lg: 6 }}
>
  不同断点不同背景色和内边距
</Box>

<Text fontWeight={
  { base: 'medium', lg: 'bold' }}>
  在桌面端加粗显示
</Text>

4.5 高级断点定位
Chakra UI v3提供了更精细的断点控制工具:

  1. 范围定位(To语法)
    // 在md和xl断点之间应用样式
    <Text fontWeight={
        { mdToXl: 'bold' }}>
    在中等屏幕到超大屏之间加粗
    </Text>
    
  2. 单断点定位(Only语法)
    // 仅在lg断点应用样式
    <Text fontWeight={
        { lgOnly: 'bold' }}>
    仅在大屏幕上加粗
    </Text>
    
  3. 向下定位(Down语法)
    // 在sm断点及以下应用样式
    <Text fontWeight={
        { smDown: 'bold' }}>
    在小屏幕及以下加粗
    </Text>
    
    4.6 显示/隐藏工具
    Chakra UI提供了hideFrom和hideBelow工具,用于在特定断点显示或隐藏元素:
    ```
    import { Stack, Text } from '@chakra-ui/react'

// 在md断点及以上隐藏


在平板及以上隐藏

// 在md断点以下隐藏


在手机和平板上隐藏

**4.7 自定义断点**
可以通过扩展主题来自定义断点:

import { extendTheme } from '@chakra-ui/react'

const breakpoints = {
sm: '320px',
md: '768px',
lg: '960px',
xl: '1200px',
'2xl': '1536px',
}

const theme = extendTheme({ breakpoints })

⚠️ 注意:自定义断点时,建议使用统一的CSS单位(全部用px或全部用em,不要混用)。
**4.8 响应式变体最佳实践**
在使用组件变体(variant)时,建议使用明确的断点边界而非base断点,避免样式泄漏:

// ⚠️ 可能造成样式泄漏
< Button variant={ { base: 'solid', md: 'outline' }}>

// ✅ 推荐做法
< Button variant={ { smDown: 'solid', md: 'outline' }}>
```
来源:
https://tmywi.cn/

相关文章
|
17天前
|
人工智能 数据可视化 安全
王炸组合!阿里云 OpenClaw X 飞书 CLI,开启 Agent 基建狂潮!(附带免费使用6个月服务器)
本文详解如何用阿里云Lighthouse一键部署OpenClaw,结合飞书CLI等工具,让AI真正“动手”——自动群发、生成科研日报、整理知识库。核心理念:未来软件应为AI而生,CLI即AI的“手脚”,实现高效、安全、可控的智能自动化。
34827 46
王炸组合!阿里云 OpenClaw X 飞书 CLI,开启 Agent 基建狂潮!(附带免费使用6个月服务器)
|
12天前
|
人工智能 自然语言处理 安全
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)
本文介绍了Claude Code终端AI助手的使用指南,主要内容包括:1)常用命令如版本查看、项目启动和更新;2)三种工作模式切换及界面说明;3)核心功能指令速查表,包含初始化、压缩对话、清除历史等操作;4)详细解析了/init、/help、/clear、/compact、/memory等关键命令的使用场景和语法。文章通过丰富的界面截图和场景示例,帮助开发者快速掌握如何通过命令行和交互界面高效使用Claude Code进行项目开发,特别强调了CLAUDE.md文件作为项目知识库的核心作用。
11382 36
Claude Code 全攻略:命令大全 + 实战工作流(建议收藏)
|
7天前
|
人工智能 JavaScript Ubuntu
低成本搭建AIP自动化写作系统:Hermes保姆级使用教程,长文和逐步实操贴图
我带着怀疑的态度,深度使用了几天,聚焦微信公众号AIP自动化写作场景,写出来的几篇文章,几乎没有什么修改,至少合乎我本人的意愿,而且排版风格,也越来越完善,同样是起码过得了我自己这一关。 这个其实OpenClaw早可以实现了,但是目前我觉得最大的区别是,Hermes会自主总结提炼,并更新你的写作技能。 相信就冲这一点,就值得一试。 这篇帖子主要就Hermes部署使用,作一个非常详细的介绍,几乎一步一贴图。 关于Hermes,无论你赞成哪种声音,我希望都是你自己动手行动过,发自内心的选择!
2387 24
|
29天前
|
人工智能 JSON 机器人
让龙虾成为你的“公众号分身” | 阿里云服务器玩Openclaw
本文带你零成本玩转OpenClaw:学生认证白嫖6个月阿里云服务器,手把手配置飞书机器人、接入免费/高性价比AI模型(NVIDIA/通义),并打造微信公众号“全自动分身”——实时抓热榜、AI选题拆解、一键发布草稿,5分钟完成热点→文章全流程!
45733 157
让龙虾成为你的“公众号分身” | 阿里云服务器玩Openclaw
|
5天前
|
人工智能 弹性计算 安全
Hermes Agent是什么?怎么部署?超详细实操教程
Hermes Agent 是 Nous Research 于2026年2月开源的自进化AI智能体,支持跨会话持久记忆、自动提炼可复用技能、多平台接入与200+模型切换,真正实现“越用越懂你”。MIT协议,部署灵活,隐私可控。
1597 3
|
12天前
|
机器学习/深度学习 存储 人工智能
还在手写Skill?hermes-agent 让 Agent 自己进化能力
Hermes-agent 是 GitHub 23k+ Star 的开源项目,突破传统 Agent 依赖人工编写Aegnt Skill 的瓶颈,首创“自我进化”机制:通过失败→反思→自动生成技能→持续优化的闭环,让 Agent 在实践中自主构建、更新技能库,持续自我改进。
1785 6

热门文章

最新文章

下一篇
开通oss服务