CSSのFlexboxは、CSS3で導入された機能のひとつです。本記事ではCSSのFlexboxの基礎知識や基本的な使い方、各プロパティについて詳しく解説します。CSSでFlexboxを使いたい方やFlexboxの勉強をしたい方は、ぜひ参考にしてください。
目次
複雑なレイアウトを少ないコードで作成できる場合が多いため、FlexboxはWebページのレイアウトを効率的に制御するための強力な機能であり、現代のWebデザインにおける重要な役割を果たしています。とくに、レスポンシブデザインや動的なコンテンツの配置において、Flexboxは有用です。
Flexboxは親要素がFlexコンテナとなり、その中にFlexアイテムと呼ばれる子要素を内包する形で構成されています。つまり、親要素にdisplay:flex;を指定しFlexコンテナにすると、その子要素は自動的にFlexアイテムになるのです。Flexboxは基本的に一次元(行または列)のレイアウトに特化しており、要素を横に並べた後に下へ折り返します。この形式は、要素を揃えて配置することに長けています。
Flexboxは、ChromeやEdge・Firefoxなど多くのデスクトップブラウザや主要なモバイルブラウザに対応しています。Internet ExplorerはIE11から一定程度のサポートがありますが、2023年8月時点でサポートは終了しており、完全な互換性も保証されていません。基本的には主要なモダンブラウザのほとんどが、Flexboxを広くサポートしています。
「CSS」のFlexboxを使いこなすことによって、見やすいレイアウトを簡単に作成可能です。ここからは、4つの特徴について詳しく解説します。
Flexboxは、Webページの要素を自由に横や縦に配置するための強力なツールです。従来のfloatやinline−blockを使った方法と比べて、より簡単かつ柔軟にレイアウトを作成できます。
Flexboxを使用すると、要素のサイズや順序・配置を比較的自由に変更できます。また、要素間の余白も容易に調整可能です。これにより、レスポンシブデザインや複雑なレイアウトも簡単に実現できます。Flexboxを使用すれば、Webデザインの幅が広がり、より魅力的なWebページを作成できるでしょう。
Flexboxでは、特定のプロパティを用いて、親要素(Flexコンテナ)の高さに合わせた子要素(Flexアイテム)の高さの自動調整が可能です。そのため、要素間の高さを手動で一致させる必要がなく、Webページのデザインが一貫性を持ち、整った見た目のWebページが作れます。この機能は、とくにレスポンシブデザインにおいて有用です。
Flexboxでは、orderプロパティを使用してFlexアイテムの表示順序を自由に指定できます。これにより、HTMLのソースコードの順序とは異なる順序で要素を表示できます。
従来の方法で要素の順序を変更するには、HTMLのソースコードを変更する必要がありました。しかし、Flexboxを使用するとCSSだけで順序を変更できるためWebページのデザインがより柔軟になります。
Flexboxでは、justify−contentやalign−itemsなどのプロパティを使用して、Flexアイテム間の余白を簡単に指定できます。これにより、要素間のスペースを自由に調整可能です。
従来の方法では、要素の余白を指定するためにmarginやpaddingを手動で調整する必要がありました。しかしFlexboxを使用すると、特定のプロパティによって余白の調整が容易になります。これにより、Webページのデザインが一貫性を持ち、見た目が整ったものになるのです。
Flexboxでどのようなことができるのかを、サンプルコードとともに解説するので、参考にしてください。
Flexboxを使うときは、HTMLの親要素にdisplay: flex;を指定します。この指定をおこなうことで、その要素はFlexコンテナとして機能する仕組みです。
ただし、この設定だけではFlexboxの強力な機能はあまり活用できません。子要素(Flexアイテム)の並び替えや配置・伸縮の設定など、さまざまなプロパティを用いてレイアウトをより詳細に制御できます。
たとえば、以下のHTMLコードがあるとします。
<!DOCTYPE html> <html> <head> <link rel="stylesheet" type="text/css" href="styles.css"> </head> <body> <div class="flex−container"> <div class="flex−item">1</div> <div class="flex−item">2</div> <div class="flex−item">3</div> </div> </body> </html>
<div class="flex-container">の要素を装飾するCSSコードが、以下の通りです。
.flex−container { display: flex; } .flex−item { width: 100px; height: 100px; background−color: LightSkyBlue; text−align: center; line−height: 100px; }
上記の「CSS」では、display: flex;プロパティを親要素(ここでは .flex−container)に適用することで、その子要素(.flex−item)が自動的にflexアイテムとなるのです。
子要素(.flex−item)において、widthとheightで幅と高さを設定しています。これは見た目をわかりやすくするために設定するオプションです。
background−color, text−align, line−heightもオプションで、見た目を整えるためのものです。
Flexboxには、子要素(フレックスアイテム)に適用できるいくつかの主要なプロパティがあります。ここでは、6つのプロパティについて解説します。
プロパティ名 | 概要 | サンプルコード |
---|---|---|
order | orderプロパティでアイテムの順序を変更できる。デフォルトは0。 |
/* 第1アイテムを最後に移動 */ .item1 { order: 1; } |
flex−grow | flex−growプロパティでアイテムが主軸に沿ってどれだけ「成長」するかを決定できる。デフォルトは0。 |
/* アイテムを倍に「成長」させる */ .item1 { flex−grow: 2; } |
flex−shrink | flex−shrinkプロパティでアイテムが縮む量を指定できる。デフォルトは1。 |
/* アイテムを縮ませない */ .item1 { flex−shrink: 0; } |
flex−basis | flex−basisプロパティでアイテムの初期サイズを設定できる。デフォルトはauto。ただし、親要素の flex−direction に依存する場合もある。 |
/* アイテムの基本幅を200pxに設定 */ .item1 { flex-basis: 200px; } |
flex | flex−grow, flex−shrink, flex−basisを一括で指定できる短縮形プロパティ。 |
/* flex−grow, flex−shrink, flex−basisを一括で設定 */ .item1 { flex: 2 0 200px; } |
align−self | align−selfプロパティは個々のアイテムに対して縦軸(交差軸)での位置を調整できる。交差軸は親要素の flex−direction によって縦軸または横軸となる。 |
/* 特定のアイテムだけ中央に配置 */ .item1 { align−self: center; } |
displayプロパティをflexやinline−flexに設定することで、その要素はフレックスコンテナになります。
具体的なコードの例は、以下の通りです。それぞれデザインに応じて使い分けてください。
/* ブロックレベルのフレックスコンテナ */ .flex−container { display: flex; } /* インラインレベルのフレックスコンテナ */ .inline−flex−container { display: inline−flex; }
justify−contentプロパティは、フレックスアイテムの主軸に対する配置を指定できます。主軸は親要素(フレックスコンテナ)のflex−directionプロパティによって決まります。
具体的な指定法は、以下の通りです。
justify−contentプロパティを使うコードの例は、以下の通りです。
.flex−container { justify−content: center; //フレックスアイテムを中央寄せする }
flex−wrapプロパティは、フレックスアイテムが折り返すかどうかを指定します。
具体的な指定法は、以下の通りです。
flex−wrapプロパティを使うコードの例は、以下の通りです。
.flex−container { flex−wrap: wrap; //フレックスアイテムがコンテナのサイズを超えた場合には折り返す }
flex−directionプロパティは、子要素(フレックスアイテム)の配置方向を指定します。
具体的な指定法は、以下の通りです。
flex−directionプロパティを使うコードの例は、以下の通りです。
.flex−container { flex−direction: row; //フレックスアイテムを横(row)方向に配置 }
flex−flowプロパティは、flex−directionとflex−wrapの短縮形です。
具体的な指定法は、以下の通りです。
.flex−container { flex−flow: row wrap; //フレックスアイテムが行(row)方向に配置され、コンテナのサイズを超えた場合には折り返す }
align−itemsプロパティは、フレックスアイテムの縦軸(交差軸)に対する配置を指定します。
具体的な指定法は、以下の通りです。
.flex-container { align−items: center; //フレックスアイテムを中央に寄せる }
align−contentプロパティでは、複数行のフレックスアイテムをどのように配置するか指定します。
.flex−container { align−content: space-around; //フレックスアイテムを均等な間隔で配置する }
具体的には、以下の5つです。
それぞれ詳しく解説します。
orderプロパティは、フレックスアイテムの配置順序を制御でき数値が小さいほど先に配置されます。
サンプルコードは、以下の通りです。
.item1 { order: 2; } .item2 { order: 1; }
上記のコードの場合、item2がitem1よりも先に配置されます。
flex−growプロパティによって、余ったスペースに対してフレックスアイテムがどれだけ成長するか(取るか)を設定できます。
.item1 { flex-grow: 1; } .item2 { flex-grow: 2; }
余ったスペースがある場合、item2はitem1の2倍のスペースを取ります。
flex−shrinkプロパティによって、必要に応じてアイテムがどれだけ縮むかを設定できます。
.item1 { flex−shrink: 1; } .item2 { flex−shrink: 0; }
上記のコードの場合、スペースが足りないときにitem2は縮みませんがitem1は縮みます。
flex−basisプロパティでフレックスアイテムの初期サイズを設定できます。
.item1 { flex−basis: 200px; }
この設定により、item1の初期サイズは200pxに設定されます。
align−itemsプロパティによる親要素からの設定を上書きし、個々のアイテムに対して縦軸(交差軸)に沿った配置を制御できます。
.item1 { align−self: flex−start; }
上記の設定により、item1は縦軸の開始点に配置されます。
Flexboxのプロパティを学習し実践することで、Webデザインの幅が広がります。本記事を参考に思い通りのレイアウトを実現し、ユーザーに魅力的なWebページを提供しましょう。
2024.06.17
子供におすすめのプログラミングスクール10選!学習メリットや教室選びのコツも紹介
#プログラミングスクール
2022.01.06
【完全版】大学生におすすめのプログラミングスクール13選!選ぶコツも詳しく解説
#プログラミングスクール
2024.01.26
【未経験でも転職可】30代におすすめプログラミングスクール8選!
#プログラミングスクール
2024.01.26
初心者必見!独学のJava学習方法とおすすめ本、アプリを詳しく解説
#JAVA
2024.01.26
忙しい社会人におすすめプログラミングスクール15選!失敗しない選び方も詳しく解説
#プログラミングスクール
2022.01.06
【無料あり】大阪のおすすめプログラミングスクール14選!スクール選びのコツも紹介
#プログラミングスクール
2024.01.26
【目的別】東京のおすすめプログラミングスクール20選!スクール選びのコツも徹底解説
#プログラミングスクール
2024.01.26
【無料あり】福岡のおすすめプログラミングスクール13選!選び方も詳しく解説
#プログラミングスクール
2024.01.26
【徹底比較】名古屋のおすすめプログラミングスクール13選!選び方も詳しく解説
#プログラミングスクール
2024.01.26
【徹底比較】おすすめのプログラミングスクール18選!失敗しない選び方も徹底解説
#プログラミングスクール