2

我希望我的页面区域保留用于上下文相关的帮助文本。它是空白的,除非将鼠标悬停在某些特定元素上。但是,当然,有几个独立的文本片段可以从中选择可见的选择。这是在一个页面流中,下面有更多的东西。我尝试使用“定位”的 div,并将帮助 div 放入其中。每个帮助 div 都是 position: absolute; 顶部:0px;可见性:隐藏;旨在让 JS 一次使其中一个可见,但空间将保留用于任何帮助 div 中最大的一段文本。好吧,正如你们大多数人所猜到的,因为帮助 div 是 position: absolute,它们的高度不会影响封闭 div 的高度,最终高度为零。

我怎样才能做到这一点?我不想使用像素大小来强制高度,因为它在某些浏览器/字体组合上几乎总是错误的,并且每次更改帮助文本或获得新的、更长的帮助段时都需要不断调整添加到此。

我说得有道理吗,还是我需要尝试画图?

4

1 回答 1

4

是的,你说得有道理。正如您正确指出的那样,包含元素正在折叠为零高度,因为它不包含任何具有大小的流子项。如果不求助于 Javascript,就没有简单的解决方案,因为明显的替代方案意味着使它们全部成为流布局的一部分,这意味着容器将增长以容纳所有文本。

可行的解决方案:

  1. 适用display:inline-block于所有帮助文本,将它们并排放置,根据需要将它们放入宽度为10000px或更大的容器元素中,并将该元素封装在带有overflow:hidden. 这样容器实际上将假定最大孩子的高度。然后激活文本需要将 DOM 中的元素移动到前面以便首先绘制它,或者滚动以将其带到正确的位置,这可能很复杂。
  2. 加载页面后使用Javascript测量元素的实际高度,将最大的设置为容器的高度,然后应用display:none到children而不是visibility:hidden.

第二个选项最简单,也是我的首选。这完全取决于您的具体情况,尽管是否有更好的选择。

于 2013-10-25T01:27:49.580 回答