本文へスキップ

Flexboxプレイグラウンド

Flexbox Playground

実例の上でflexの各プロパティを切り替え、出来上がるCSSと各プロパティが何を変えたのかを表示します。

flexboxのすべてのプロパティを、動く実例の上で扱います。操作部ごとに、それが実際に何をするのかを1行で説明します。プレビューはブラウザ自身のflexレイアウトで、CSSはその状態を書き写したものなので、見えているとおりにページでも起きます。

🔒 ブラウザの中だけで動きますcssflexboxlayoutlearn

プレビュー

項目を押すと、その項目の設定を右側で変えられます。

コンテナ

項目 1

コード

出力
  • · 主軸は横に走ります。
  • · flex-grow がすべて 0 なので、余った空間を分けるのは justify-content です。

既定値のままの property は書き出しません。変えたところだけが出ます。

プレビューはブラウザ自身の flexbox で、CSS はその状態を書き写したものなので、ここで見えるとおりにページでも動きます。二次元の配置が必要なら CSSグリッド作成へどうぞ。

使い方

  1. コンテナのプロパティを決めます

    方向、折り返し、そして3つの配置プロパティです。それぞれ何を変えるのかが下に1文ずつ付いています。とくに`align-content`は、1行しかないときにはまったく何もしません。

  2. 項目を押して編集します

    grow、shrink、basis、align-self、orderは項目ひとつに適用されます。項目を足したり減らしたりして、コンテナが幅をどう配り直すか見てください。

  3. 説明を読んでCSSをコピーします

    いまの配置が実際にどう振る舞うかをパネルが説明し、出力からは既定値のままのプロパティをすべて外します。コピーされるのは変えたものだけです。

よくある質問

項目が縮まずにはみ出すのはなぜですか。

`flex-shrink: 0`か、子要素の最小コンテンツ幅のどちらかです。flex項目の`min-width`の既定値は`auto`で、これは中身より小さくならないという意味です。切れ目のない長い文字列か横に広い画像がよくある犯人で、`min-width: 0`が対処法です。

`align-items`と`align-content`は何が違いますか。

`align-items`は項目ひとつひとつを交差軸に置きます。`align-content`は、折り返しで行が2つ以上できたときに行の束を置きます。だから`nowrap`のとき、あるいは1行しかないときは、まったく何もしません。「このプロパティが壊れている」と言われるいちばん多い原因です。

並べ替えに`order`を使ってよいですか。

控えめに使ってください。見た目の順序だけを変えてDOMの順序は変えないので、スクリーンリーダーとタブ順は今もマークアップに従います。見た目を並べ替えた画面をキーボードでタブ移動すると、フォーカスが画面を飛び回ります。仕様が最後の手段だと言っている理由です。

flexboxとgridのどちらを使いますか。

一方向ならflexboxです。ボタンの並び、ツールバー、カードの中身といったものです。行と列が互いに揃っていなければならないならgridです。gridを真似ようとしてflexコンテナを入れ子にしているなら、欲しいのはgridです。

ここから渡せます

次の一手

このツールが出したものをそのまま受け取れる道具です。