css 子元素margin-top影响了父元素

源码

<!DOCTYPE HTML>
<html manifest="">
<head>
  <style>
    .box1 {
      background-color: deepskyblue;
      height: 200px;
      width: 200px;
    }
    .box2 {
      background-color: coral;
      margin-top: 50px;
      height: 50px;
      width: 200px;
    }
  </style>
</head>
  <body>
  <div class="box1">
    <div class="box2">
    </div>
  </div>
  </body>
</html>

效果

可以看到box1虽然没有margin-top:50px,但是上方也留出了50px
在这里插入图片描述

原因

css盒模型规定:

In this specification, the expression collapsing margins means that adjoining margins (no non-empty content, padding or border areas or clearance separate them) of two or more boxes (which may be next to one another or nested) combine to form a single margin.
所有毗邻的两个或更多盒元素的margin将会合并为一个margin共享之。毗邻的定义为:同级或者嵌套的盒元素,并且它们之间没有非空内容、Padding或Border分隔。

解决方案

  1. 父级或子元素使用浮动或者绝对定位absolute
    浮动或绝对定位不参与margin的折叠
  2. 父级overflow:hidden;
  3. 父级设置padding
  4. 父级设置border

posted on   路过君  阅读(129)  评论(0编辑  收藏  举报

相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2020-04-11 spring 启动时自动运行
2020-04-11 spring cloud oauth2授权服务 默认tokenService配置源码
2020-04-11 spring cloud 搭建oauth2授权服务 使用redis存储令牌
2020-04-11 spring cloud oauth2授权服务 clientDetails配置源码
2020-04-11 spring 验证框架
2020-04-11 IDEA 插件整理
2020-04-11 spring security笔记 默认登陆页面源码

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示