CSS实现三栏布局的五种方式

公用html:

<article class="main">
		<div class="left"></div>
		<div class="center"><br><br><br><br><br><br><br><br></div>
		<div class="right"></div>
</article>

公用css:

*{
	margin:0;
	padding: 0;
}

一、float布局

html:

<article class="main">
		<div class="left"></div>
		<div class="right"></div>
		<div class="center"><br><br><br><br><br><br><br><br></div>
</article>

css:

.left{
	width: 100px;
	height: 100px;
	background: red;
	float: left;
}
.right{
	width: 100px;
	height: 100px;
	background: green;
	float: right;
}
.center{
	margin-left: 100px;
	margin-right: 100px;
	background: pink;
}

要注意一点,这种方法要将中间栏放在最后,因为若将中间栏放在中间,并没有设置浮动的话,会占据文档中的这行位置,导致右边栏并不能完全和左边栏平齐。
在这里插入图片描述
由于我们使用了float会导致父元素高度塌陷而导致问题, 所以为了不影响其他元素的显示这里需要清除浮动

二、position布局

css:

.left{
	width: 100px;
	height: 100px;
	background: red;
	position: absolute;
	top: 0;
	left: 0;
}
.right{
	width: 100px;
	height: 100px;
	background: green;
	position: absolute;
	top: 0;
	right: 0;
}
.center{
	background: pink;
	position: absolute;
	left: 100px;
	right: 100px;
}

在这里插入图片描述
绝对定位会脱离文档流,如果其他元素位置有要求的话,需要继续设置定位

三、table布局

table是一种常见的布局方式,他可以将整个页面按照表格的方式设置为多行多列,但是由于书写table标签比较麻烦尤其是涉及到table内嵌table的时候,所以CSS给我们提供了display: table或inline-table的方式可以让让们方便的使用table布局, 设置子元素为列的属性为display:table-cell
css:

.main{
	/*必须要*/
	width: 100%;
	display: table;
}
.left,.right,.center{
	display: table-cell;
}
.left{
	width: 100px;
	height: 100px;
	background: red;
}
.right{
	width: 100px;
	height: 100px;
	background: green;
}
.center{
	background: pink;
}

在这里插入图片描述
table布局使用起来方便,兼容性也不存在问题,不利于搜索引擎抓取信息

四、弹性(flex)布局

当给元素设置display:flex 或 inline-flex,则该元素就是一个flex容器,其子元素就是容器成员,称之为flex项目,每个项目默认按照从左到右方式排列

.main{
	/*必须要*/
	width: 100%;
	display: flex;
	/*两端对齐*/
	justify-content:space-between;
}

.left{
	width: 100px;
	height: 100px;
	background: red;
}
.right{
	width: 100px;
	height: 100px;
	background: green;
}
.center{
	width:100%;
	background: pink;
}

在这里插入图片描述
flex布局比较强大,但是还是存在IE上兼容性问题,只能支持到IE9以上

五、网格(gird)布局

网格它将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局。将属性 display 值设为 grid 或 inline-grid 就创建了一个网格容器,所有容器直接子结点自动成为网格项目。

.main{
	/*必须要*/
	width: 100%;
	/*网格布局*/
	display: grid;
	/*行高*/
	grid-template-rows: 100px;
	/*列宽*/
	grid-template-columns: 300px auto 300px;
}

.left{
	background: red;
}
.right{
	background: green;
}
.center{
	background: pink;
}

grid布局很强大,但是兼容性很差

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值