css实现水平垂直居中常用的方法

本文介绍了四种使用CSS实现元素在父容器中水平垂直居中的方法:利用margin和transform、display属性结合文本对齐、display:table及flex布局。每种方法都有其优缺点,如兼容性、计算复杂度等。

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

1. margin + transform 实现

这种方法比较容易实现,缺点是 transform 有兼容性,IE低版本不能使用,现在浏览器基本没有问题

css代码
        /* 基本样式代码 */
		.bg-black{
			background: #000000;
		}
		.bg-white{
			background: #FFFFFF;
		}
		.parent{
			width:100px;
			height: 100px;
			border:1px solid #000000;
		}
		.child{
			width:50px;
			height: 50px;;
		}
		/* 水平垂直居中 */
		.vertical-align-center{
			margin-top: 50%;
			margin-left: 50%;
			transform: translate(-50%,-50%);
		}
代码
		<div class="bg-black parent">
				<div class="bg-white child align-center vertical-align-center"></div>
		</div>
效果图

效果图

2. display:inline-block + text-align:center + vertical-align + line-height 实现

看着比较麻烦,实则很简单,主要使用了行高,缺点是高度需要计算,而且改变了块的display属性

		/* 基本样式代码 */
		.bg-black{
			background: #000000;
		}
		.bg-white{
			background: #FFFFFF;
		}
		.parent{
			width:100px;
			height: 100px;
			border:1px solid #000000;
			/* 字体为0是必须的,要不不会完全居中 */
			font-size: 0px;
			text-align: center;
			/* 与父级元素高度一样 */
			line-height: 100px;
		}
		.child{
			width:50px;
			height: 50px;
			/* 子元素的相关设置 */
			display: inline-block;
			vertical-align: middle;
		}
	<div class="bg-black parent">
		<div class="bg-white child"></div>
	</div>

一样的效果
效果图

3.display:table + vertical-align 来实现

这个方法缺点也是改变了元素的display 属性 , 这个方法还有几点需要注意

  1. 父级元素设为 display:table , 子级元素设为 display:table-cell 子级元素对宽高不敏感,自动撑满整个父级
  2. 单纯的对元素设置 display:table-cell 对非百分比的宽高敏感
  3. 这个方法多用来实现多行文本的水平垂直居中
		/* 基本样式代码 */
		.bg-black{
			background: #000000;
		}
		.bg-white{
			background: #FFFFFF;
		}
		.parent{
			width:100px;
			height: 100px;
			border:1px solid #000000;
			/* 父元素的相关设置 */
			display: table;
		}
		.child{
			/* 此时设置宽高是无效的,自动撑满父级 */
			width:60%;
			height: 50px;
			/* 子元素的相关设置 */
			display: table-cell;
			vertical-align: middle;
			text-align: center;
		}
		/* 水平垂直居中 */
		/* 此时 .child中的元素都水平垂直居中 */
	<div class="bg-black parent">
		<div class="bg-white child">
			<div>123<br>123</div>
		</div>
	</div>

在这里插入图片描述
子元素自动撑满了父级,并且,子元素内的 div 还有文本都水平垂直居中了

4. flex布局实现垂直水平居中

缺点就是兼容性不高,使用了css3高级属性,flex。优点就是实现起来相当简单

		/* 基本样式代码 */
		.bg-black{
			background: #000000;
		}
		.bg-white{
			background: #FFFFFF;
		}
		.parent{
			width:100px;
			height: 100px;
			border:1px solid #000000;
			
			/* 对父级进行设置,相当简单 */
			display: flex;
			align-items: center;
			justify-content: center;
			
		}
		.child{
			width:50px;
			height: 50px;
		}
	<div class="bg-black parent">
		<div class="bg-white child"></div>
	</div>

在这里插入图片描述

先介绍这几种,还有很多方法,以后再慢慢补充。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值