Material UI in React [Day 2] Layout (Container & Box)

今天会介绍Material UI 的排版系统,可以进入官网从侧边栏可以看到以下画面:
https://ithelp.ithome.com.tw/upload/images/20210902/20129020RNNSAfrbP7.png

Container

我们先从Container的组件开始讲解,从命名来说和bootstrap的class="container"的概念是一样的,只不过宽度的部分变成properties: maxWidth,接受值分别为'false'|'xs'|'sm'|'md'|'lg'|'xl'

<Container maxWidth="sm">

Breaking Point的部分default值和bootstrap是一样的,当然也可以透过复写的方式去更动,如果想要拿掉预设的padding的话,只需要加上properties: disableGutters,如果想要固定尺寸的话可以下properties: fixed,来让最大宽度以匹配当前断点的最小宽度。

Box

Box 组件能够作为一个包装组件来使用,它会创建一个新的 DOM 元素,默认情况下会是div,可以透过
properties: component 进行变更,接受的值将会是html tag的字串。

<Box component="span" m={1}>
  <Button />
</Box>

它也是自带 margin, padding 的 properties,用法就和bootstrap相同,只不过改为properties带入参数值,参数值将会是你定义的spacing宽度,预设为'8px',也就是说 m={1} === margin: 8px,以下可以在官网的这里做参考:
m - margin
p - padding
方向
t - top 上
b - bottom 下
l - left 左
r - right 右
x - 水平轴 (左&右)
y - 纵轴(上&下)
从上面可以组成你想要的spacing,例如:
mt={3} || mx={1} || py={0.5} || p={0,2} ...以此类推,也可以丢入字串,例:
mb="2rem" || py="auto"
如果需要调整宽度高度的话也可以在 Box 内的 properties: height || width 下对应的参数来变更,详细可以看这里
再来就要用到比较常用的排版 Flexbox 了,可以在这里查看详细,我个人在使用 flex 排版的时候会比较喜欢用 Box 打包起来,直接用它的 properties: display 去下 flex 的效果,例如:

<Box 
  display="flex"
  justifyContent="center"
  alignItems="center"
  flexDirection="row"
  flexWrap="wrap"
  m={1}
>
    <Box p={1} order={2} bgcolor="#CCC">
      Item 1
    </Box>
    <Box p={1} order={1} bgcolor="#CCC">
      Item 2
    </Box>
    <Box p={1} order={3} bgcolor="#CCC">
      Item 3
    </Box>
</Box>

properties 的命名也与 CSS 是相同的,只是需要转成驼峰命名,带入的值也与css相同。

当然,properties: display,也可以定义成其它的形式,例如: 'block', 'inline', 'none'...等等,也可以针对不同的 Breaking Point 以物件的格式做切换:

<Box display={{ xs: 'block', md: 'none' }}>
  小尺寸
</Box>
<Box display={{ xs: 'none', md: 'block' }}>
  中尺寸
</Box>

上面的做法一样可以用在 spacing 或 sizing 上,用来对不同尺寸的萤幕做不同程度的缩放。

今天的讲解就先到这里,其实Box的应用还很多,明天会和各位补充 Grid 排版及 createTheme 的用法。


<<:  [Day 2]- 企业环境因素&组织过程资产

>>:  Day 3 - Rancher 架构与安装方式介绍

管制与自我管理

管制也要带来成长 一提到管制不知道大家会想到什麽,也许是国家法规、公司规章,又或是规模小一点的上下班...

接API

缘由: 接API大概是在科技业的面试时最常问的问题了吧,但老实说资料的复杂性能不能接得正确好像才是关...

JS Truthy 与 Falsy DAY55

MDN: https://developer.mozilla.org/zh-CN/docs/Glos...

Day3 — 前导:电晶体如何组成逻辑闸

如果用非常概括性的说法来描述 CPU 的组成,其实就是数以亿计的电晶体组合而成的。那麽电晶体又是怎麽...

追求JS小姊姊系列 Day17 -- 方函式的能力展现:有小弟真好:函式隐含参数 arguments

前情提要 方函式也有流程分工,参数负责收东西 方函式:(电话再响)喂,你说参数不在东西谁要收吗?直接...