スマートフォンのデザインではあまり要求されないのですが、PCのデザインのみたまに「ここだけ、幅いっぱいに背景を引いてほしい」という要望があります。レスポンシブでなければ、ただマイナスマージン
を使用して広げてあげればOKです。しかし、今はレスポンシブでないのが珍しいですね。
子要素を親要素の幅を超えて画面いっぱいにするCSS
calc
と幅の単位であるvw
を使います。
上記を簡単に説明。
- calc
- レイアウトやサイズ指定に計算式を使えるようにしてくれる
- vw
- ウィンドウサイズからの割合を指定できる
サンプル
CODE
// html <div style="background-color: rgba(255,255,0,1);width: 200px;margin: 20px auto"> PARENT DIV <div class="over-width" style="background-color: rgba(255,0,255,.5)"> CHILD DIV </div> PARENT DIV </div> // CSS .over-width { margin-left: calc(50% - 50vw); margin-right: calc(50% - 50vw); }
使用上の注意
確かに画面幅いっぱいに子要素がなるのですが、注意点もいくつか。適用できない場合は、素直に親要素から表に出してあげたほうが早いと思います。
中心点が親要素の中心
つまり、親要素が画面幅の中央に無いと子要素もずれてしまいます。
スクロールバーの計算
縦に長いページだとブラウザ右にスクロールバーがでてしまいます。その分は計算してあげないと下部に横スクロールバーがでてしまいます。
一番外側の要素にoverflow: hidden;
することでも横スクロールバーを回避できます。
POSITIONを使用した場合
position
を使用しても実現可能です。上記のような注意点はやはりありますが、コーディング上調整しやすい方を選択するといいと思います。
// position version .over-width-position { width: 100vw; position: relative; left: 50%; transform: translateX(-50%); }
CSS/SASSのおすすめ書籍
CSSやSCSSは基本がわかればあとはGoogle先生で調べた方が早いと思います。CSSの仕組みやSASSの使い方だけわかれば基本はOKです。
1冊ですべて身につくHTML & CSSとWebデザイン入門講座
htmlの基礎から学べるのでおすすめ
Web制作者のためのSassの教科書
SASSの基本が学べます。