实现以下HTML页面布局的最佳方法是什么?
+----------------+-----------+----------------+
| space-TL | content-T | space-TR |
+----------+-----+-----------+-----+----------+
| space-CL | content-C | space-CR |
+----------+-----+-----------+-----+----------+
| space-BL | content-B | space-BR |
+----------------+-----------+----------------+
这里,四角的4个space-*
框(space-T*
和space-B*
)必须具有相等的宽度,而content-C
必须水平居中,但可以比content-T
或content-B
宽。所有3个content-*
框的宽度可变,具体取决于其内容。
- 我试着在所有3个
content-*
盒子上设置水平margin: auto
和max-width
的组合,这似乎工作得相当不错。但是,如果content-T
太窄,那么space-TL
变得比space-BL
更宽。 - 我正在考虑在外部容器上使用
display: grid
,但这对我来说似乎有点过分,因为我需要为6个space-*
元素中的每一个元素提供显式的盒子。 - 所以也许我会做一个3列的布局,然后只允许
content-C
延伸到中间列之外的overflow: visible
?
你会怎么做?
框的高度不是那么相关,并且可以是依赖于内容的。
谢谢!
1条答案
按热度按时间nbewdwxp1#
有用的信息是角是否具有已知的固定宽度,以及中心块的内容是图像还是 Package 文本。基于给出的有限信息,我想出了这个使用三行flexbox的解决方案。
第一列和第三列的flex-grow和flex-shrink为0,flex-basis为200px
flex: 0 0 200px
。在中间行中,这些外部列指定为
flex-shrink: .5
,中心列指定为flex-grow: 1
。所有外部列都将是200px宽,除非中心内容需要更多的空间并缩小相邻列。