CSS查缺补漏之《如何优雅解决margin垂直方向塌陷与合并问题?》

这篇具有很好参考价值的文章主要介绍了CSS查缺补漏之《如何优雅解决margin垂直方向塌陷与合并问题?》。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

CSS查缺补漏之《如何优雅解决margin垂直方向塌陷与合并问题?》

一:父子元素之间margin垂直方向塌陷问题

在处理margin垂直方向问题时,经常会遇到在给子元素设置margin时,导致效果出现在了父元素上;如下代码所示:

代码原义是想实现三方面:

① 将box1的margin-top调为50px,使其与父元素之间形成空隙;

② 将box2的margin-top调为20px,使其与兄弟元素box1之间形成空隙;

③ 将box3的margin-bottom调为20px,使其与父元素之间形成空隙;

<div class="box">
  <div class="box1">box1</div>
  <div class="box2">box2</div>
  <div class="box3">box3</div>
</div>
    .box {
      width: 400px;
      height: 400px;
      background-color: antiquewhite;
      text-align: center;
    }
    .box1 {
      margin-top: 50px;
      width: 100px;
      height: 100px;
      line-height: 100px;
      background-color: rgba(0, 115, 255, 0.39);
    }
    .box2 {
      width: 100px;
      height: 100px;
      line-height: 100px;
      background-color: rgba(0, 255, 51, 0.232);
      margin-top: 20px;
    }
    .box3 {
      width: 100px;
      height: 100px;
      line-height: 100px;
      background-color: rgba(255, 196, 0, 0.232);
      margin-bottom: 20px;
    }

CSS查缺补漏之《如何优雅解决margin垂直方向塌陷与合并问题?》

 从上述代码可以看到,效果出现与预期不同的情况:

① 给第一个子元素box1设置了margin-top值后,并没有起作用,却导致了父元素的margin-top存在;

该种情况被称为父子元素在垂直方向的margin塌陷问题,如何解决此问题?

有三种方法:

给父元素设置不为0的padding值

.box {
   width: 400px;
   height: 400px;
   background-color: antiquewhite;
   text-align: center;
   padding: 2px;
}

CSS查缺补漏之《如何优雅解决margin垂直方向塌陷与合并问题?》

 ② 给父元素设置宽度不为0的border值

.box {
   width: 400px;
   height: 400px;
   background-color: antiquewhite;
   text-align: center;
   border-top: 1px solid red;
}

CSS查缺补漏之《如何优雅解决margin垂直方向塌陷与合并问题?》

 或

.box {
   width: 400px;
   height: 400px;
   background-color: antiquewhite;
   text-align: center;
   border: 1px solid red;
}

 CSS查缺补漏之《如何优雅解决margin垂直方向塌陷与合并问题?》

③ 给父元素设置CSS样式overflow: hidden

.box {
   width: 400px;
   height: 400px;
   background-color: antiquewhite;
   text-align: center;
   overflow: hidden;
}

CSS查缺补漏之《如何优雅解决margin垂直方向塌陷与合并问题?》

二:兄弟元素之间margin垂直方向合并问题

在处理兄弟元素问题时,若上面的兄弟元素设置了margin-bottom下面的兄弟元素设置了margin-top,则最后的margin值会取二者之间的最大值,而不是将二者相加,该种现象称为margin合并问题;

 <div class="box">我是box元素</div>
 <div class="bro">我是box的兄弟元素</div>
    div {
      height: 200px;
      line-height: 200px;
      width: 200px;
      text-align: center;
    }
    .box {
      background-color: aquamarine;
      margin-bottom: 40px;
    }
    .bro {
      background-color: rgb(234, 250, 57);
      margin-top: 20px;
    }

CSS查缺补漏之《如何优雅解决margin垂直方向塌陷与合并问题?》CSS查缺补漏之《如何优雅解决margin垂直方向塌陷与合并问题?》     

可以看到,在二者之间只有40px的空隙,产生了合并现象。如何解决此问题?

最好的方法是指设置一个,计算好兄弟元素之间的margin,只设置一方即可~

 CSS查缺补漏之《如何优雅解决margin垂直方向塌陷与合并问题?》

如上述代码只给第一个兄弟元素添加margin-bottom为60px即可,

    div {
      height: 200px;
      line-height: 200px;
      width: 200px;
      text-align: center;
    }
    .box {
      background-color: aquamarine;
      margin-bottom: 60px;
    }
    .bro {
      background-color: rgb(234, 250, 57);
      /* margin-top: 20px; */
    }

