推荐答案
方式一:圣杯布局
-- -------------------- ---- ------- --------- ----- ------ ------ ------------------- ------- ---- - ---------- ------ -- ----------- -- - ---------- - ------------- ------ -------------- ------ - ----- - ------ ----- ------ ----- - ------------- - ------------ ------ ------------- ------ ----------------- ---------- - ----- - ------ ----- ------ ------ ------------ ------ ----------------- ----------- --------- --------- ----- ------- - ------ - ------ ----- ------ ------ ------------ ------- ----------------- ----------- --------- --------- ------ ------- - ---------------- - -------- --- -------- ------ ------ ----- - -------- ------- ------ ---- ---------------- ---------- ---- ------------- ---- --------------------- ------- ------ ------ ---- ------------- ------ ------ ---- -------------- ------ ------ ------ ------- -------
方式二:双飞翼布局
-- -------------------- ---- ------- --------- ----- ------ ------ -------------------- ------- ---- - ---------- ------ -- ----------- -- - ---------- - ------ ----- ------ ----- - ----- - ------ ----- ------ ----- - ------------- - ------------ ------ ------------- ------ ----------------- ---------- - ----- - ------ ----- ------ ------ ------------ ------ ----------------- ----------- - ------ - ------ ----- ------ ------ ------------ ------- ----------------- ----------- - ---------------- - -------- --- -------- ------ ------ ----- - -------- ------- ------ ---- ---------------- ---------- ---- ------------- ---- --------------------- ------- ------ ------ ---- ------------- ------ ------ ---- -------------- ------ ------ ------ ------- -------
本题详细解读
圣杯布局
- 核心思想:使用
padding
和margin
来实现两侧固定宽度,中间自适应的效果。 - HTML结构:
- 一个包裹容器
.container
。 - 三个子元素:
.main
(中间自适应内容)、.left
(左侧固定宽度)、.right
(右侧固定宽度)。 注意,这里的 HTML 结构,中间自适应内容必须在最前面,两侧的内容必须在中间内容之后。
- 一个包裹容器
- CSS样式:
.container
设置左右padding
值,留出左右侧边的空间,clearfix
清除浮动。.main
设置float: left
和width: 100%
,使得宽度充满容器,并向左浮动。.main-content
设置margin-left
和margin-right
,留出左右侧边栏的空间,中间内容自适应。.left
设置float: left
和固定width
,同时设置margin-left: -100%
,将其移到左侧,通过position: relative
和left: -200px
定位到正确位置。.right
设置float: left
和固定width
,同时设置margin-left
为-150px
,将其移到右侧,通过position: relative
和right: -150px
定位到正确位置。
- 优点:结构清晰,兼容性好。
- 缺点:使用了
position: relative
,稍微复杂。
双飞翼布局
- 核心思想:通过
margin
来实现两侧固定宽度,中间自适应的效果。 - HTML结构:
- 一个包裹容器
.container
。 - 三个子元素:
.main
(中间自适应内容)、.left
(左侧固定宽度)、.right
(右侧固定宽度)。 注意,这里的 HTML 结构,中间自适应内容必须在最前面,两侧的内容必须在中间内容之后。
- 一个包裹容器
- CSS样式:
.container
设置width: 100%
float:left
,clearfix
清除浮动。.main
设置float: left
和width: 100%
,使得宽度充满容器,并向左浮动。.main-content
设置margin-left
和margin-right
,留出左右侧边栏的空间,中间内容自适应。.left
设置float: left
和固定width
,同时设置margin-left: -100%
,将其移到左侧。.right
设置float: left
和固定width
,同时设置margin-left
为-150px
,将其移到右侧。
- 优点:结构清晰,易于理解。
- 缺点:需要额外的 div
.main-content
来撑开主内容区域。
这两种布局方式都能够实现三栏布局,两侧固定宽度,中间自适应的效果,开发者可以根据实际情况选择合适的布局方式。双飞翼的结构更加容易理解,代码更简洁。