当サイトは、アフィリエイト広告を利用しています
flexboxで要素数にかかわらす均等幅で横並びにする方法をまとめる
アイテムの中身の文字数等が違う場合に大きさが変わってしまう
/** @jsxImportSource @emotion/react */import styled from "@emotion/styled";import { css } from "@emotion/react";export default function App() {return (<div className="App"><div css={[styles.container]}><div css={[styles.item]}>ccccccc</div><div css={[styles.item]}>bbb</div><div css={[styles.item]}>d</div><div css={[styles.item]}>d33333333333333dd</div></div></div>);}const styles = {container: () => [css`display: flex;justify-content: center;`],item: () => [css`border: 1px solid black;text-align:center;`]};
いくつかの対応方法
flex-wrap: wrapを設定しない場合であれば 「width:100%」を設定するだけでいい。
/** @jsxImportSource @emotion/react */import styled from "@emotion/styled";import { css } from "@emotion/react";export default function App() {return (<div className="App"><div css={[styles.container]}><div css={[styles.item]}>ccccccc</div><div css={[styles.item]}>bbb</div><div css={[styles.item]}>d</div><div css={[styles.item]}>d33333333333333dd</div></div></div>);}const styles = {container: () => [css`display: flex;justify-content: center;`],item: () => [css`border: 1px solid black;width:100%;text-align:center;`]};
「flex-wrap: wrap」がある場合は使えない。
flex:1を設定することで全ての要素を均等にできる。
「flex-wrap: wrap」がない場合も同様に使えるので基本は
この形を使う
/** @jsxImportSource @emotion/react */import styled from "@emotion/styled";import { css } from "@emotion/react";export default function App() {return (<div className="App"><div css={[styles.container]}><div css={[styles.item]}>ccccccc</div><div css={[styles.item]}>bbb</div><div css={[styles.item]}>d</div><div css={[styles.item]}>d33333333333333dd</div></div></div>);}const styles = {container: () => [css`display: flex;justify-content: center;flex-wrap: wrap`],item: () => [css`border: 1px solid black;flex:1;word-wrap: break-word;min-width: 0;text-align:center;`]};
最終手段。固定値で書く。
/** @jsxImportSource @emotion/react */import styled from "@emotion/styled";import { css } from "@emotion/react";export default function App() {return (<div className="App"><div css={[styles.container]}><div css={[styles.item]}>ccccccc</div><div css={[styles.item]}>bbb</div><div css={[styles.item]}>d</div><div css={[styles.item]}>d33333333333333dd</div></div></div>);}const styles = {container: () => [css`display: flex;justify-content: center;flex-wrap: wrap`],item: () => [css`border: 1px solid black;width:200px;text-align:center;`]};