我正在尝试根据不同的浏览器大小重新调整图像的大小。我使用的是这个代码:
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";