【发布时间】:2009-07-15 06:41:02
【问题描述】:
我有 2 个 div,一个位于绝对正确的位置:0 和另一个相对定位的中心屏幕。当窗口的宽度太小时,它们会重叠。发生这种情况时如何调用 javascript 函数?
谢谢。 迈克
已编辑以使其更清晰。
【问题讨论】:
标签: javascript html css
我有 2 个 div,一个位于绝对正确的位置:0 和另一个相对定位的中心屏幕。当窗口的宽度太小时,它们会重叠。发生这种情况时如何调用 javascript 函数?
谢谢。 迈克
已编辑以使其更清晰。
【问题讨论】:
标签: javascript html css
要检查重叠的 div,您可能需要在页面加载后以及在调整窗口大小时进行检查:
window.onload = checkOverlap;
window.onresize = checkOverlap;
然后使用一些偏移检查:
function checkOverlap() {
var centerBox = document.getElementById('centerDiv');
var rightBox = document.getElementById('rightDiv');
console.log("centerbox offset left: " + centerBox.offsetLeft);
console.log("centerbox width: " + centerBox.offsetWidth);
console.log("rightbox offset left: " + rightBox.offsetLeft);
if ((centerBox.offsetLeft + centerBox.offsetWidth) >= rightBox.offsetLeft) {
centerBox.style.display = "inline-block";
} else {
centerBox.style.display = "block";
}
}
您可能想在函数中进行更多检查,例如查看该框是否已内联显示,等等。但这应该会给你一个很好的起点。
编辑:添加了一些诊断和修复错误
【讨论】:
console.log("centerBox: " + centerBox);。它应该给你[object HTMLDivElement],如果没有,那么getElementById()-statement 有问题。
这样做:
<script type="text/javascript">
document.getElementById('example').style.display = "inline";
</script>
...
<div id="example"> ... </div>
【讨论】:
document.getElementById('div_id').style.display = 'inline-block'
document.getElementById('div_id').offsetWidth 给我们 div 的宽度
offsetHeight, offsetLeft, offsetTop 也很有用。
【讨论】: