使用溢出调整元素大小:自动考虑滚动条

时间:2009-12-25 15:38:59

标签: javascript css overflow

我需要制作一个图像查看器:左边是一个带有div和图像/视频的可调整大小的TD。在右边TD有评论。调整图像大小,以便使用滚动条(水平或垂直)可以查看具有高纵横比的全景,但仅在必要时显示滚动条。问题是如何计算正确的宽度/高度。

这是我使用的文档结构:

<table><tr>
   <td id="container" width="100%" style="height: 100%">
       <div id="frame" style="border: 7px solid; width: 200px; height: 150px; overflow: auto">
           <img id="content" src="..." />
       </div>
   </td>
   <td width="200">some comments</td>
</tr></table>

我想调整#frame的大小,使其像min(size of #container, max(size of #frame, size of #content))一样。换句话说,要调整大小以使每个尺寸在#container内最大化,但#content#frame之间没有空格。

我在每个维度上进行最小(最大...)计算,同时考虑边界,填充,边距。但随后它会留下滚动条。

我试着检查一下clientHeight&amp;如果#frame仍然小于#container,则设置style.height并添加差异。但由于单独或一起消失的滚动条,这不太可靠。

有没有现成的解决方案?

1 个答案:

答案 0 :(得分:0)

我找到了以下解决方案:

  1. 弄清楚元素的大小,它的装饰,可用空间
  2. 将容器调整为内容大小,但不超过父
  3. 如果容器小于所需大小,则表示存在滚动条,因此其他维度需要扩展。尝试扩展它。