margin-塌陷问题

塌陷问题



当两个盒子在垂直方向上设置margin值时,会出现一个有趣的塌陷现象。

①垂直并列(少见)

    首先设置两个DIV,并为其制定宽高

  1.  1 /*HTML部分*/
     2 <body>
     3     <div class="box1">box1</div>
     4     <div class="box2">box2</div>
     5 </body>
     6 /*CSS部分*/
     7 <style>
     8     *{
     9          margin: 0;
    10          padding: 0;
    11     }
    12      .box1{
    13          width: 200px;
    14          height: 200px;
    15          background: yellowgreen;
    16      }
    17     .box2{
    18          width: 200px;
    19          height: 200px; background: gray;
    20     }
    21 </style>    

   

     对box1我们为其设置margin-bottom:50px;

     对box2我们为其设置margin-top: 40px;

  1.  1 <style>
     2 *{
     3     margin:0;
     4     padding:0;
     5 }
     6 .box1{
     7     width:200px;
     8     height:200px;
     9     background: yellowgreen;
    10     margin-bottom: 50px;
    11 }
    12 .box2{
    13     width:200px;
    14     height:200px;
    15     background: gray;
    16     margin-top: 40px;
    17 }
    18 </style>

     我们肯定会很理所当然的认定这两个盒子之间的距离为90px,事实上并非如此.

     如下图所示:

     两盒子之间的距离仅是50px,也就是说两盒子之间的margin出现了重叠部分,故而我们可以得出:垂直之间塌陷的原则是以两盒子最大的外边距为准。

②嵌套关系(常见)

  1.  1 /*CSS部分*/
     2 <style>
     3 .box1{
     4     width:400px;
     5     height:400px;
     6     background: pink;
     7 }
     8 .box2{
     9     width:200px;
    10     height:200px;
    11     background: lightblue;
    12 }
    13 </style>
    14 /*HTML部分*/
    15 <body>
    16     <divclass="box1">
    17     <divclass="box2"></div>
    18 </div>
    19 </body>

     如图示

    当为子盒子添加margin-top:10px;时会发生如下情况:

    子盒子和父盒子之间并没出现期望的10px间隙而是父盒子与子盒子一起与页面顶端产生了10px间隙。

解决方法:
(1)为父盒子设置border,为外层添加border后父子盒子就不是真正意义上的贴合。
(2)为父盒子添加overflow:hidden;
(3)为父盒子设定padding值。

来自为知笔记(Wiz)

时间: 2024-08-06 23:37:38

margin-塌陷问题的相关文章

margin塌陷现象

如果两个盒子是包含关系,如果让子盒子在父盒子之内向下平移100px:(margin塌陷现象)解决方案: padding , border , overflow <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>盒子模型</title> <style>/*margin塌陷*/ .box1 { wi

11-[CSS]-margin塌陷,

1.margin塌陷 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>margin的塌陷</title> <style type="text/css"> *{ padding: 0; margin: 0; } .box1{ width: 300px; height: 200

margin塌陷与合并问题

本文转自: https://blog.csdn.net/Sunshineanl/article/details/70767277 margin塌陷问题和合并问题都只对垂直方向有效 margin塌陷问题 这个问题是一个经典的浏览器内核问题.具体表现是当两个元素嵌套到一起时,外层盒模型的margin-top取两个元素中margin-top较大的值. 因为在正常的情况下内层元素是相对于外层元素进行移动,但是这时内层元素却相对于整个文档进行移动,好像外层元素没有“棚顶”一样,因此叫margin塌陷问题.

触发bfc解决父子元素嵌套垂直方向margin塌陷问题

首先看一下问题案例 .wrapper{ width: 100px; height: 100px; background-color: aqua; margin-top: 100px; margin-left: 100px; } .inner{ width: 50px; height: 50px; margin-top: 100px; margin-left: 50px; background-color:black; } <div class="wrapper"> <

6.margin塌陷问题

当时说到了盒模型,盒模型包含着margin,为什么要在这里说margin呢?因为元素和元素在垂直方向上margin里面有坑. 我们来看一个例子: <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>margin塌陷</title> <style type="text/css"> *

解决margin塌陷和margin合并

<!doctype html> <html> <head> <meta charset="UTF-8"> <title>嘿嘿嘿</title> <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no,

盒子模型margin塌陷

盒子模型 margin 外边距 padding 内边距 盒子布局的稳定性: 优先使用width>padding>margin 1.上下盒子的margin塌陷 上下盒子发生margin塌陷 margin小的盒子塌陷在大的盒子,不是简单叠加.浮动后,左右margin也不会发生塌陷,如想测试,把注释代码取消注释即可. 塌陷效果图: .box1{ /*float: left;*/ width: 200px; height: 200px; background: yellowgreen; /*margi

问题与对策:CSS的margin塌陷(collapse)

1: <!DOCTYPEHTML PUBLIC"-//W3C//DTD HTML 4.0 Transitional//EN"> 2: <html> 3: <head> 4: <title></title> 5: <metaname=""content=""> 6: <style> 7: *{ 8: margin:0px; 9: padding:0px; 10: }

CSS的margin塌陷(collapse)

对于以下简单代码: 点击(此处)折叠或打开 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title></title> <meta name="" content=""> <style> *{ margin:0px; padding:0px; } #no1

CSS的margin塌陷(collapse) 问题与对策

对于以下简单代码: 如果您认为应该是这样的话: 那就错了.结果是这样的: 因为CSS中存在一个margin collapse,即边界塌陷或者说边界重叠.对于上下两个并列的div块而言,上面div的margin-bottom和下面div的margin-top会塌陷,也就是会取上下两者margin里最大值作为显示值,所以从这个意义上说:CSS及浏览器的设计者们希望我们在布局时,如果遇到上下两个并排内容块的安排,最好只设置其中每个块上或下margin的一处即可. 但对于父块DIV内含子块DIV的情况,