ウェブページでよく見かける「左側は固定され、右側の文章や写真がスクロールする」レイアウトは、CSSだけで簡単に実現可能です。
この記事では、初心者向けに左右分割レイアウトの作り方を解説し、スマホ対応カスタムも紹介します。コードを見ながら手軽に試せるサンプルです。
サンプル
See the Pen 111102 by kasasagi_kmnmc (@kasasagi_kmnmc) on CodePen.
HTML構造
以下のHTMLでは、左側のコンテンツは left-pin クラス、右側のスクロールする文章や写真は right-content クラスで管理しています。スクロール確認用に高さを確保する spacer セクションも挿入しています。
左側はPC表示ではスクロールに追従して固定され、右側は自由にスクロールします。スマホでは上下並びになり、左側の固定は解除されます。
<section class="spacer">スクロールしてください</section>
<section class="split-section">
<div class="left-pin">
<h2>左側に固定される見出し</h2>
<p>スクロール中もここは固定されます</p>
</div>
<div class="right-content">
<p>これは右側のダミー文章です。スクロールに合わせて文章が流れます。</p>
<p>さらに文章が続きます。ここに写真も配置可能です。</p>
<img src="https://images.unsplash.com/photo-1501785888041-af3ef285b470?q=80&w=800&auto=format&fit=crop" alt="風景写真1">
<p>もっと文章を追加してスクロールを確認します。</p>
<img src="https://images.unsplash.com/photo-1493558103817-58b2924bce98?q=80&w=800&auto=format&fit=crop" alt="風景写真2">
</div>
</section>
<section class="spacer">さらにスクロール</section>CSS
PC表示では、左側のコンテンツを position: sticky を使って固定します。右側の文章や写真は自由にスクロールでき、左右の高さを揃える必要はありません。
body {
margin: 0;
font-family: sans-serif;
}
.spacer {
height: 100vh;
display: flex;
align-items: center;
justify-content: center;
background: #f0f0f0;
font-size: 1.5rem;
}
.split-section {
display: flex;
gap: 2rem;
padding: 2rem;
background: #eaeaea;
align-items: flex-start;
}
.left-pin {
position: sticky; /* 左側をスクロール中に固定する */
top: 50px;
flex: 1;
background: #4a90e2;
color: #fff;
padding: 1.5rem;
border-radius: 8px;
}
.right-content {
flex: 2;
display: flex;
flex-direction: column;
gap: 1.5rem;
}
.right-content img {
width: 100%;
max-width: 400px;
border-radius: 8px;
}スマホ用CSS
スマホ表示では、左右レイアウトを縦並びに変更し、左側の固定を解除します。右側の写真は幅100%、高さ自動でアスペクト比を保ちつつ中央に配置します。また大きくなりすぎないよう最大幅を設定しています。
@media (max-width: 768px) {
.split-section {
flex-direction: column; /* 左右→上下に変更 */
align-items: stretch;
}
.left-pin {
position: static; /* スマホでは固定を解除 */
width: 100%;
top: auto;
box-sizing: border-box;
padding: 1.5rem;
}
.right-content {
width: 100%;
}
.right-content img {
display: block;
margin: 0 auto; /* 画像を中央に配置 */
width: 100%;
height: auto;
max-width: 500px; /* 大きくなりすぎないように制限 */
border-radius: 8px;
}
}まとめ
このレイアウトでは、PC表示では左側の見出しがスクロールに追従して固定され、右側の文章や写真が自由にスクロールします。スマホ表示では、左右のレイアウトを縦並びに変更し、左側の固定は解除、右側の写真は中央に配置されます。
この方法により、文章や写真を追加しても左固定は正しく追従し、レイアウトが崩れることはありません。CSSだけで実現できるので、ポートフォリオページや商品説明ページなど、スクロールに合わせた情報表示に簡単に応用できます。

