DEV Community

kaede
kaede

Posted on

Mui Flex で色付き Box を流す。

準備

import Box from '@mui/material/Box';
Enter fullscreen mode Exit fullscreen mode

React MUI で Box を用意。

400 x 400 の グレーの Box のなかに
150 x 150 の 黒と水色の Box を入れる構成。


flex で 横 ( row ) に並べる

グレーのボックスに

display: flex,
flexDirection: 'row'
Enter fullscreen mode Exit fullscreen mode

これを指定する。

Image description

すると、中身が横に並ぶ。

      <Box sx={{ 
        width : 400,
        height: 400,
        background: 'gray',
        display: 'flex',
        flexDirection: 'row'
        }}>
        <Box sx={{ 
          width : 150,
          height: 150,
          background: 'black',
          }}>
        </Box>

        <Box sx={{ 
          width : 150,
          height: 150,
          background: 'cyan',
          }}>
        </Box>
      </Box>
Enter fullscreen mode Exit fullscreen mode

flex を付けた時点で flex direction はデフォルトが row


Flex で 縦 ( column ) に並べる





反対にグレーの Box に

flexDirection: 'column'
Enter fullscreen mode Exit fullscreen mode

これを指定すると

Image description

縦並びになる。

HTML ではデフォルトが縦で、 flex 使う時点で横に並べたいので使い道はなさそう。


応用して Header, Sidebar, main を作る

Image description

    <>
      <Box sx={{ 
        width : 1200,
        height: 150,
        background: 'salmon',
        }}>
          header
      </Box>
      <Box sx={{ 
        width : 1200,
        height: 800,
        color: 'white',
        background: 'gray',
        display: 'flex',
        flexDirection: 'row'
        }}>
        <Box sx={{ 
          width : 250,
          height: 700,
          background: 'black',
          }}>
            sidebar
        </Box>

        <Box sx={{ 
          width : 750,
          height: 600,
          color: 'black',
          background: 'cyan',
          }}>
            main
        </Box>
      </Box>
    </>
Enter fullscreen mode Exit fullscreen mode

flex 指定をしていない Header の下に コンテナを流し

コンテナの中に sidebar と main を flex で右に流す。

これでだいぶ web サイトっぽいレイアウトができる。手軽。

まとめ

MUI で flex をつけると、そのコンポーネントの子供達が横に並ぶ。

column に指定すると縦に並ぶ。

flex を付けたコンポーネント自体をいくら並べても横には並ばない。

Top comments (0)