浅谈 HTML 布局(二)

本文详细介绍了两种常见的三栏布局方法——圣杯布局和双飞翼布局。这两种布局方式都能实现左右固定宽度,中间自适应的布局效果,同时保证中间列优先渲染。通过HTML和CSS代码示例,讲解了如何利用浮动、负边距和相对定位来实现这些布局。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

此文章只是为了让自己能更规范学习以及学会总结,并且让复习的时候不至于无从下手,都是从别的地方摘抄经过自己的总结所写,底部会附上摘抄的路径,如果看不明白我的文章,可以看看原文写的,如果有什么地方不正确,也欢迎小伙伴指出,大家一起学习~~

一、三栏布局 - 圣杯布局

要求:三栏布局 左右固定 中间自适应,不过中间列要写在前面保证优先渲染。

HTML 代码

<!-- 圣杯布局 middle 最先 -->
<div class="outer">
    <div class="middle">圣杯-middle</div>
    <div class="left">圣杯-left</div>
    <div class="right">圣杯-right</div>
</div>

样式代码:

* {
	margin: 0;
	padding: 0;
	border: none;
}

.left,
.right {
	width: 200px;
}

.left,
.middle,
.right {
	height: 100px;
}

.left {
	background: tomato;
}

.middle {
	background: lightgreen;
}

.right {
	background: gold;
}

圣杯布局 通过浮动和负边距实现

.outer{
	padding: 0 200px;
}

:使用内边距撑开左右两边 div 的宽度

.outer .middle{
	width: 100%;
	float: left;
}

:中间 div 宽度自适应

.outer1 .left {
	width: 200px;
	float: left;
}
.outer .left{
	position: relative;
	left: -200px;
	float: left;
	margin-left: -100%;
}

对于这一块,我很奇怪,为什么不用绝对定位,这样还更方便一点,不过既然这样写了,那么也就只能理解这里每句话的意思了。

  • left: -200px; 在相对定位的作用下,(左 div) 向左移动(左 div)的宽度。
  • margin-left: -100%; 相当于 top: -100px; 这里的 “ -100px; ” 是 div 的高度。这样就可以和 中间的 div 水平啦。
.outer .right{
	position: relative;
	left: 200px;
	float: left;
	margin-left: -200px;
}
  • left: 200px;
  • margin-left: -200px;

以上2个啊,不知道什么意思,等以后知道了再回来改好了。如果有小伙伴知道的话,麻烦留言告诉我。

在这里插入图片描述

二、三栏布局 - 双飞翼布局

要求:三栏布局 左右固定 中间自适应,不过中间列要写在前面保证优先渲染。

HTML 代码

<!-- middle 放最前且 多一层 div -->
<div class="outer">
	<div class="middle-wrap">
		<div class="middle">双飞翼布局-middle</div>
	</div>
	<div class="left">双飞翼布局-left</div>
	<div class="right">双飞翼布局-right</div>
</div>

样式代码:

* {
	margin: 0;
	padding: 0;
	border: none;
}

.left,
.right {
	width: 200px;
}

.left,
.middle,
.right {
	height: 100px;
}

.left {
	background: tomato;
}

.middle {
	background: lightgreen;
}

.right {
	background: gold;
}

middle 样式:

.outer .middle-wrap {
	width: 100%;
	float: left;
}

.outer .middle {
	margin: 0 200px;
}
.outer .left {
	float: left;
	margin-left: -100%;
}
  • margin-left: -100%; 相当于 top: -100px; 这里的 “ -100px; ” 是 div 的高度。这样就可以和 中间的 div 水平啦。

下面是原文里 右 div 的样式代码

.outer .right {
	float: left;
	margin-left: -200px;
}

我觉得原文里的代码有点难理解,所以改了一下,效果还是一样的。

.outer .right {
	float: right;
	margin-left: -100%;
}
  • float: right; 很容易理解,向右浮动呗。
  • margin-left: -100%; 跟以上以上,相当于 top: -100px;

在这里插入图片描述

本文引自:【前端面试】同学,你会手写代码吗?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值