【发布时间】:2010-11-13 07:32:40
【问题描述】:
两张图片,一张是 300x400 像素(高 x 宽),另一张是 500x600。如何让它们并排显示,缩放以使它们在屏幕上具有相同的高度,填充页面(或容器/div)的整个宽度,而不改变任一图像的纵横比?
我想要一种 HTML/CSS 方式来做到这一点——如果可能的话,它也适用于 2 张以上的图像。目前我手动计算每个图像的宽度(下面的数学)。
编辑:
我正在尝试做的一个例子:
<img src="http://stackoverflow.com/content/img/so/logo.png"
width="79%" style="float:left" border=1 />
<img src="http://stackoverflow.com/content/img/so/vote-favorite-off.png"
width="20%" border=1 />
使用下面的公式(或反复试验)得出 79/20 拆分。请注意 79 + 20
ah1 = 300 // actual height of image 1
aw1 = 400 // actual width of image 1
ah2 = 500 // actual height of image 2
aw2 = 600 // actual width of image 2
// need to calculate these:
dw1 // display width of image 1, expressed as percent
dw2 // display width of image 2, expressed as percent
dw1 + dw2 == 100%
s1 = dw1 / aw1 // scale of image 1 (how much it has been shrunk)
s2 = dw2 / aw2
dh1 = ah1 * s1 // display height of image 1 = its actual height * its scale factor
dh2 = ah2 * s2
// need to solve this equality to get equal display heights:
dh1 == dh2
s1 * ah1 == s2 * ah2
dw1 / aw1 * ah1 == dw2 / aw2 * ah2
dw1 / aw1 * ah1 == (1 - dw1) / aw2 * ah2
dw1 * aw2 * ah1 == (1 - dw1) * aw1 * ah2
dw1 * aw2 * ah1 == aw1 * ah2 - aw1 * ah2 * dw1
dw1 * aw2 * ah1 + aw1 * ah2 * dw1 == aw1 * ah2
dw1 * (aw2 * ah1 + aw1 * ah2) == aw1 * ah2
dw1 == aw1 * ah2 / (aw2 * ah1 + aw1 * ah2)
== 400 * 500 / (600 * 300 + 400 * 500)
== 20 / (18 + 20)
== 20 / 38
== 52.63% // which ends up as style="width:53%" which isn't quite right...
【问题讨论】: