好的,所以,任何使用 css 和 html 足够长的时间的人都可能处理过“高度:100%”的荒谬问题。我已经阅读了一些关于处理它的东西,但它并没有太大帮助。下面是我需要构建的布局。我希望一个好的答案能帮助我处理大多数其他需要高度的结构。
规则:
- 它必须填满浏览器窗口而不提供任何滚动条。
- 容器的高度不得超出可见区域(即不需要在 html 或 body 标签上添加“overflow:hidden”来移除滚动条)
- FLEX 区域应该可以根据给定的像素测量值进行调整,而 FILLER 应该填充任何可用的区域。
- 所有区域都应严格调整大小,以便在溢出时将其内容切断,而不会使区域变大。
- 如果可能的话,我宁愿在没有“位置:固定”或“位置:绝对”的情况下这样做,以防以后我需要在其他包装器中使用这样的结构,但现在我会很高兴如果它是可能的反正。
- 最后,我真的不想为此使用 javascript。
+--------------------------------------------+ | 弹性 /\ | | \/ | +-----------------------------------+--------+ | | | | | | | | | | | | | /\ | | | <填充> | 弹性 | | \/ | <- -> | | | | | | | | | | | | | +-----------------------------------+--------+
编辑:
到目前为止,我发现我可以实现@cimmanon 在他的第二个示例中所说的内容,并且消除了标题一侧的多余空间。我通过创建两个表来做到这一点(一个用于包装标题和另一个用于包装内容和侧边栏的表),这是一种不好的做法。但如果这是唯一的方法(同时尝试坚持使用经典 CSS,并避免使用 flexbox 之类的技巧),那么我会坚持使用它。
我还有一个问题,在@cimmanon 的第二个例子中也有这个问题:我的规则之一是:所有区域都应该严格调整大小,以便在溢出时切断它们的内容,而不会使区域变得更大。. 在为每个容器添加一堆随机框后,我发现它们将底部的两个容器推出到浏览器底部之外,从而创建了一个滚动条。这是因为令人讨厌的概念 height:100% 表示浏览器的视口高度,或者内容的高度(如果它更高)——在这种情况下就是这样。
有没有办法解决?