CSS Margin失效问题

如下代码中会出现margin失效的情况:

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title></title>
</head>
<body>
  
    <div style="width:50px;height: 50px; background: red;">
        <div style="width: 20px; height: 20px; margin: 10px; background: black;"></div>
    </div>
</body>
</html>

渲染效果如图:

会发现子元素并没有顶着父元素的边距向下缩进10px,虽然设置了margin:10px, 反而父子元素作为一个整体被缩进了10px.

为什么会这样呢?

原因是因为父元素的border margin paddinig都为0px(假设我们把这种0px类比为虚的,不存在的百边框), 而margin属性是要顶着有“实体”的框。如果我们设置父元素的border:1px或者 padding:1px,子元素就会按照父元素的"实线"边框按margin属性缩进了。(设置父元素的margin:1px也不会生效,因为margin也是虚的)

效果如图:

 代码如下(增加了padding属性):

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <title></title>
</head>
<body>
    <div style="width:50px;height: 50px; background: red; padding: 1px;">
        <div style="width: 20px; height: 20px; margin: 10px; background: black;"></div>
    </div>
</body>
</html>

再来说为什么在没设置padding之前,整体会距离最外面的body缩进。因为外层元素的盒子在计算里层元素盒子边框距离的时候是父的margin + border + padding + 子元素的margin border padding, 所以父子元素作为整体会顶着body的上边距缩进10px

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值