• margin塌陷


    一:什么是margin塌陷

    在标准文档流中,竖直方向的margin会出现叠加现象(水平方向不会塌陷),两个margin紧挨着,中间没有border或者padding
    margin直接接触,就产生了合并
    表现为较大的margin会覆盖掉较小的margin,竖直方向的两个盒子中间只有一个较大的margin,这就是margin塌陷现象

    二:margin塌陷的分类

    1、兄弟关系的盒子
    2、父子关系的盒子


    兄弟并列

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

    如下图所示:

     

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

    父子关系

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

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

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

    解决方法:

    1.给父元素增加边框

    为了不影响原先的图像效果,可以将边框颜色设置为白色(与浏览器背景颜色一致)。

    2.溢出隐藏

    在父元素的style里面添加overflow:hidden;

    3.利用浮动

    给父元素的style添加浮动,但是这种方法不推荐使用。因为会带来未知的错误。

    4.给父元素添加position:fixed;

    这里用到了定位的知识,将父元素显示在固定位置,就不会受margin-top塌陷的问题影。

    5.使用伪元素

    1 .clearfix::before{ 
    2 content: ”“”; 
    3 display: table; 
    4 } 
  • 相关阅读:
    MySQL mysqldump数据导出详解
    FTP上传下载 C#辅助类
    FastDFS java 辅助类
    Ajax 提交表单【包括文件上传】
    bootstrap-table 基础用法
    MVC dropdownlist 后端设置select属性后前端依然不能默认选中的解决方法
    jQuery实现鼠标移到元素上动态提示消息框效果
    给Jquery动态添加的元素添加事件
    centos7部署mysql5.7一主多从
    iOS浏览器 new Date() 返回 NaN
  • 原文地址:https://www.cnblogs.com/cz976230/p/10654402.html
Copyright © 2020-2023  润新知