前端面试硬核之垂直居中的四种方法

面试必考问题之垂直居中:

1.margin:auto法

可以实现脱离文档流居中

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<style>
			img{
				position:absolute;
				margin: auto;
				width: 20px;
				height: 20px;
				top:0;
				left: 0;
				right: 0;
				bottom: 0;
			}
			
			div{
				width: 700px;
				height: 400px;
				position: relative;
				border:1px solid red;
			}
		</style>
		<title></title>
	</head>
	<body>
	<div>
		<img src="Android.jpg" />
	</div>
	</body>
</html>

absolute生成绝对定位的元素,相对于 static 定位以外的第一个父元素进行定位。元素的位置通过 “left”, “top”, “right” 以及 “bottom” 属性进行规定。
relative生成相对定位的元素,相对于其正常位置进行定位。

2.margin负值法

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<style>
#container{
width: 500px;
height: 400px;
border: 2px solid black;
position: relative;
}
#inner{
width: 200px;
height: 100px;
background-color: yellowgreen;
position: absolute;
top: 50%;
left: 50%;
margin-left: -100px; /*width的一半*/
margin-top: -50px; /*height的一半*/
} 
</style>
<title></title>
	</head>
	<body>
	<div id="container">
		<div id="inner">
	</div>
	</body>
</html>

inner居中,则margin-left 和margin-top与width和height(inner)的取负值的二分之一。

3.table-cell(未脱离文档流的)

设置父元素的display:table-cell,和vertical-align:middle,这样子元素可以实现垂直居中。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<style>
div{
width: 100px;
height: 100px;
border: 3px solid #555;
display: table-cell;
vertical-align: middle;
text-align: center;
}
img{
width: 10px;
height: 10px;
vertical-align: middle;
}
		</style>
		<title></title>
	</head>
	<body>
	<div>
		<img src="Android.jpg" />
	</div>
	</body>
</html>

4.flex布局

将父元素设置为display:flex,并且设置align-items:center;justify-content:center;
用上面的html架子:

div{
width: 300px;
height: 200px;
border: 3px solid #546461;
display: flex;
align-items: center;
justify-content: center;
}
img{
width: 20px;
height: 20px;
border: 3px solid #458761;
padding: 1px;
}

更改部分css
在这里插入图片描述
四种方法对于居中效果皆可实现。

发布了158 篇原创文章 · 获赞 44 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_43277404/article/details/104272668