子元素宽高设置为100%后,宽高都超出父级

最近写样式遇到了如下现象:子集设置宽高为100%,但是溢出了父级,如下图所示。
在这里插入图片描述

通过查阅资料,获知了原因。

css盒子模型有4层:margin、border、padding、content。
在这里插入图片描述
当元素没有进行定位时,子集元素设置的宽度和高度的百分比,是根据content区计算的,也就是说,没有把padding、border计算进去。

而使用绝对定位时,子集元素的宽高是根据父级元素的padding盒子计算的,也就是说子集的宽度 = 父级左padding + content + 父级右padding,子集的高度 = 父级上padding + content + 父级下padding。

示例代码:

//没用定位
<div style="height:100px;width:100px;padding:20px;border:10px solid #ccc;margin:10px auto;">
	<div style="height:100%;width:100%;background-color:#00796B;"></div>
</div>
//用了绝对定位
<div style="height:100px;width:100px;padding:20px;border:10px solid #ccc;position:relative;margin:10px auto;">
	<div style="height:100%;width:100%;position:absolute;background-color:#00796B;"></div>
</div>

运行结果如下图,没用定位的子集宽高都是100,用了定位的子集的宽 = content宽度 + padding20 *2 = 140,高度同理。
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值