ベストアンサー1
次のように、<div>
のパーセンテージ値を持つラッパーを作成します。padding-bottom
.demoWrapper {
padding: 10px;
background: white;
box-sizing: border-box;
resize: horizontal;
border: 1px dashed;
overflow: auto;
max-width: 100%;
height: calc(100vh - 16px);
}
div {
width: 100%;
padding-bottom: 75%;
background: gold; /** <-- For the demo **/
}
<div class="demoWrapper">
<div></div>
</div>
<div>
コンテナの幅の 75% に等しい高さ (アスペクト比 4:3)の が作成されます。
これは、パディングに関して次の事実に依存します。
パーセンテージは、生成されたボックスの包含ブロックの幅を基準に計算されます [...] (出典:翻訳元(強調は筆者による)
他のアスペクト比と100%幅のpadding-bottom値:
aspect ratio | padding-bottom value
--------------|----------------------
16:9 | 56.25%
4:3 | 75%
3:2 | 66.66%
8:5 | 62.5%
div にコンテンツを配置する:
div のアスペクト比を維持し、そのコンテンツが div を引き伸ばさないようにするには、絶対位置に配置された子要素を追加し、次のようにしてラッパーの端まで引き伸ばす必要があります。
div.stretchy-wrapper {
position: relative;
}
div.stretchy-wrapper > div {
position: absolute;
top: 0; bottom: 0; left: 0; right: 0;
}