我有一个解决方案可以在IE8上使用(使用Pure CSS 2.1),但不是完美的。因为我需要浏览器在调整大小时重新计算,但显然它只有在必要时才会这样做(我找不到让它认为它必须这样做的方法),所以您将不得不在调整大小后刷新页面。
据我所知,唯一能够保留其比例缩放的元素是
<img>
,因此我们将利用
<img>
。
因此,我们将使用具有所需比率的图像(使用placehold.it的服务),例如,我们想要一个13X10的比率(就像您的示例中一样),因此我们将使用
<img src="http://placehold.it/13x10" />
。该图像将具有固定的高度为主体的
100%
,现在图像的宽度相对于比率进行缩放。因此,图像的宽度为主体的
130%
。
该图像包含在一个div中,并且该div具有inline-block显示,因此它恰好占据其内容的大小。这就是您想要的大小。
我们通过使用
visibility: hidden;
(而不是
display:none;
,因为我们需要图像占据空间)从显示中删除图像,并创建另一个绝对div,该div将容纳实际内容,该内容将位于图像上方(公共容器的100%宽度和100%高度)。
当您首次启动页面时,它可以完美地工作,但是当您调整页面大小时,浏览器并不总是重新测量正确的宽度和高度,因此您需要刷新才能使其发生。
这是完整的HTML:
<div class="Scalable">
<img class="Scaler" src="http://placehold.it/13x10" />
<div class="Content"></div>
</div>
还有这个简单的CSS:
html, body, .Content
{
width: 100%;
height: 100%;
margin: 0;
padding: 0;
}
body
{
text-align: center;
}
.Scalable
{
position: relative;
display: inline-block;
height: 100%;
}
.Scaler
{
width: auto;
height: 100%;
margin-bottom: -5px;
visibility: hidden;
}
.Content
{
position: absolute;
top: 0;
background-color: black;
}
这里有一个Fiddle(调整大小后别忘了刷新)
我建议您将此代码复制到本地计算机上并在那里尝试,而不是在Fiddle中进行。