CSSフレックスボックス・ジェネレーター

Flexboxレイアウトを視覚的に構築 · コンテナと項目のプロパティを調整し、ライブプレビューを表示し、CSSをコピーします。

コンテナプロパティ

ライブプレビュー

生成されたCSS

使い方

  1. コンテナのプロパティを定義: flex-direction、justify-content、align-items、flex-wrap、gapでflexコンテナを構成します。
  2. flex項目を追加して構成: 子項目を追加し、各項目に対してflex-grow、flex-shrink、flex-basis、align-self、orderを個別に定義します。
  3. CSSをコピー: コンテナと項目用の完全なCSSを取得し、プロジェクトで使用する準備ができています。

なぜFlexboxジェネレーターを使うのか?

Flexboxは1次元CSSレイアウトに不可欠なツールです, 強力な分配および整列コントロールで項目を行または列に並べます。しかし、プロパティは多く、それらの相互作用は複雑です: justify-content対align-items、flex-grow対flex-basis、メイン軸対クロス軸。このインタラクティブジェネレーターは、各プロパティを変更すると瞬時に視覚的フィードバックを提供し、Flexboxを学習し、レイアウトに適したCSSを取得する最速の方法になります。

機能

よくある質問

justify-contentとalign-itemsの違いは?

justify-contentは項目をメイン軸(デフォルトでは水平)に沿って分配します。align-itemsは項目をクロス軸(デフォルトでは垂直)に沿って整列します。flex-directionがcolumnの場合、軸が反転します, justify-contentは垂直になり、align-itemsは水平になります。

FlexboxとCSS Gridはいつ使い分けるべきですか?

Flexboxは1次元レイアウトに使用, ボタンの行、ナビゲーションバー、改行する必要のあるカードのリスト。CSS Gridは、完全なページレイアウトや複雑なカードグリッドなど、行と列を同時に制御する必要がある2次元レイアウトに使用します。

flex: 1は何を意味しますか?

flex: 1はflex-grow: 1; flex-shrink: 1; flex-basis: 0%のショートカットです。これは項目に、利用可能なスペースを埋めるために成長し、必要に応じて縮小し、スペースを分配する前にゼロから開始するように指示します。flex: 1を持つすべての項目はスペースを均等に共有します。

Flexboxが実際に行うこと

Flexbox (Flexible Box Layout) は、一次元方向 (行または列) でスペースを分配しアイテムを整列するために設計されたCSSレイアウトモデルです。すべての動作を決定する2つのコア概念を導入します: メイン軸 (アイテムが流れる主方向、デフォルトでは水平) とクロス軸 (メイン軸に垂直、デフォルトでは垂直)。メインとクロスを内在化すれば、すべてのFlexboxプロパティはどちらかにマップされます: justify-contentはメイン軸で動作、align-itemsはクロス軸で動作、flex-directionはどちらの軸がどちらかを入れ替えます。

Flexboxは、1998年から2014年までウェブ開発者を悩ませた一連のレイアウト問題を解決しました。Flexboxの前は、要素を垂直方向に中央に揃えるにはハック (display: table-cell、負のマージン、translate変換付きのposition: absolute) が必要でした。等しい高さのカラムには背景画像付きの偽カラムテクニックが必要でした。スティッキーフッターには正確なピクセル計算が必要でした。Flexboxはこれらすべてを些細なことにしました: 1行の宣言が何十年ものCSSの回避策に取って代わります。トレードオフはFlexboxが一次元であることです; 二次元レイアウト (行と列を同時に) には、CSS Grid (2017年リリース) が良いツールです。

Flexboxプロパティはきれいに2つのグループに分かれます: コンテナプロパティ (親に適用: display: flexflex-directionflex-wrapjustify-contentalign-itemsalign-contentgap) とアイテムプロパティ (子に適用: flex-growflex-shrinkflex-basisalign-selforder)。コンテナプロパティはレイアウトパターンを制御します; アイテムプロパティは個々の例外を制御します。このジェネレーターは両方のセットを表面化させるので、コードを書かずにそれらがどう相互作用するかを実験できます。

このツールが内部でどのように動くか

ライブプレビューは、サンプル子要素を持つフレックスコンテナです。ドロップダウンと入力でコンテナプロパティ (flex-direction、justify-contentなど) を変更すると、JavaScriptがプレビューコンテナのインラインスタイルを更新し、ブラウザがレイアウトを再レンダリングします。プレビューは実際のブラウザのFlexbox実装であり、JavaScriptシミュレーションではありません: 実際のページであなたのCSSが生成するものを正確に見ることができます。

アイテムごとの制御は、各子を個別に調整できます。アイテムを追加または削除し、それらのflex-grow、flex-shrink、flex-basis、align-self、order値を設定し、コンテナがそれに応じてスペースを再分配する様子を見ることができます。視覚的な軸インジケータが現在の構成のメイン軸とクロス軸を示し、メンタルモデルを強化します。プロパティは実際のCSSで、トランスパイルやフレームワークの接頭辞を必要とせずに、そのままスタイルシートにコピーできます。