CSS查缺补漏之《如何优雅解决margin垂直方向塌陷与合并问题?》 CSS查缺补漏之《如何优雅解决margin垂直方向塌陷与合并问题?》 文章来源地址https://www.toymoban.com/news/detail-495812.html

到了这里,关于CSS查缺补漏之《如何优雅解决margin垂直方向塌陷与合并问题?》的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 大一C语言查缺补漏 12.24

    遗留问题: 6-1 1   在C语言中,如果要保留小数的话,一定要除以2.0,而不是2。 设整型变量m,n,a,b的值均为1,执行表达式(m = ab)||(n = ab)后,表达式的值以及变量m和n的值是?请写出过程。在C语言中  首先,计算表达式\\\"ab\\\",由于整型变量a和b的值均为1,所以\\\"ab\\\"的结果为0。

    2024年02月03日
    浏览(29)
  • Go语言学习查缺补漏ing Day4

    Go语言学习查缺补漏ing Day4 一、掌握iota的使用 请看下面这段代码: 思考一下输出结果会是什么? 先不公布输出结果。先来谈一谈iota,iota是用于给需要自增长常量赋值的标识符。我们可以用下划线 _ 来省略掉不想要的值。而我们中间给变量赋值了,然后如果后续的变量如果

    2024年02月15日
    浏览(30)
  • 【CSS 布局】水平垂直方向居中

    单行元素 方式一: relative 和 absolute 方式二: relative 和 absolute (变种,适合于宽高固定) 方式三: flex 和 margin 方式四: flex 方式五: flex 多行元素

    2024年02月13日
    浏览(33)
  • css 中可以让文字在垂直和水平方向上重叠的两个属性是什么?

    在CSS中,可以使用属性 position 和 transform 来实现文字在垂直和水平方向上重叠。 垂直方向上的重叠可以通过设置 position: absolute 和 top: 50% 来实现,然后使用 transform: translateY(-50%) 来使文字垂直居中。 水平方向上的重叠可以通过设置 text-align: center 来使文字水平居中。 以下是一

    2024年01月24日
    浏览(30)
  • CSS中如何实现元素之间的间距(Margin)合并效果?

    前端入门之旅:探索Web开发的奇妙世界 欢迎来到前端入门之旅!感兴趣的可以订阅本专栏哦!这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域的朋友们量身打造的。无论你是完全的新手还是有一些基础的开发者,这里都将为你提供一个系统而又亲切的学习平台。在这个

    2024年02月10日
    浏览(21)
  • 【Css/小程序】如何实现div或view中的文字左右居中和垂直居中?(已解决:多行和单行自适应)

    1、多行居中效果 2、单行照样居中效果 

    2024年02月04日
    浏览(36)
  • css如何隐藏垂直滚动条但同时需保持滚动

    前言 在写前端页面时,对于超出的内容,我们希望隐藏,同时保持垂直的滚动,但是又不希望有丑陋的垂直滚动条,那该怎么去实现呢 实现方式有很多种,可以用iscroll插件,也可以用css去解决 01 方法1-计算滚动条宽度并隐藏起来 这种方法主要是通过计算滚动条宽度,给隐藏起来的,如下

    2024年02月15日
    浏览(37)
  • 【前端 | CSS系列】—— 第1篇:如何实现水平垂直居中对齐?

    单纯的元素 左右居中 对齐: 块级元素 可以使用 magrin: 0 auto ; 非块级元素 使用 text-align: center;

    2024年02月13日
    浏览(39)
  • CSS之margin塌陷

    CSS中的外边距塌陷(Margin Collapse)问题是指在垂直方向上,当两个或多个块级元素的边距相遇时,它们之间的距离不是它们各自边距的总和,而是其中的最大值。这种现象主要出现在块级元素的上下外边距之间。 .ac和.bc有上下margin但是只生效了一个最大值。 外边距塌陷只发

    2024年02月21日
    浏览(29)
  • 【CSS】margin 的使用

    margin 用于设置元素的外边距。 margin 是一个简写属性,包括以下 4 个子属性: margin-top:上外边距。 margin-right:右外边距。 margin-bottom:下外边距。 margin-left:左外边距。 margin 可以设置 1 ~ 4 个属性值: 一个属性值:一起设置上下左右。 两个属性值:分别设置上下、左右。

    2024年02月13日
    浏览(38)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包