シンプルでニート :vw
ビューポートの幅に応じて、レスポンシブの高さ/幅に単位を使用します。
vw :ビューポートの幅の 1/100。(ソース MDN )
デモ
HTML:
<div></div>
アスペクト比 1:1 のCSS :
div{
width:80vw;
height:80vw; /* same as width */
}
必要な縦横比と要素の幅に従って高さを計算するためのテーブル。
aspect ratio | multiply width by
-----------------------------------
1:1 | 1
1:3 | 3
4:3 | 0.75
16:9 | 0.5625
この手法により、次のことが可能になります。
- を使用せずに要素内にコンテンツを挿入します
position:absolute;
- 不要な HTML マークアップなし (1 つの要素のみ)
- vh 単位を使用して、ビューポートの高さに応じて要素の縦横比を調整します
- ビューポートの高さと幅に応じて、常にビューポートに収まるレスポンシブスクエアまたはその他のアスペクト比を作成できます(この回答を参照してください:ビューポートの幅と高さに応じたレスポンシブスクエアまたはこのデモ)
これらの単位は IE9+ でサポートされています。詳細についてはcanIuse を参照してください。