我正在尝试根据不同的浏览器尺寸重新调整图片大小。我正在使用此代码:
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 单元一起使用?这甚至可能吗?
答案 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";