JavaScript支持百分比单位吗?

时间:2012-02-28 17:19:26

标签: 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 单元一起使用?这甚至可能吗?

2 个答案:

答案 0 :(得分:3)

在此上下文中,JavaScript支持...字符串。

您的问题几乎肯定是what height: 50% (for some value of 50) means

  

指定百分比高度。百分比是根据生成的框的包含块的高度计算的。如果未明确指定包含块的高度(即,它取决于内容高度),并且此元素未绝对定位,则该值计算为“auto”。根元素的百分比高度相对于初始包含块。

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

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


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

如果浏览器高100px,则元素将为50%。

如果浏览器的高度为300px,则该元素将为100%。

答案 1 :(得分:1)

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

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