×

CSS 布局 三列布局

深入理解CSS布局——探讨三列布局的多种实现方式

元智汇电子 元智汇电子 发表于2023-12-04 09:33:30 浏览379 评论0

抢沙发发表评论

在网页设计中,三列布局是常见的页面结构之一,通常包括左右两个固定宽度的列和一个自适应宽度的中间列。本文将介绍三种经典的CSS布局方法:定位实现的圣杯布局、双飞翼布局以及浮动实现的三列布局。


定位实现的圣杯布局

背景介绍

三列元素,左右元素具有固定宽度,中间元素自适应。

image.png

实现方式

左右两列采用绝对定位并固定宽度,中间元素自适应,且左右margin设置为左右元素的宽度。但这种方式有缺点,当出现滚动条时,内容区在滚动条后边显示,而且内容区仍旧被压缩,因此不推荐使用。

image.png

image.png

浮动实现的三列布局

注意事项

由于浮动脱离了文档流,因此中间列一定要放在左右两列的最后面。

image.png

实现方式

左右两列固定宽度,中间列自适应宽度,采用浮动实现。然而,该方法存在缺点,当文字出现时,布局可能会错乱,导致扩展性不佳。

image.png

image.png

文字环绕问题解决

如果添加文字,需要注意以下几点:

  • 中间列未浮动,左右列浮动。

  • 浮动的本质是解决文字环绕图片,因此添加的文字应该环绕着最近的浮动元素围绕在周围排列。

  • 未浮动的中间列会被挤下去。

image.png

image.png


圣杯布局结构

考虑到页面的头部(header)、尾部(footer)、内容(content),其中内容又包括左侧列(left)、右侧列(right)和中间列(middle)。我们希望中间列在页面宽度变化时能够优先自适应渲染,而左右两列保持固定宽度。

image.png

实现步骤

  1. 通过浮动使三列在一行显示,但由于浮动会导致高度塌陷,需要使用清除浮动的方式,这里使用了 overflow: hidden;。

  2. 设置中间列的宽度为100%以占满剩余空间。

  3. 利用负边距和相对定位拉动左右列到合适的位置,防止它们覆盖中间列的内容。

  4. 添加最小宽度 min-width: 600px; 防止布局在较小屏幕上出现问题。

image.pngimage.png


双飞翼布局:实现固定两边、中间自适应的三栏布局

在网页设计中,双飞翼布局是一种与圣杯布局相似的实现方式,旨在满足固定两边、中间自适应的需求。本文将介绍双飞翼布局的思路和步骤,并展示如何在其中添加额外的元素以优化布局。

布局思路

双飞翼布局的思路是将中间列看作是鸟的身体,而左右两列则是鸟的翅膀。首先,将主要内容放置在中间列,然后将两侧的翅膀移动到合适的位置。以下是实现步骤:

  1. 将中间部分置于content的最前面,紧接着是左列和右列。

  2. 使用浮动使三列在一行显示,随之可能出现的高度塌陷,需要对content清除浮动。

  3. 设置中间列的宽度为100%,使其占满剩余空间。

  4. 将左列移动到最左边,使用margin-left: -100%,右列同理为margin-left: -200px。

  5. 为了防止左右列遮挡中间内容,通过设置外围content的padding或使用margin将中间列拉过来。这里选择在middle中添加一个内部元素middle-inner,设置其margin: 0 200px。

优化布局

在实现中间列自适应的同时,通过添加middle-inner元素,可以更灵活地调整中间内容的显示位置。

image.png

image.pngimage.png

群贤毕至

访客