replaces 要素には固有のアスペクト比がある可能性があるという事実を利用できます。スペックによると、
それ以外の場合、'height' の計算値が 'auto' で、要素に固有の比率がある場合、使用される 'height' の値は次のとおりです。
(使用幅) / (固有比率)
したがって、次のことができます。
- 目的の固有比率で置換要素を作成し、それに設定
width:100%
します。
- 絶対配置を使用して、要素の通常の流れからすべてのコンテンツを削除し、それらが高さを増やさないようにします。次に、コンテナを満たすように成長させます。
次に、コンテナー コンテナーは、必要な縦横比になります。
置き換えられる要素は画像である可能性があります。PHP で、またはhttp://placehold.it/のようなサードパーティの Web サービスを使用して、目的のアスペクト比の画像を作成できます。
次のスニペットでは、幅 2 ピクセル、高さ 1 ピクセルの画像 ( )を使用しています。
.container {
border: 3px solid blue;
position: relative;
}
.container > img {
width: 100%;
display: block;
visibility: hidden;
}
.container > .content {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
overflow: auto;
}
<div class="container">
<img src="http://i.stack.imgur.com/Lfmr6.png" />
<div class="content">
<p>01</p><p>02</p><p>03</p><p>04</p><p>05</p>
<p>06</p><p>07</p><p>08</p><p>09</p><p>10</p>
<p>11</p><p>12</p><p>13</p><p>14</p><p>15</p>
<p>16</p><p>17</p><p>18</p><p>19</p><p>20</p>
</div>
</div>
<canvas>
画像の代わりに要素を使用することもできます。この方法では画像を作成する必要はありませんが、古いブラウザー (IE 8 以前など) では機能しません。
<div class="container">
<canvas height="1" width="2"></canvas>
<div class="content">...</div>
</div>
.container {
border: 3px solid blue;
position: relative;
}
.container > canvas {
width: 100%;
display: block;
visibility: hidden;
}
.container > .content {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
overflow: auto;
}
<div class="container">
<canvas height="1" width="2"></canvas>
<div class="content">
<p>01</p><p>02</p><p>03</p><p>04</p><p>05</p>
<p>06</p><p>07</p><p>08</p><p>09</p><p>10</p>
<p>11</p><p>12</p><p>13</p><p>14</p><p>15</p>
<p>16</p><p>17</p><p>18</p><p>19</p><p>20</p>
</div>
</div>