实现div中的img图片垂直水平居中

body结构

<body>
	<div>
		<img src="1.jpg" alt="haha">
	</div>
</body>



方法一(display: table-cell)

  将display设置成table-cell,然后水平居中设置text-align为center,垂直居中设置vertical-align为middle。

<style type="text/css">
	*{
		margin: 0;
		padding: 0;
	}
	div{
		width:150px;
		height: 100px;
		display: table-cell;
		vertical-align: middle;
		text-align: center;
		border:1px solid #000;
	}
	img {
		width: 50px;
		height: 50px;
	}
</style>



方法二(position定位)

  通过position定位来实现
  将父容器div设置成相对定位relative,将img设置成绝对定位absolute,left:50%,top:50%,此时图片的左上角位于div的中心,要使图片的中心位于div的中心,就需要将图片向上移动图片高度的一半,并向左移动图片宽度的一半。

<style type="text/css">
	*{ margin: 0; padding:0; }
	div{
		width:150px;
		height: 100px;
		position: relative;
		border:1px solid #000;
	}
	img {
		width: 50px;
		height: 50px;
		position: absolute;
		top: 50%;
		left: 50%;
		margin-top: -25px; /* 高度的一半 */
		margin-left: -25px; /* 宽度的一半 */
	}
</style>



方法三(在不清楚图片或元素的真实宽高情况下 :position + transform)

  将div设置成相对定位relative,将img设置成绝对定位absolute,left:50%,top:50%,此时图片的左上角位于div的中心,要使图片的中心位于div的中心,就需要将图片向上移动图片高度的一半,并向左移动图片宽度的一半,如果不知道元素的宽高,可以用transform: translate(-50%, -50%);

<style type="text/css">
	*{ margin: 0; padding:0; }
	div{
		width:150px;
		height: 100px;
		position: relative;
		border:1px solid #000;
	}
	img {
		width: 50px;
		height: 50px;
		position: absolute;
		top: 50%;
		left: 50%;
		margin-top: -25px; /* 高度的一半 */
		margin-left: -25px; /* 宽度的一半 */
	}
</style>



方法四(不确定真实宽高:position + margin )

  将div设置成相对定位relative,将img设置成绝对定位absolute,left:0,top:0,right:0, bottom:0,此时图片位于div的左上角,要使图片的中心位于div的中心,就需要将图片向下移动图片高度的一半,并向右边移动图片宽度的一半,当不知道元素宽高的情况下,可以用 margin:auto 填充外边距使图片居中。

<style type="text/css">
	*{ margin: 0; padding:0; }
	div{
		width:150px;
		height: 100px;
		position: relative;
		border:1px solid #000;
	}
	img {
		width: 50px;
		height: 50px;
		position: absolute;
		top: 0;
		left: 0;
		right: 0;
		bottom: 0;
		margin: auto;
	}
</style>



方法五(弹性布局flex )

  将display设置成flex,然后水平居中设置justify-content为center,垂直居中设置align-items为center。

<style type="text/css">
	*{ margin: 0; padding:0; }
	div{
		width:150px;
		height: 100px;
		border:1px solid #000;
		display: flex;
		justify-content: center;    /*  两端对齐 */
		align-items: center;        /*  垂直对齐 */
	}  
	img {
		width: 50px;
		height: 50px;
	}
</style>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值