JavaScript是否支持百分比单位



我正在尝试根据不同的浏览器大小重新调整图像的大小。我使用的是这个代码:

document.getElementById("myImg").style.height = (document.body.clientHeight) * 0.5;

但如果我不使用DOCTYPE,如果我在html文件中使用DOCTYPE,那么它就不起作用。有人说:

在使用有效的DTD属性时,值必须具有单位。。。

所以我尝试添加百分比单位%:

document.getElementById("myImg").style.height = (document.body.clientHeight) * 0.5 + "%";

但它不起作用,它只适用于px单元:

document.getElementById("myImg").style.height = (document.body.clientHeight) * 0.5 + "px";

我如何使用%单元,就像它使用px单位一样?这可能吗?

在这种情况下,JavaScript支持…字符串。

您的问题几乎可以肯定地归结为height: 50%(对于某个值50)的含义。

指定百分比高度。百分比是根据生成的长方体的包含块的高度计算的。如果未显式指定包含块的高度(即,它取决于内容高度),并且此元素不是绝对定位的,则该值计算为"auto"。根元素上的百分比高度是相对于初始包含块的。

如果父元素height解析为height: auto,则任何百分比高度也将解析为auto

如果希望应用百分比高度,则需要将父元素的height设置为其他值。如果将其设置为百分比,则需要设置祖父母的高度,依此类推(直到到达视区,视区被视为具有像素高度)。


也就是说,以像素为单位获得物体的高度,将其减半,然后在末端粘贴%,这听起来是一个非常奇怪的计算。

如果浏览器是100px高,那么元素将是它的50%。

如果浏览器是300px高,那么元素将是它的100%。

这是似乎对OP:有效的解决方案

document.getElementById("myImg").style.height = document.documentElement.clientHeight * 0.5 +"px";

最新更新