2022/1/26 (更新日:2024/3/4)
Display flexを使い、思い通りのレイアウトに要素を配置します。TOPページのテンプレートが付いてます
by geralt pixabay
ブログのTOPページなどをつくるときに思い通りのレイアウトを作るのに時間がかかることはありませんか?
flexboxを使って簡単にレイアウトする方法を解説します。
display:flexの使い方がポイントです。
PCとスマホのTOPページの代表的なレイアウトとコーディング例も紹介します。
基礎がわかると劇的にレイアウトするのが楽になります。
コーディング例はコピペでご活用ください。
解説する内容
1.Display flexを使い、思い通りのレイアウトに要素を配置します。
2.ブログのPC用TOPページのテンプレート。display flexで要素を横並びに表示したコーディング
3.ブログのスマホ用TOPページのテンプレート。display flexで 縦に要素を並べて表示したコーディング
簡単にまとめましたので最後まで読んでください。
三分で読めますからね!
1.Display flexを使い、思い通りのレイアウトに要素を配置します。
重ねずに要素をレイアウトする方法を紹介します。
*要素を重ねて表示するレイアウト方法は、こちらを参照ください。
positionプロパティとz-indexプロパティを使って思い通りのレイアウトを表示します。
まず、「display flexの基本構造」と
「知っていると使えるレイアウト」を紹介します。
1-1.display:flexの基本構造
親要素に定義することで、子要素の並び方をコントロールできる便利なスタイルです。
横並びにするには、CSSに【 display:flex; 】と設定すれば完了です。
*display:flex;は、フレックスボックスを使う定義。
*デフォルトが【 flex-direction:row; 】で横並びになります。
index.html
<div class="parent">
<div class="child">要素1</div>
<div class="child">要素2</div>
<div class="child">要素3</div>
<div class="child">要素4</div>
</div>
style.css
.parent{
display:flex;
}
*デフォルトで、
flex-direction:row; が定義されています
【 display:flex; 】 と一緒に親要素に設定できるプロパティ一覧
CSS プロパティ
機能
flex-direction
子要素の並ぶ方向と順番(縦・横)
justify-content
子要素の水平方向の配置(左寄せ・中央・右寄せ等)
align-items
子要素の垂直方向の位置合わせ(上・中・下・拡幅)
flex-wrap
あふれたら子要素を折り返して複数行で表示
align-content
複数行になった時の子要素の配置
*flexboxの詳しい使い方は、こちらを参照ください。
フレックスボックスの基本概念
1-2.ブログでよく使う横並びの均等配置
複数の記事の抜粋などを横並びに表示する場合
子要素(.child)=抜粋を
flexboxで横並びにして【display:flex;】
親要素の横幅いっぱいに子要素を均等に配置し【space-between】
親要素の縦幅の中央に配置【center】
*デフォルトが【flex-direction:row;】で横並び
するように親要素にプロパティを指示します。
index.html
<div class="parent">
<div class="child">要素1</div>
<div class="child">要素2</div>
<div class="child">要素3</div>
<div class="child">要素4</div>
</div>
style.css
.parent{
display:flex;
justify-content: space-between;
align-items:center;
}
1-3.PCとスマホで並ぶ方向を変えたときに並び順を変える
横並びと縦並びでデザインの表示順を変えたい場合
例)写真と説明文の位置の表示の順番を変える
PC表示
flexboxで横並びに表示【display:flex;】
*デフォルトが【flex-direction:row;】で横並び
スマホ表示
flexboxでフレックスボックスを定義し【display:flex;】
子要素を縦並びに順番で【column】
子要素を縦並びに逆の順番で【column-reverse】
表示する。
index.html:共通
<div class="parent1">
<div class="child">要素1</div>
<div class="child">要素2</div>
</div>
<div class="parent2">
<div class="child">要素3</div>
<div class="child">要素4</div>
</div>
PC表示
style.css
.parent1,parent2{
display:flex;
}
スマホ表示
style.css
.parent1{
display:flex;
flex-direction:column;
}
.parent2{
display:flex;
flex-direction:column-reverse;
}
2.ブログのPC用TOPページ。display flexで要素を横並びに表示したコーディング
2-1.PC用TOPページのテンプレート
一般的に使われているTOPページのフォーマットを作成します。
初心者の間は、まずTOPページを大枠で表現することをオススメします。
各ブロックにコーディングすることでブログが作成できます。
実行している内容を見失わず修正しやすいからです。
header部
会社ロゴ・会社名
ナビゲーション
slide部
スライドや背景写真
main部とaside部
コンテンツ
footer部
ナビゲーション
コピーライト
header部
会社logo部とナビゲーション部をheader部内で横並びかつ両脇に配置
.header-inner{
display:flex;
flex-direction:row;
justify-content:space-between;
align-items: center;
}
ナビゲーションの<li>要素は横並びに配置
.header__ul{
display:flex;
list-style:none;
}
main部とaside部
id属性:main-content内で表示したい割合で横並びに配置
#main-content{
display:flex;
flex-direction:row;
justify-content:space-between;
}
main{
width:70%;
}
aside{
width:30%;
}
footer部
最下行中央にcopyrightを配置
2-2.実際のコーディング
コーディング結果を表示してコピペすると、自分でも確認できます。
See the Pen PC-template by Seiji Nakamura (@sjnkmr_777) on CodePen.
表示操作のやり方
*画面上部の[HTML][CSS][Result]をクリックすると、プログラミングコードおよび結果が表示されます。
*画面下部の [1×] [0.5×] [0.25×] を選択すると結果の表示倍率が変わります。
3.ブログのスマホ用TOPページ。display flexで 縦に要素を並べて表示したコーディング
3-1.スマホ用TOPページのテンプレート
一般的に使われているスマホ用TOPページのフォーマットを作成します。
スマホ用の違い
横幅がPCに比べ狭いため
・ブロックは縦並び
・横並びが少ない
・ナビゲーション表示が
ハンバーガーメニュー
全体配置
bodyの要素全部を縦並びに配置
body{
display:flex;
flex-direction:column;
}
header部
会社logo部とハンバーガーメニューをheader部内で横並びかつ両脇に配置
.header-inner{
display:flex;
flex-direction:row;
justify-content:space-between;
align-items: center;
}
ハンバーガーメニュー
index.html
<button class="mobile-menu__btn">
<span></span>
<span></span>
<span></span>
</button>
style.css
.mobile-menu__btn > span {
width: 35px;
height: 2px;
display: block;
margin-bottom: 9px;
}
.mobile-menu__btn > span:last-child {
margin-bottom: 0;
}
3-2.実際のコーディング
See the Pen iphone-template by Seiji Nakamura (@sjnkmr_777) on CodePen.
4.まとめ
flexboxを使って簡単にレイアウトする方法を解説しました。
重なりのない要素をdisplay flexを使うと扱いやすくなります。
floatなどの複雑なプロパティを使わず表現できるので便利です。
わかりやすいのでぜひ理解して活用してください。
*最後まで読んでいただきありがとうございます。
舌足らずで説明不足の所はお許しください。
また、改良項目・修正項目がございましたらご指摘いただけたら幸いです。
Copyright – Seiji Nakamura, 2022 All Rights Reserved.