解决使用绝对定位absolute后,margin:0 auto居中方法失效

我们都知道,当给一个块级元素设置宽度后,使用margin:0 atuo可以实现水平上的居中。

margin:0 auto的理解是,上下边距为0,左右边距为auto(auto是自动调整大小)

在浏览器中div如果没有设置宽度,那么宽度自动为浏览器的宽度,这是给div设置宽度后,div会靠左显示,margin:0 atuo就是为了填充右侧的空白空间。

但是<img>当不设置宽度时,不会块级元素一样宽度默认和浏览器相同,所以不能用margin:0 auto来居中,因为img是行内的块级元素。

可是当使用了绝对定位时,margin:0 auto就失效了,有什么好的方法来失效居中吗?
我们写两个div,关系为父子关系。想要实现div2在div1的下方居中。

<div class="div1">
	<div class="div2">
	</div>
</div>

css样式设置为

		.div1{
			position: relative;
			height: 300px;
			width: 300px;
			background:black;
		}
		.div2{
			position: absolute;
			bottom:0;
			height: 100px;
			width: 100px;
			background: red;
		}

在这里插入图片描述此时会发现给div2设置margin:0 auto; div2并不会居中显示。
解决办法是改css为

		.div1{
			position: relative;
			height: 300px;
			width: 300px;
			background:black;
		}
		.div2{
			position: absolute;
			bottom: 0;
			left: 50%;
			margin-left: -50px;
			height: 100px;
			width: 100px;
			background: red;
		}

实际上就是给div2一个left为50%,然后使margin-left的值为div2的一半就可以实现居中了

			left: 50%;
			margin-left: -50px;

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值