【发布时间】:2015-01-29 18:36:26
【问题描述】:
我有一个调整大小的功能,可以使主 div 的大小保持一致。我最初让它根据窗口宽度调整大小,效果很好(函数中的第一个条件)。然后我添加了第二个条件,如果窗口太短,它会根据高度调整大小。此函数与 onload 一起正常工作。
onresize 在窗口变窄或变宽时都适用于宽度,但高度条件仅在窗口变短时有效。 . .如果窗口随后被拖得更高,onresize 事件似乎不会触发,我必须手动重新加载页面以调整函数大小。
<script>
function contentResizeHeight() {
var contentBG = document.getElementById("content");
var windowHeight = window.innerHeight;
var newHeight = Math.round(contentBG.offsetWidth * .6);
if ( windowHeight > newHeight ){
contentBG.style.height = newHeight + "px";
}
if ( windowHeight < newHeight ){
var newerWidth = windowHeight * 1.666666666666666666;
var newerHeight = Math.round(newerWidth * .6);
contentBG.style.height = newerHeight + "px";
contentBG.style.width = newerWidth + "px";
}
};
</script>
#content div 被背景图片覆盖。所以想法是保持图像纵横比不变。
div#content{
background-repeat:no-repeat;
background-position:center 0px;
background-size: cover;
min-width:1024px;
max-width:1600px;
min-height:614px;
max-height:960px;
margin-right:auto;
margin-left:auto;
}
我在body标签中调用函数
<body onload="contentResizeHeight()" onresize="contentResizeHeight()">
【问题讨论】:
-
什么是
#contentBG,它的高度是如何定义的? -
#contentBG 是一个 div,其高度由容器的宽度设置。也许这个小提琴显示了这个问题 - 调整窗口的大小越来越窄并且高度发生变化。将窗口调整得更短,它会变窄,但如果你把窗口拖得更高,它不会改变。 jsfiddle.net/n8b03xab
-
请出示相关的HTML和CSS。
-
Here's a fiddle在控制台显示值,请仔细研究,你会发现逻辑错误。
-
谢谢,我已经记录了所有变量。虽然它们说明了最终结果,但它们并没有真正帮助我找到逻辑错误。一次只登录一个条件向我展示的是,在两个方向上调整窗口(更窄更宽)日志的大小。记录第二个条件 - 调整大小(较短)仅在窗口变短时记录,即,随着窗口变高,不再满足此条件。
标签: javascript onload onresize