【レスポンシブ】背景画像を縦横比を保持したまま可変させる話【background-image】

レスポンシブデザインは画像の可変が必須。
imgタグで挿入する場合にはそうそう悩むことはないが、background-imageを使用する場合。背景画像を可変させようにも、縦横比が崩れてしまう。
background-size:contain;
background-size:cover;
background-size:100%;
などを用いると、横幅は可変することができるが、高さをうまく保つことができない。
そんな場合の対応法をまとめてみました。
Contents
背景画像を置く要素に擬似要素を付加する
CSSはこちら
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
//背景画像を置く要素 div.sample { width:100%; height:auto; background:url(xxx/sample.jpg); // 画像ファイル名とパス background-size:100%; } //要素に擬似要素を付加 div.sample::before { display:block; content:""; padding-top:75%; // 画像縦幅÷画像横幅 } |
肝は空白のブロック要素を擬似要素として付加し、「padding-top」を設定する点。
「padding-top」の値は背景に設定する画像の縦幅÷横幅のパーセント表示となる。
例えば背景画像の比率が、「横:縦=4:3」の場合。
背景画像を置く要素の比率も「横:縦=4:3」としたい。
そこで「::before」に「padding-top:75%;」を指定することで、画像の比率分の高さを保持したまま可変させることができる。
ちなみにpadding-bottomでも可。
これで空白要素の背景画像も、縦横の比率を保持した高さで可変させることができる。
画像の縦横幅を素早く計算したい方はこちらへ
もう悩まんでもええ!!画像や要素の縦横幅・縦横比自動計算ツール