尽管我可能会尝试,我还是无法理解给出的here描述。
Box组件充当大多数CSS实用程序需要的 Package 器组件。
什么是'的' CSS实用程序的需要?
此组件的使用情形是什么?它能解决什么问题?你怎么使用它?
我发现Material UI文档非常有限,很难理解。我在谷歌上搜索过,但通常只找到关于如何使用Material UI的相当轻量级的博客文章。此外,为了帮助理解这个组件,我真的会很感激任何好的资源(比如他们自己的文档的更好版本,如果这样的东西存在的话)。
(背景,我一般懂React、JS、CSS、HTML等,后两者实力较弱)。
4条答案
按热度按时间bqjvbblv1#
sx
属性定义CSS样式,而不仅仅是Box
;但是Box
也接受顶级的样式 prop ,以及sx
内的样式 prop 。*其他答案并不能真正解释使用
Box
的动机。Box
呈现了一个<div>
,为了方便起见,你可以直接通过React props应用CSS样式,因为像单独的CSS文件,CSS-in-JS或内联样式这样的替代方案可能会更麻烦。例如,考虑使用JSS的组件:
通过向
Box
传递您想要的props来完成此操作要短得多:还要注意
padding={1}
是theme.spacing(1)
的简写。Box
为使用类似的Material UI主题提供了各种便利。在较大的文件中,从呈现的元素到样式来回跳转可能比样式就在元素上更麻烦。
您不想使用
Box
(Material UI v4)的情况:classes
来覆盖样式(makeStyles
启用了此功能。<Example classNames={{ root: 'alert' }} />
可以在makeStyles
示例中工作,但不能在Box
示例中工作。)$root > li > a
、$root .third-party-class-name
)ee7vknir2#
一个
Box
基本上是一个div
* 类固醇。Box
允许您将动态样式应用到普通的div
上,就像内联样式一样(但它不是内联样式)。除此之外,它还与MUI主题进行了一流的集成:如果你需要用一个普通的
div
来做上面的事情,你必须使用useTheme
钩子来获取theme
对象,并创建一个内联样式,如果到处都被滥用,这不是一个好的做法:Box
和其他组件(如Typography
或Stack
)也支持系统属性,允许您将样式值传递给顶级属性,从而缩短代码。在内部,系统属性被收集并与sx
prop合并,因此它们是相同的(有关更多详细信息,请参见this答案)由于
Box
利用了sx
prop,因此您还可以使用sx
功能,例如添加responsive values:或创建嵌套样式:
什么时候使用
Box
?div
原型时。sx
语法非常紧凑。sx
属性都是开箱即用的主题感知属性。什么时候 * 不 * 使用
Box
?div
吧。sx
prop的性能最慢(比第二慢的方法慢2倍)。sx
,因此如果您只想对其他MUI组件进行样式化,则不需要使用Box
作为 Package 器或根组件。Box
是div
,但您可以覆盖它的根组件。例如:<Box component='span'>
nnvyjq4y3#
Box
就是一个盒子。它是一个围绕其内容的元素,它本身不包含样式规则,也没有任何默认的视觉输出效果。但它是根据需要放置样式规则的地方。它不提供任何真实的的功能,只是一个占位符,用于控制分层标记结构中的样式。在结构上,它会导致
<div>
。我经常认为它在语义上类似于JSX空元素:
因为它是用来分组的。但它会导致
<div>
,并且可以包含一些Material UI功能:yiytaume4#
Material UI中的Box组件有很多有用的东西
最重要的是,box元素已经默认内置了material-ui/system功能,这意味着如果将其用作 Package 器,则可以将系统功能应用于所需内容
例如:
当然,你可以添加css类,因为你喜欢或不
它所提供其他好的有用的东西可以在其他组件中变形,且非常有助于将系统功能应用于它
例如:
上面的两个例子都是我从文档中获取的,你可以在这个链接中找到它们:here
你可以找到我所说的Material UI系统功能:here
注意:你可以添加任何材料的ui系统功能到任何组件,如docs here,但我建议你翘曲你需要与框组件,它使生活容易得多