【发布时间】:2012-05-29 08:24:14
【问题描述】:
我正在努力与一种奇怪的行为作斗争 - 感谢任何帮助。
我有一个长而复杂的 HTML 页面,一般结构如下:
+------------------------------------------+
| Page header |
+-----------------------------+------------+
| | Right |
| Main content | Column |
| | |
+-----------------------------+------------+
在“主要内容”中,所有的动作都在发生。可能发生的一件事是在用户单击按钮时,一个初始不可见的具有absolute 位置的 div 正在显示,并且它的内容使用 AJAX 填充(即我事先不知道那里有多少内容是)。
如果此 div 的整体 height 最终小于“主要内容”的可用高度,则此方法可以正常工作。然而,如果这个“弹出”div 由于内容很多而最终很长,那么它会在“主要内容”div 的底部被截断。由于下面没有任何内容,我什至无法向下滚动查看弹出窗口的所有内容。我希望“主要内容”能够增长以适应弹出窗口的整个高度,并且页面可以一直滚动到弹出窗口的底部,但这并没有发生。
这是我的“主要内容”的 CSS:
.content {
width: 770px;
position: relative;
overflow-x: visible;
overflow-y: hidden;
}
这是弹出窗口的 CSS:
#popupedit {
background-color: #f1f0ec;
width: 770px;
z-index: 100001;
position: absolute;
left: 0px;
top: 0px;
display: none;
}
在 HTML 中,popupedit 是 content 的直接子代。链中的任何地方都没有高度或最大高度限制。那么为什么“内容”没有增长以适应“弹出”呢?
【问题讨论】:
-
尝试让
overflow-y:在.content中可见 -
这可能是相关的。不幸的是,由于其他原因,我无法删除“overflow-y: hidden”。但是,据我所知,这仅在我明确控制父母的高度时才有效。就我而言,高度始终是“自动”
-
绝对定位元素不会增加其父元素的自然高度或宽度。这就是为什么您的包含 div 不调整大小的原因。这类事情有一些技巧,但我建议将弹出窗口移到外面,最好将其直接附加到 body 元素。这也将使您的解决方案更加 OLD-IE-safe。
标签: jquery css height truncated