サイドバーを作成する - フレックスレイアウト・スマートフォン対応
サイドバーをフレックスレイアウトを使って作ってみます。CSSの切り替えだけで、スマートフォン対応ができます。IE11でも確認済み。
サイドバー右、固定長、コンテンツ左、可変長、PC表示
サイドバー右、固定長、コンテンツ左、可変長のPC表示です。フレックスレイアウトを使っています。コンテンツはcalcを使って、可変長の幅を計算しています。
コンテンツ
サイドバー
アイテム1
アイテム2
アイテム1
アイテム2
<div style="display:flex;">
<div style="width:calc(100% - 200px);background:pink;">
コンテンツ
</div>
<div style="width:200px;background:green;">
サイドバー<br>
アイテム1<br>
アイテム2
</div>
</div>
サイドバー左、固定長、コンテンツ右、可変長、PC表示
サイドバー左、固定長、コンテンツ右、可変長のPC表示です。「flex-direction:row-reverse;」を使うと、左右の順番を入れ替えることができます。サイドバーを左に置く場合もで、SEO対策とスマートフォン対応を考えて、コンテンツを最初に記述するようにします。
コンテンツ
サイドバー
アイテム1
アイテム2
アイテム1
アイテム2
<div style="display:flex;flex-direction:row-reverse;">
<div style="width:calc(100% - 200px);background:pink;">
コンテンツ
</div>
<div style="width:200px;background:green;">
サイドバー<br>
アイテム1<br>
アイテム2
</div>
</div>
サイドバー下、コンテンツ上、スマートフォン表示
サイドバー下、コンテンツ上、スマートフォン表示です。フレックスレイアウトで複数行表示するので、「flex-wrap:wrap;」を追加して、サイドバーとコンテンツの幅を100%にします。
コンテンツ
サイドバー
アイテム1
アイテム2
アイテム1
アイテム2
<div style="display:flex;flex-wrap:wrap;">
<div style="width:100%;background:pink;">
コンテンツ
</div>
<div style="width:100%;background:green;">
サイドバー<br>
アイテム1<br>
アイテム2
</div>
</div>
サイドバー非表示、コンテンツだけ、スマートフォン表示
サイドバー非表示、コンテンツだけ、スマートフォン表示です。サイドバーを「display:none;」で非表示にして、コンテンツの幅を100%にします。
コンテンツ
<div style="display:flex;">
<div style="width:100%;background:pink;">
コンテンツ
</div>
<div style="display:none;background:green;">
サイドバー<br>
アイテム1<br>
アイテム2
</div>
</div>
Perl Web開発者のHTML・CSS入門


