これだけは身に付けてほしい、6つのCSSレイアウトパターン
ウェブデザイナーとして現場でコーディング業務をするまでに、これだけはきちんと書けるようになっていてほしい、6つのレイアウトパターンを優先度順に紹介します。
各パターンの解説も順次公開しますので、書いたらリンクを追加します。そちらではCSSの書き方だけではなく、どのようなパーツに使うのか、設計上の注意点、デザイナーに聞いておくべきことなども解説する予定です。
※ここでは初学者向けに単位をpxにしていますが、PC、モバイルとも柔軟に表示できるよう、remや%やvwを使用することも多いです
はじめての方はお読みください↓↓
1. 最大幅を制限して中央寄せ


技術用語で「コンテナ(container)」と呼ばれているパターンです。私がウェブ制作をはじめた20年ほど前からあるCSSレイアウトの基本であり、ほぼすべてのサイトで使用されています。
ウィンドウの左右に最低限の余白を設け、かつ左右marginをautoにして中央に寄せます。
.sample {
width: calc( 100% - ( 20px * 2 ) );
max-width: 1000px;
margin-left: auto;
margin-right: auto;
}
詳しい解説はこちらをご覧ください。
2. 幅・高さ固定+上下左右中央寄せ


幅と高さ(または高さのみ)が固定されている枠の中に、文字や画像が配置されているレイアウトです。大きなボタンを作成するために必須で、他にもページタイトルなどの背景が入った見出しなどで頻繁に書きます。
文字数や行数に関わらず中央を維持させるので、paddingではだめです。flexboxを使用します。昔はline-heightとか使っていましたねえ。
.sample01 {
display: flex;
align-items: center;
justify-content: center;
width: 480px;
height: 70px;
color: #fff;
background-color: #f88800;
}
詳しい解説はこちらをご覧ください。
3. 左右の一方が固定、一方が可変+上揃え

左右二段組になっていて、どちらか一方が固定幅、もう一方が残りの範囲を埋め、上揃えとなります。
ブログ記事、少し長い文章がある場所に使用されます。固定している側が画像ではなく、ブログの公開日やカテゴリーアイコンになっているパターンもあります。
サンプルの画像の場合、画像の上の辺と一行目の上がきれいに揃っています。画像加工ソフトでは上端揃えが簡単にできるので、よくこのようなカンプが来ますが、ウェブ制作では「行高さ」を考慮しなくては実現できません。詳しくは別記事で解説します。
.sample {
display: flex;
}
.sample > * {
flex: 1;
}
.sample__image {
max-width: 150px;
}
.sample__contents {
padding-left: 30px;
}
3と4の詳しい解説は、こちらをご覧ください。
4. 左右の一方が固定、一方が可変+中央揃え

3と似ていますが、左と右が中央寄せになっています。下層ページ一覧など、あまり長いタイトルにならない記事一覧によく使用されます。
.sample {
display: flex;
align-items: center;
}
.sample > * {
flex: 1;
}
.sample__image {
max-width: 100px;
}
.sample__contents {
padding-left: 30px;
}
5. 要素をマス目状に敷き詰める



「マス目状に敷き詰める」と表現しましたが、技術用語で「グリッドレイアウト」と言います。
同じ形をした、いくつになるか予測できない要素(div, articleなど)を、画面内に均等に整列させます。それぞれの幅は端末ごとに変わり、一般にはスマートフォン2列、タブレット縦3列、タブレット横以上4列が定番です。
flexboxを使用する方法と、CSS Gridを使用する方法の2通りがありますが、サンプル画像のように高さも揃っていることがほとんどなので、CSS Gridを勧めます。
2023/02/04追記:
実際に使用されている主要サイトをみたところ、flexboxの採用が多いようなのでflexboxでの解説に変更しました。
「ウィンドウサイズを変えたときにどのように幅が変わるか」の解釈がデザイナーさんの意図と違って手戻りになることが、たまにあります。それについても別記事で書きます。
2023/02/04追記:
レアケースであり、この記事が必要な方には難しい内容なので割愛しました。
詳しい解説はこちらをご覧ください。
6. 要素を特定の場所に貼り付ける
サンプル画像が多いのでちょっとスクロール長いです…




凝ったデザインになることが多い、メインビジュアルで必須のレイアウトです。技術用語では「絶対配置」などと呼ばれます。
要素を、HTMLで書いてある順番を無視して画面内の「どこか」にシールのように貼り付けます。サンプルでは「暮らしのコンシェルジュ」という見出しと女性のイラストが固定されています。要素同士が重なることがあり、その場合は重なり順も考慮しなくてはなりません。
calc()のおかげで、以前より短いコードで書けるようになりました。それも別記事で紹介します。
.sample {
background-image: url(sample_bg.jpg);
background-size: cover;
}
.sample__inner {
position: relative;
}
.sample__title {
position: absolute;
bottom: 50%;
left: 0;
}
.sample__image {
position: absolute;
bottom: 0;
left: 0;
/* ちょっと下にはみ出すデザインがよくある */
transform: translateY(15%);
}
まとめ
これだけは身に付けてほしい、と言いますか、ぶっちゃけウェブサイトの8割くらいはこの6つだけでできています。
一見複雑なデザインであっても、1と5の組み合わせとか、3の中に2や4が入っているパターンだったりします。
どのパターンを使ったら良いかを書き始める前に判断できるようになれば、思うように作れなくてやり直し…という手戻りが減り、フリーランスであれば収益につながっていきます。
CSSの学習はボリュームが多く、何から手を付けたらよいかわからないと思いますが、少なくともここで紹介した6つはすぐ書けることを目指してください。
なお「すぐ書ける」とは「暗記する」という意味ではありません。世の中には「スニペットツール」という素晴らしい文明の利器があります。頻繁に使うことがわかっているなら、コマンド一発で呼び出せるようにして、他のことに脳の容量を使いましょう。
今回はここまで。
このブログが、皆さんに必要なくなることを願っています。
気軽にクリエイターの支援と、記事のオススメができます!