Generated CSSパネルは各操作で更新され、2つのCSSルールを生成します: コンテナ用 (選択したflexプロパティ付き) とアイテム用です。Copy CSSをクリックすると、ルールがクリップボードに書き込まれます。ツール自体はネットワークリクエストをまったく行いません; プレビューレンダリング、コード生成、クリップボード書き込みはすべてあなたのデバイス上のJavaScriptで起こります。ページをリロードすると、最初にCSSをコピーしない限り構成は消えます。

Flexboxの簡単な歴史

実世界のワークフロー

よくある落とし穴とその意味

プライバシー: すべてはブラウザ内で動作する

CSS学習とレイアウトツールは2つのフレーバーで提供されます: クライアントサイドJavaScriptを実行する単純なHTMLページ (プライベート、高速、セットアップなし) と保存されたプロジェクト付きのクラウドエディタ (協調的だがプライバシーのトレードオフあり)。このツールは最初の種類です。プロパティの選択、アイテム構成、生成されたCSS: すべてあなたのブラウザセッションに留まります。ページをリロードすると、最初にCSSをコピーしない限り状態は消えます。

Flexbox構成はめったに機密情報を含まないため、ここではプライバシーの賭けは低いです。それでも、分析の欠如が重要です: 試行錯誤プロセスが記録されることなく自由に実験できます。学生や研修生がサードパーティプラットフォームでアカウントを登録することが摩擦点となる教室や企業研修の設定で特に役立ちます。ツールはバックエンドなしの単一の静的ページであり、ロックダウンされたエンタープライズマシンを含む任意のブラウザで使用可能です。

別のツールが正しい選択になるとき

その他のよくある質問

flex shorthandは正確に何を意味しますか?

flex shorthandは一度に3つのプロパティを設定します: flex: <grow> <shrink> <basis>。一般的な値: 均等分配アイテムにはflex: 1 (1, 1, 0%)、固定サイズアイテムにはflex: 0 0 auto、250pxの出発点から成長/縮小するアイテムにはflex: 1 1 250px。shorthandは1つまたは2つの値だけが提供されたときに特別な初期値を持ちます; 明示的な3値形式は驚きを避けます。

アイテムを複数の行に折り返すにはどうしますか?

コンテナにflex-wrap: wrapを設定します。アイテムは収まらないときに新しい行にオーバーフローします。アイテムのflex-basisと組み合わせて、行ごとに何個収まるかを制御します: flex: 1 1 200pxは、アイテムが少なくとも200pxで、残りのスペースを埋めるように成長し、狭い画面では新しい行に折り返るレスポンシブグリッドを作成します。コンテナのgapプロパティが折り返された行とアイテム間のスペースを処理します。

flexアイテムの順序を反転できますか?

はい、複数の方法で。コンテナレベル: flex-direction: row-reverse (またはcolumn-reverse) はすべてのアイテムを順序で反転します。アイテムレベル: orderプロパティは数値の重みを割り当てます; より低い数のアイテムが最初に現れます。デフォルトの順序は0です; 1つのアイテムにorder: -1を設定すると前に移動します。アクセシビリティに関する注: 視覚的な並べ替えはタブ順序やスクリーンリーダーの読み取り順序に影響しません。これはキーボードや支援技術のユーザーを混乱させる可能性があります。控えめに使用してください。

align-itemsとalign-contentの違いは何ですか?

align-itemsはクロス軸に沿って行 (または列) 内のアイテムを整列します。align-contentはコンテナ内で行 (または列) 自体を整列し、複数の折り返された行がある場合にのみ意味があります。flex-wrapnowrap (デフォルト) に設定されている場合、align-contentは効果がありません。行が1つしかないからです。シングルライン整列にはalign-itemsを、マルチライン整列にはalign-contentを使ってください。

Flexboxで単一要素を中央に揃えるにはどうしますか?

古典的な答え: 親コンテナにdisplay: flex; justify-content: center; align-items: center;。これは子を水平方向と垂直方向の両方で中央に揃えます。水平のみ: justify-content: centerのみを使ってください。垂直のみ: align-items: centerのみを使ってください。高さが不明な親内で中央に揃える必要がある場合、親にmin-height: 100vhを追加して中央に揃えるための垂直スペースを持たせます。パターン全体は20年間のCSS中央揃え回避策を置き換えます。

なぜ私のflexコンテナでテキスト切り詰めが機能しないのですか?

flexアイテムのデフォルトのmin-width: autoのせいです。Text-overflow: ellipsisは要素がコンテナを実際にオーバーフローすることを要求します; 最小幅がコンテンツの固有サイズに設定されているデフォルトでは、要素はオーバーフローしません。修正: 切り詰めるテキストを含むflexアイテムにmin-width: 0を追加します。これは史上最も一般的なFlexboxのバグStack Overflow回答です: 「flex text-overflow ellipsis not working」を検索すると、まさにこの答えの何千ものバージョンが返されます。

関連ツール