Chakra UI框架中响应式断点

发布于:2025-04-19 ⋅ 阅读:(29) ⋅ 点赞:(0)

默认的断点:base是默认样式,不带任何媒体查询,适用于所有屏幕。
sm是30em(约480px)
md是48em(768px)
lg是62em(992px)
xl是80em(1280px)
2xl是96em(1536px)
这些值都是基于em单位,但通常会被转换为像素来理解。

在 Chakra UI 中,响应式断点(breakpoints)基于 移动优先(Mobile-First) 的设计原则,默认提供以下 5 个尺寸等级:

默认断点列表

断点名称 对应 CSS 媒体查询范围 像素范围(近似值) 常见设备场景
base 无媒体查询(默认值) < 30em (≈480px) 超小屏手机(竖屏)
sm @media (min-width: 30em) 30em - 47.99em (480px-767px) 小屏手机(横屏)
md @media (min-width: 48em) 48em - 61.99em (768px-991px) 平板/小桌面
lg @media (min-width: 62em) 62em - 79.99em (992px-1279px) 标准桌面
xl @media (min-width: 80em) 80em - 95.99em (1280px-1535px) 大桌面/宽屏
2xl @media (min-width: 96em) ≥96em (≥1536px) 超大屏幕/4K 显示器

核心规则

1.移动优先:base 表示最小屏幕的默认值,其他断点按需覆盖
2.断点范围:

  • sm 覆盖 ≥480px
  • md 覆盖 ≥768px
  • 其他同理
    3.**自定义断点:**可通过主题配置修改(例如添加 3xl):
// theme.js
export const theme = extendTheme({
  breakpoints: {
    '3xl': '1600px'
  }
})

实用技巧

(1) 范围覆盖示意图

|------base------|-----sm-----|-----md-----|-----lg-----|-----xl-----|-----2xl-----|
<480px         480px      768px      992px      1280px     1536px

(2) 组合用法

// 手机竖屏隐藏,其他情况显示
display={{ base: "none", sm: "block" }}

// 仅在平板和桌面显示
display={{ base: "none", md: "flex" }}

// 超大屏幕特殊处理
display={{ base: "block", xl: "none" }}

(3) 调试工具

  • 浏览器开发者工具中切换设备模式,实时查看断点激活状态
  • 在控制台输入 window.innerWidth 获取当前视口像素值

常见误区

错误写法 问题 正确写法
display={{ sm: "block" }} 未定义 base 导致小屏无样式 display={{ base: "none", sm: "block" }}
display="block md:none" Chakra 不支持 Tailwind 语法 使用对象语法 display={{ base: "block", md: "none" }}

通过合理使用这些断点,可以轻松实现复杂的响应式布局!


网站公告

今日签到

点亮在社区的每一天
去签到