サイドバーを作成する - フレックスレイアウト・スマートフォン対応
サイドバーをフレックスレイアウトを使って作ってみます。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>