css盒子水平垂直居中

本文介绍了7种常见的盒子水平垂直居中的方法,包括定位、计算属性、margin外边距、弹性盒模型、table-cell、transform等,适用于不同场景的需求。

盒子水平垂直居中的常见方法

  • 第一种,通过定位的方式
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			#big {
				width: 500px;
				height: 500px;
				background-color: red;
				position: relative;
			}
			#small {
				width: 200px;
				height: 200px;
				background-color: blue;	
				position: absolute;
				left: 0;
				top: 0;
				right: 0;
				bottom: 0;
				margin: auto;
			}
		</style>
	</head>
	<body>
		<div id="big">
			<div id="small"></div>
		</div>
	</body>
</html>
  • 第二种,通过定位和计算属性
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			#big {
				width: 500px;
				height: 500px;
				background-color: red;
				position: relative;
			}
			#small {
				width: 200px;
				height: 200px;
				background-color: blue;	
				position: absolute;
				left: calc(500px / 2 - 200px / 2);
				top: calc(500px / 2 - 200px / 2);
			}
		</style>
	</head>
	<body>
		<div id="big">
			<div id="small"></div>
		</div>
	</body>
</html>
  • 第三种,通过margin外边距的方式
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			#big {
				width: 500px;
				height: 500px;
				background-color: red;
				overflow: hidden;
			}
			#small {
				width: 200px;
				height: 200px;
				background-color: blue;	
				margin: 0 auto;
				margin-top: calc(500px / 2 - 200px/2);
			}
		</style>
	</head>
	<body>
		<div id="big">
			<div id="small"></div>
		</div>
	</body>
</html>
	</body>
</html>
  • 第四种,计算属性与maigin外边距
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
	</body>
</html>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			#big {
				width: 500px;
				height: 500px;
				background-color: red;
				overflow: hidden;
			}
			#small {
				width: 200px;
				height: 200px;
				background-color: blue;
				margin-top: calc(500px / 2 - 200px/2);
				margin-left: calc(500px / 2 - 200px/2);	
			}
		</style>
	</head>
	<body>
		<div id="big">
			<div id="small"></div>
		</div>
	</body>
</html>
	</body>
</html>
  • 第五种,设置弹性盒模型
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
	</body>
</html>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			#big {
				width: 500px;
				height: 500px;
				background-color: red;
				display: flex;
				justify-content: center;
				align-items: center;
			}
			#small {
				width: 200px;
				height: 200px;
				background-color: blue;
			}
		</style>
	</head>
	<body>
		<div id="big">
			<div id="small"></div>
		</div>
	</body>
</html>
	</body>
</html> 
  • 第六种,通过table-cell进行设置
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
	</body>
</html>
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
	</head>
	<body>
		<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<style type="text/css">
			#big {
				width: 500px;
				height: 500px;
				background-color: red;
				display: table-cell;
				vertical-align: middle;
			}
			#small {
				width: 200px;
				height: 200px;
				background-color: blue;
				margin: auto;
			}
		</style>
	</head>
	<body>
		<div id="big">
			<div id="small"></div>
		</div>
	</body>
</html>
	</body>
</html>
  • 第七种,通过transform进行设置

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>demo</title>
    <style type="text/css">
        .div1 {
            width: 500px;
            height: 500px;
            background-color: red;
            position: relative;
        }
        .div2 {
            height: 200px;
            width: 200px;
            background-color: blue;
            position: absolute;
            top: 50%;
            left: 50%;
            -ms-transform: translate(-50%, -50%);
            -moz-transform: translate(-50%, -50%);
            -o-transform: translate(-50%, -50%);
            transform: translate(-50%, -50%);
        }
 
    </style>
</head>
<body>
<div class="div1">
    <div class="div2 center">
    </div>
</div>
</body>

以上有几种方式里面的设置有一些重复,在使用calc需要注意的地方子盒子的margin的left(top)等是父级的宽度(height)的一半减去子级的宽(height)的一半。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值