网格创建视觉上的一致性,同时允许在各种设计中实现灵活性。Material Design响应式UI基于12列网格布局。
网格系统通过Grid组件实现:
它使用CSS的Flexible Box模块实现高度灵活性。 有两种类型的布局:容器和项目。 项目宽度以百分比设置,因此它们始终是流体的,并且相对于其父元素调整大小。项目具有填充以创建单个项目之间的间距。有五个网格断点:xs、sm、md、lg和xl。
Box只是一个盒子。它是一个包装在其内容周围的元素,本身不含样式规则,也没有任何默认效果的视觉输出。但它是放置样式规则的地方。它不提供任何真正的功能,只是一个控制分层标记结构中样式的占位符。
我经常认为它在语义上类似于JSX空元素:
<>
Some elements here
</>
只需使用部分Material UI功能:
<Box component="span" m={1}>
<Button />
</Box>
简而言之:
Box
是一个更强大、方便且有潜力的替代品,可用于取代div
。您可以将其更改为任何HTML元素(例如span
),但大部分时间您将使用它来替换div
。
Grid
是网格布局(Grid Layout)的语法糖。
需要对多个项目进行分组并控制它们在页面上的外观时,请使用 Box。例如,您可以取几个段落并使用框将其包围。
使用 Grid 设置网格布局系统以在页面上的列中组织内容。设计师将页面划分为12列,并认为沿着每个列或列组对齐内容更具视觉吸引力。以下是一篇提供有关此主题更详细信息的文章:https://www.interaction-design.org/literature/article/the-grid-system-building-a-solid-design-layout
Box
Box组件是大多数CSS工具需求的包装器组件。Box组件打包了@material-ui/system中公开的所有样式函数。它是使用@material-ui/core/styles的styled()函数创建的。
Grid
GridBox是Grid的低级表示。除了低级笔记本表达式操作外,不应直接使用GridBox。在笔记本中,可以使用<Column>
添加GridBox的列,使用<Row>
添加行,或者使用菜单项开始构建GridBox。
Box组件用于大多数CSS实用需求的包装器组件。
Box组件包装您的组件。它创建一个新的DOM元素,默认情况下是<div>
,可以通过组件属性进行更改。
假设您想使用<span>
代替:
<Box component="span" m={1}>
<Button />
</Box>
Grid
来代替flexbox
。但它似乎与CSS Grid没有任何关系。 - David Harkness