文档Styling响应式设计

响应式设计

响应式设计是现代前端开发的一个基本概念,它使网站和应用能够无缝适应不同的屏幕尺寸和设备。

Nex UI 使用一种以移动端优先的断点系统,并且当你编写响应式样式时,它会利用最小宽度媒体查询 @media (min-width)

Nex UI 默认提供 5 个断点:

const breakoptions = { sm: '640px', md: '768px', lg: '1024px', xl: '1280px', '2xl': '1536px', }

使用 Breakpoint

您可以在 sx 属性defineRecipe 或者 defineSlotRecipe 使用上述 Breakpoints。 在这些方法中,所有 CSS 属性都支持针对特定断点的响应式值。

有两种使用方式能够定义一组断点:一个对象,或者一个数组。

对象类型

下面的例子演示了如何使用对象语法定义一组断点:

This box has a responsive width.

import { Box } from '@nex-ui/react' export default function App() { return ( <Box sx={{ width: { _sm: 200, // @media (min-width: 640px) { width: 200px } _md: 300, // @media (min-width: 768px) { width: 300px } _lg: 400, // @media (min-width: 1024px) { width: 400px } _xl: 500, // @media (min-width: 1280px) { width: 500px } _2xl: 600, // @media (min-width: 1536px) { width: 600px } }, }} > This box has a responsive width. </Box> ) }

数组类型

第二种选择是将你的断点定义为一个数组,按照从小到大的顺序排列。如下所示:

This box has a responsive width.

<Box sx={{ width: [200, 300, 400] }}>This box has a responsive width.</Box> // [200, 300, 400] 分别对应为 [breakpoints.sm, breakpoints.md, breakpoints.lg]

只有当主题的断点数量有限时,才应该考虑这个选项,例如只有三个断点的情况。

如果您需要定义不止几个断点,我们建议使用对象 API。

您可以通过 null | undefined 跳过相应的断点:

<Box sx={{ width: [200, null, 400] }}>This box has a responsive width.</Box>

当然,不论是数组还是对象,width 的属性值都可以修改为 Sizes TokensSizes SemanticTokens。这也意味着,其他的 CSS 属性同样支持关联类型的 Tokens。

Breakpoints 选择器

通过上述两种方式,大幅简化了对单个 CSS 属性定义和实现响应式断点的过程。若是想要对一组 CSS 属性实现响应式,那您可以将断点作为选择器使用:

<Box sx={{ _md: { width: 300, height: 300, }, _lg: { width: 400, height: 400, }, }} > This box has a responsive size. </Box>

这种方式在复杂 CSS 样式场景下,更利于理解和维护。

自定义 Breakpoints

您还能够定义自定义断点,并在定义断点对象时将它们用作键。

Breakpoints 了解如何自定义断点。

最后更新时间