Chakra UI 简介 #

什么是 Chakra UI? #

Chakra UI 是一个简单、模块化且易于访问的 React 组件库,由 Segun Adebayo 创建并于 2019 年发布。它提供了构建 React 应用程序所需的所有构建块,专注于开发者体验、无障碍性和可定制性。

核心特点 #

特点 说明
无障碍性 所有组件遵循 WAI-ARIA 规范
主题化 强大的主题系统,易于定制
组件丰富 50+ 可复用的组件
TypeScript 完整的类型定义支持
暗色模式 内置颜色模式支持
响应式 简洁的响应式样式语法

为什么选择 Chakra UI? #

1. 开发效率 #

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

function App() {
  return (
    <Flex direction="column" align="center" p={4}>
      <Text fontSize="2xl" fontWeight="bold">
        Welcome to Chakra UI
      </Text>
      <Button colorScheme="blue" mt={4}>
        Get Started
      </Button>
    </Flex>
  )
}

2. 无障碍优先 #

Chakra UI 的所有组件都遵循 WAI-ARIA 规范,确保你的应用对所有用户都可访问:

jsx
<Button 
  aria-label="Add item to cart"
  leftIcon={<AddIcon />}
>
  Add to Cart
</Button>

3. 主题定制 #

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

const theme = extendTheme({
  colors: {
    brand: {
      100: '#f7fafc',
      900: '#1a365d',
    },
  },
})

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

4. 响应式设计 #

jsx
<Box 
  width={['100%', '50%', '25%']}
  fontSize={{ base: 'md', md: 'lg', lg: 'xl' }}
>
  Responsive Box
</Box>

Chakra UI 的历史 #

text
2019年 ─── Chakra UI 诞生
    │
    │      Segun Adebayo 创建
    │      专注于无障碍和开发者体验
    │
2020年 ─── Chakra UI 1.0 发布
    │
    │      稳定版本发布
    │      社区快速增长
    │
2021年 ─── Chakra UI 2.0 发布
    │
    │      性能优化
    │      新增组件
    │      更好的 TypeScript 支持
    │
至今   ─── 持续更新迭代
    │
    │      活跃的社区
    │      丰富的生态系统

Chakra UI vs 其他组件库 #

Chakra UI vs Ant Design #

特性 Chakra UI Ant Design
设计风格 简洁现代 企业级
无障碍 优先考虑 基本支持
主题定制 灵活 相对固定
包体积 较小 较大
学习曲线 较低 中等
适用场景 通用应用 企业后台

Chakra UI vs Material UI #

特性 Chakra UI Material UI
设计风格 中性 Material Design
组件数量 50+ 70+
样式方案 Emotion Emotion/JSS
TypeScript 完整支持 完整支持
文档质量 优秀 优秀

Chakra UI vs styled-components #

特性 Chakra UI styled-components
类型 组件库 CSS-in-JS 库
组件 开箱即用 需要自己构建
无障碍 内置支持 需要手动处理
主题 内置系统 需要配置
学习曲线 较低 中等

Chakra UI 的设计原则 #

1. 无障碍优先 #

所有组件默认遵循 WAI-ARIA 规范:

text
┌─────────────────────────────────────┐
│           Chakra UI 组件             │
├─────────────────────────────────────┤
│  ✓ 键盘导航支持                       │
│  ✓ 屏幕阅读器友好                     │
│  ✓ 正确的 ARIA 属性                   │
│  ✓ 焦点管理                          │
│  ✓ 颜色对比度合规                     │
└─────────────────────────────────────┘

2. 组合优于继承 #

jsx
<Box 
  p={4} 
  bg="blue.500" 
  color="white" 
  borderRadius="md"
>
  <Text fontSize="xl">组合式设计</Text>
</Box>

3. 约定优于配置 #

jsx
<Button colorScheme="blue">Primary</Button>
<Button colorScheme="red">Danger</Button>
<Button colorScheme="green">Success</Button>
<Button colorScheme="gray">Neutral</Button>

4. 响应式优先 #

jsx
<Grid 
  templateColumns={{
    base: '1fr',
    md: 'repeat(2, 1fr)',
    lg: 'repeat(3, 1fr)'
  }}
  gap={6}
>
  <GridItem>Item 1</GridItem>
  <GridItem>Item 2</GridItem>
  <GridItem>Item 3</GridItem>
</Grid>

技术架构 #

text
Chakra UI 架构
├── @chakra-ui/react       核心组件库
├── @chakra-ui/theme       默认主题
├── @chakra-ui/icons       图标库
├── @emotion/react         CSS-in-JS 引擎
├── @emotion/styled        样式化组件
└── framer-motion          动画库

适用场景 #

1. 快速原型开发 #

jsx
import { Box, Button, Input, VStack } from '@chakra-ui/react'

function LoginForm() {
  return (
    <VStack spacing={4} p={8} bg="white" borderRadius="lg" shadow="md">
      <Input placeholder="Email" />
      <Input placeholder="Password" type="password" />
      <Button colorScheme="blue" width="full">Login</Button>
    </VStack>
  )
}

2. 企业级应用 #

jsx
import { 
  Box, Flex, Text, IconButton, 
  Menu, MenuButton, MenuList, MenuItem 
} from '@chakra-ui/react'

function Dashboard() {
  return (
    <Flex>
      <Box as="nav" bg="gray.800" color="white" p={4}>
        <Text fontSize="xl" fontWeight="bold">Dashboard</Text>
      </Box>
    </Flex>
  )
}

3. 设计系统 #

jsx
const theme = extendTheme({
  components: {
    Button: {
      variants: {
        custom: {
          bg: 'brand.500',
          color: 'white',
          _hover: { bg: 'brand.600' }
        }
      }
    }
  }
})

浏览器支持 #

浏览器 支持版本
Chrome 最新 2 个版本
Firefox 最新 2 个版本
Safari 最新 2 个版本
Edge 最新 2 个版本

社区生态 #

官方资源 #

第三方资源 #

学习建议 #

  1. 从基础开始:先掌握 Box、Flex、Text 等基础组件
  2. 理解样式系统:学习 Style Props 和主题系统
  3. 实践组件:通过实际项目练习各种组件
  4. 深入定制:学习主题定制和组件扩展

下一步 #

现在你已经了解了 Chakra UI 的基本概念,接下来学习 安装配置,开始你的 Chakra UI 之旅!

最后更新:2026-03-28