css块级元素垂直居中五种方法

前言

昨天收到京东的面试邀请,面试官是个小姐姐,第一道就是css问题,父元素高度不固定的情况下,如何让内部块元素垂直居中,当时紧张只想到第三种方法,结合网上资料整理了其他几种方法,以供后续翻看,供大家参考!

正文

第一种

  • 在父元素添加display:flex;align-items:center
  • 代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>块级元素居中</title>
</head>
	<style>
		.outer{
		   background:#fc4964;
		   height:500px;
		   display:flex;
		   align-items: center;
		}
		.inner{
		  background:#fff;
		}
		</style>
<body>
	<div class='outer'>
		<div class='inner'>1111</div>
	</div>
</body>
</html>
  • 结果图:
    效果

第二种

  • 将父元素的position设置为position:relative,内部块元素设置为position:absolute;top:50%;并且margin-top向上移动元素的一半
  • 代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>垂直居中</title>
</head>
	<style>
		.outer{
		   background:#fc4964;
		   height:500px;
           position:relative;
		}
		.inner{
		  background:#fff;
		  width:100px;
		  height:50px;
		  position:absolute;
		  top:50%;
		  margin-top:-25px
		}

	</style>
<body>
	<div class='outer'>
		<div class='inner'></div>
	</div>
</body>
</html>
  • 效果图:
    在这里插入图片描述

第三种

  • 设置内部块元素为position:relative;top:50%;transform:translateY(-50%)
  • 代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>垂直居中</title>
</head>
	<style>
		.outer{
		   background:#fc4964;
		   height:500px;
		}
		.inner{
		  background:#fff;
		  width:100px;
		  height:50px;
		  position:relative;
		  top:50%;
		  transform:translateY(-50%)
		}

	</style>
<body>
	<div class='outer'>
		<div class='inner'></div>
	</div>
</body>
</html>
  • 结果如下:
    在这里插入图片描述

第四种

  • 类似第一种方法,设置父元素的display:flex;,然后设置子元素align-self: center;
  • 代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>垂直居中</title>
</head>
	<style>
		.outer{
		   background:#fc4964;
		   height:500px;
			display:flex;
		}
		.inner{
		  background:#fff;
		  width:100px;
		  height:50px;
		  align-self: center;
		}

	</style>
<body>
	<div class='outer'>
		<div class='inner'></div>
	</div>
</body>
</html>
  • 效果图已省略…

第五种

  • 设置父元素display:table-cell; vertical-align: middle;
  • 代码如下:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>垂直居中</title>
</head>
	<style>
		.outer{
		   background:#fc4964;
		   width:600px;
		   height:500px;
		   display:table-cell;
		   vertical-align: middle;
		}
		.inner{
		  background:#fff;
		  width:100px;
		  height:50px;
		}

	</style>
<body>
	<div class='outer'>
		<div class='inner'></div>
	</div>
</body>
</html>
  • 效果如下:
    在这里插入图片描述

总结

结合网上资料,整理了这一篇文章,后续有新方法再整理出来,码字不易,请多支持

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值