要素の横幅をうまくリキッドに実装したけど、うまく縦横非が維持できない。
そんな時の処方箋です。
アスペクト比(縦横比)を限定する方法
基本編
まずは基本編。:bofore要素を利用して
HTML:
<div class="container"> <!-- なんでも要素 ---> </div>
CSS:
.container:before{ content:''; display:block; width:100%; height:0; padding-bottom:75%; }
ポイントは、padding-bottomで、こちらは%指定だと、「親要素の横幅を基準に」という仕様です。仕様です。containerの横幅に合わせて、伸縮します。
上記だと、要素内をbeforeが専有してしまうので、containerの子供は、position:absoluteしておくとよいでしょう。
HTML:
<div class="container"> <img src="hogehoge.png"> </div>
CSS:
.container{ position:relative; } .container:before{ content:''; display:block; width:100%; height:0; padding-bottom:75%; } .container img{ position:absolute; width:100%; }
アスペクト比(縦横比)を固定したグリッド
応用編です。わかりにくいかな。3列のグリッドで、要素の縦横比を1:2にしています。
要素の背景が常にセンタリングなので、グリッドの大きさが変わっても、縦横比はたもったまま、うまく画像がトリミングされるようになります。