はじめに
HTML学習その1 - 基本編:
https://blog.yexca.net/archives/146
HTML学習その2 - リスト、テーブル、フォーム:
https://blog.yexca.net/archives/150
HTML学習その3 - Webページのレイアウト:
https://blog.yexca.net/archives/195
標準フローはドキュメントフローとも呼ばれてて、要素がページ内でデフォルトで配置されるルールを指すよ。例えば、ブロック要素は1行を占有し、インライン要素は1行に複数表示できるって感じ。
標準フローじゃないレイアウトにするなら、フロートかFlexレイアウトを使えばOK。
フロート
役割:ブロック要素を横に並べること。プロパティ名はfloatで、値はleftとrightの2つがあるよ。
フロートを設定したボックスは標準フローから外れるから注意ね。
フロートの影響をクリアする
フロート要素は標準フローから外れちゃうから、親要素に高さがない場合、自分で親の高さを確保できなくなって、ページのレイアウトがぐちゃぐちゃになる可能性があるんだ。
フロートをクリアする一般的な方法は4つあるよ。
追加タグを使う方法
親要素の最後にブロック要素を追加して、CSSプロパティのclear:bothを設定するんだ。
| |
シングル疑似要素を使う方法
原理は上と同じ。
| |
ダブル疑似要素を使う方法
この方法は、高さの崩れとフロートの影響を同時に解決できるんだ。
| |
overflowプロパティを使う方法
親要素にCSSプロパティのoverflow: hidden;を追加するだけ。
Flex
Flexレイアウトは、フレキシブルボックスレイアウトとも呼ばれてて、ブラウザが推奨してるレイアウトモデルなんだ。構造化されたレイアウトにすごく適していて、強力な空間分布と配置(アライメント)機能を提供してくれるよ。
それに、Flexモデルはフロートレイアウトみたいに標準フローから外れるってことがないから、Webページのレイアウトがもっとシンプルで柔軟になるんだ。
構成要素
Flexには4つの構成要素があるよ。
- フレックスコンテナ
- フレックスアイテム
- 主軸(メインアクシス):デフォルトでは水平方向
- 側軸(クロスアクシス):デフォルトでは垂直方向
親要素にdisplay: flex;を設定すると、それがフレックスコンテナになって、子要素はフレックスアイテムになるんだ。すると自動的に縮んだり伸びたりしてくれるようになるよ。
Flexレイアウト
| 記述 | 属性 |
|---|---|
| 主軸の配置方法 | justify-content |
| 側軸の配置方法 | align-items |
| 特定のフレックスアイテムの 側軸の配置方法 | align-self |
| 主軸の方向を変更 | flex-direction |
| フレックスアイテムの伸縮 | flex |
| フレックスアイテムの折り返し | flex-wrap |
| 行の配置方法 | align-content |
主軸の配置方法
プロパティ名:justify-content
| 属性値 | 効果 |
|---|---|
| flex-start | デフォルト値。フレックスアイテムが開始位置から順番に並ぶよ。 |
| flex-end | フレックスアイテムが終了位置から順番に並ぶよ。 |
| center | フレックスアイテムが主軸に沿って中央に配置されるよ。 |
| space-between | フレックスアイテムが主軸に沿って均等に配置されて、余白はアイテム間に均等に割り振られるよ。 |
| space-around | フレックスアイテムが主軸に沿って均等に配置されて、余白はアイテムの両側に均等に割り振られるよ。 |
| space-evenly | フレックスアイテムが主軸に沿って均等に配置されて、アイテムとコンテナの間の余白が同じになるよ。 |
側軸の配置方法
プロパティ名
align-items:現在のフレックスコンテナ内の全フレックスアイテムの側軸方向の配置方法(フレックスコンテナに設定する)align-self:特定のフレックスアイテム単独の側軸方向の配置方法を制御(フレックスアイテムに設定する)
| 属性値 | 効果 |
|---|---|
| stretch | フレックスアイテムが側軸に沿ってコンテナいっぱいに引き伸ばされるよ(フレックスアイテムに側軸方向のサイズが設定されてない場合、デフォルトで引き伸ばされる)。 |
| center | フレックスアイテムが側軸に沿って中央に配置されるよ。 |
| flex-start | フレックスアイテムが開始位置から順番に並ぶよ。 |
| flex-end | フレックスアイテムが終了位置から順番に並ぶよ。 |
主軸の方向を変更
主軸はデフォルトで水平方向で、側軸はデフォルトで垂直方向になってるよ。
プロパティ名:flex-direction
| 属性値 | 効果 |
|---|---|
| row | 水平方向、左から右へ(デフォルト) |
| column | 垂直方向、上から下へ |
| row-reverse | 水平方向、右から左へ |
| column-reverse | 垂直方向、下から上へ |
フレックスアイテムの伸縮比率
役割:フレックスアイテムの主軸方向のサイズを制御すること。プロパティ名:flexで、子要素(フレックスアイテム)に追加するよ。
プロパティ値:整数値で、親要素の残りサイズをどれくらいの割合で占有するかを表すよ。
フレックスアイテムの折り返し
フレックスアイテムは自動的に縮んだり伸びたりするけど、デフォルトでは全部のアイテムが1行に表示されるんだ。プロパティ名:flex-wrapで、親要素(フレックスコンテナ)に追加するよ。
値にはwrap(折り返す)とnowrap(折り返さない、デフォルト)があるよ。
行の配置方法
プロパティ名:align-content
プロパティ値は主軸の配置方法と同じで、複数行のフレックスアイテムにのみ適用されるんだ。