CSS中margin重叠及防止的方法介绍(代码示例)

本篇文章给大家带来的内容是关于CSS中margin重叠及防止的方法介绍(代码示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

边距重叠解决方案(BFC)

首先要明确BFC是什么意思,其全英文拼写为 Block Formatting Context 直译为“块级格式化上下文”

两个或多个块级盒子的垂直相邻边界会重合。结果的边界宽度是相邻边界宽度中最大的值。如果出现负边界,则在最大的正边界中减去绝对值最大的负边界。如果没有正边界,则从零中减去绝对值最大的负边界。注意:相邻的盒子可能并非是由父子关系或同胞关系的元素生成。

立即学习“前端免费学习笔记(深入)”;

但是边界的重叠也有例外情况:

1、水平边距永远不会重合。
2、在规范文档中,2个或以上的块级盒模型相邻的垂直margin会重叠。最终的margin值计算方法如下:
a、全部都为正值,取最大者;
b、不全是正值,则都取绝对值,然后用正值减去最大值;
c、没有正值,则都取绝对值,然后用0减去最大值。
注意:相邻的盒模型可能由DOM元素动态产生并没有相邻或继承关系。
3、相邻的盒模型中,如果其中的一个是浮动的(float),垂直margin不会重叠,并且浮动的盒模型和它的子元素之间也是这样。
4、设置了overflow属性的元素和它的子元素之间的margin不被重叠(overflow取值为visible除外)。
5、设置了绝对定位(position:absolute)的盒模型,垂直margin不会被重叠,并且和他们的子元素之间也是一样。
6、设置了display:inline-block的元素,垂直margin不会重叠,甚至和他们的子元素之间也是一样。
7、如果一个盒模型的上下margin相邻,这时它的margin可能重叠覆盖(collapse through)它。在这种情况下,元素的位置(position)取决于它的相邻元素的margin是否重叠。
a、如果元素的margin和它的父元素的margin-top重叠在一起,盒模型border-top的边界定义和它的父元素相同。
b、另外,任意元素的父元素不参与margin的重叠,或者说只有父元素的margin-bottom是参与计算的。如果元素的border-top非零,那么元素的border-top边界位置和原来一样。
一个应用了清除操作的元素的margin-top绝不会和它的块级父元素的margin-bottom重叠。
注意,那些已经被重叠覆盖的元素的位置对其他已经重叠的元素的位置没有任何影响;只有在对这些元素的子元素定位时,border-top边界位置才是必需的。
8、根元素的垂直margin不会被重叠。

外边距(margin)重叠示例
外边距重叠是指两个垂直相邻的块级元素,当上下两个边距相遇时,起外边距会产生重叠现象,且重叠后的外边距,等于其中较大者。
图示:

另一个重叠现象是当一个元素包含在另一个元素之中时,子元素与父元素之间也会产生重叠现象,重叠后的外边距,等于其中最大者:

1160527-20190402160235119-1846390562.gif

同理,如果一个无内容的空元素,其自身上下边距也会产生重叠。

1160527-20190402160256800-1294023205.gif

外边距重叠的意义

外边距的重叠只产生在普通流文档的上下外边距之间,这个看起来有点奇怪的规则,其实有其现实意义。设想,当我们上下排列一系列规则的块级元素(如段落P)时,那么块元素之间因为外边距重叠的存在,段落之间就不会产生双倍的距离。

 案例:如下图,父元素没有设置margin-top,而子元素设置了margin-top:20px;可以看出,父元素也一起有了边距。 

        Document            *{            margin:0;            padding:0;        }        .demo{            height:100px;            background: #eee;        }        .parent{            height:200px;            background: #88f;        }        .child{            height:100px;            margin-top:20px;            background: #0ff;            width:200px;        }        

此部分是能更容易看出让下面的块的margin-top。

子元素

margin-top:20px;

父元素

没有设置margin-top

CSS中margin重叠及防止的方法介绍(代码示例)

 

解决这个办法:父元素设置padding-top:20px 或者设置 overflow:hidden,子元素取消margin-top:20px;

 

CSS中margin重叠及防止的方法介绍(代码示例)

防止外边距重叠解决方案:

虽然外边距的重叠有其一定的意义,但有时候我们在设计上却不想让元素之间产生重叠,那么可以有如下几个建议可供参考:

1、外层元素padding代替

2、内层元素透明边框 border:1px solid transparent;

3、内层元素绝对定位 postion:absolute:

4、外层元素 overflow:hidden;

5、内层元素 加float:left;或display:inline-block;

6、内层元素padding:1px;

以上建议可根据实际情况来采取。

【相关推荐:CSS视频教程】

以上就是CSS中margin重叠及防止的方法介绍(代码示例)的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1614293.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年12月24日 04:10:20
下一篇 2025年12月24日 04:10:36

相关推荐

  • css background-color属性怎么用?

    css  background-color属性 作用:设置元素的背景颜色。 background-color:颜色值; 说明:background-color 属性为元素设置一种纯色背景。这种颜色会填充元素的内容、内边距和边框区域,扩展到元素边框的外边界(但不包括外边距)。如果边框有透明部分(如虚线…

    2025年12月24日
    000
  • background-position属性怎么用

    background-position属性是用于设置背景图像的起始位置的,该属性的使用语法是“background-position: x y;”,其中参数x表示水平位置,y表示垂直位置。 本文操作环境:Windows7系统、Dell G3电脑、HTML5&&CSS3版。 backg…

    2025年12月24日
    000
  • background-repeat属性怎么用

    css的background-repeat属性是用来设置背景图像如何平铺的。background-repeat:repeat-x表示只有水平位置会重复背景图像;background-repeat:repeat-y表示只有垂直位置会重复背景图像。 CSS  background-repeat属性 作用…

    2025年12月24日
    000
  • CSS如何使用!important规则?(代码示例)

    学习如何编码网站的最佳方法之一是查看其他网站的源代码,这种做法可以学习到一下好用的技巧。在查看源码的过程中,可能会在该代码中看“!important”;这意味着什么?有什么用?下面本篇文章就来带大家了解一下!important规则,希望对大家有所帮助。 !important规则是什么?怎么用? !i…

    2025年12月24日
    000
  • CSS background-blend-mode属性怎么用?

    CSS background-blend-mode属性用于定义背景层的混合模式,其语法是“background-blend-mode: normal|multiply|screen|overlay|darken|lighten…”。 推荐:《css教程》 background-blend…

    2025年12月24日
    000
  • css border-bottom属性怎么用?

    border-bottom属性是一个css简写属性,用于一个声明中设置所有底部边框属性。 CSS  border-bottom属性 作用:把下边框的所有属性设置到一个声明中。 基本语法: border-bottom:width style color; border-bottom-width:规定下…

    2025年12月24日
    000
  • css border-color属性怎么用?

    border-color属性是一个简写属性,可用于设置一个元素的所有四条边框的颜色,或者为4个边分别设置不同的颜色。 CSS border-color属性 作用:border-color属性用于设置一个元素边框颜色,可以设置1~4个值: border-color:red green blue pin…

    2025年12月24日
    000
  • css outline属性怎么用?

    CSS outline属性是一个简写属性,用于在一个声明中设置所有的轮廓属性,如颜色、样式、宽度,可在元素周围位于边框边缘的外围绘制一条线,能起到突出元素的作用。 css outline属性  作用:是绘制于元素周围的一条线,位于边框边缘的外围,可起到突出元素的作用。 outline 简写属性在一个…

    2025年12月24日
    000
  • css word-spacing属性怎么用?

    CSS word-spacing属性用于设置字与字或单词之间的空白,允许设置负值,当设置负值,则减少字与字之间的空白,否则增加空白。 css word-spacing属性 作用:word-spacing属性增加或减少单词间的空白(即字间隔)。允许指定负长度值,这会让字之间挤得更紧。 说明:该word…

    2025年12月24日
    000
  • border-style属性怎么用

    border-style属性用于同时为一个元素的四个边框设置样式,或者单独地为各边设置边框样式。 CSS border-style属性 作用:用于设置元素所有边框的样式,或者单独地为各边设置边框样式。它可以有一到四个值,例: p.one {border-style:dotted dashed sol…

    2025年12月24日
    000
  • clear属性怎么用

    clear属性设置元素左侧或右侧的元素不浮动,可用于实现浮动的清除,解决浮动布局带来的一些问题。 CSS clear属性 作用:clear属性可以设置浮动元素左右两侧的元素不浮动。 语法: clear:none | left | right | both; none:默认值。允许浮动元素出现在两侧。…

    2025年12月24日
    000
  • css all属性怎么用?

    all属性是用来将除了 unicode-bidi 和 direction外的所有属性重置为其初始值或从父元素那继承的值。 CSS all属性 all属性实际上是所有CSS属性的缩写,表示,所有的CSS属性都怎样怎样;但是,不包括unicode-bidi和direction这两个CSS属性。 作用:a…

    2025年12月24日
    000
  • css align-content属性怎么用

    align-content属性是用来设置自由盒内部各个项目在垂直方向排列方式。 CSS align-content属性 作用:align-content属性是用来设置自由盒内部各个项目在垂直方向排列方式;它修改了flex-wrap属性的行为。 使用条件: 必须对父元素设置自由盒属性display:f…

    2025年12月24日
    000
  • border-collapse属性怎么用

    border-collapse属性是用于表格元素的, 可以设置表格的两边框合并为一个单一的边框。 CSS border-collapse属性 border-collapse属性设置表格的边框是否被合并为一个单一的边框,还是像在标准的 HTML 中那样分开显示。 它有两个值: separate:默认值…

    2025年12月24日
    000
  • css align-items属性怎么用?

    css align-items属性是用于指定float容器内项目在横轴方向的对齐方式,其语法是“align-items: stretch|center|flex-start|flex-end|baseline;”。 css align-items属性是用于指定float容器内项目在横轴方向的对齐方式…

    2025年12月24日 好文分享
    000
  • caption-side属性怎么用

    caption-side属性用来设置表格标题的位置,可以设置表格标题是位于表格的上面,还是下面。 CSS caption-side属性 作用:caption-side属性设置表格标题的位置。 语法: caption-side: top|bottom; 参数: top:默认值,把表格标题定位在表格之上…

    2025年12月24日
    000
  • CSS如何设置表格边框间的距离?border-spacing属性的使用

    在css中,border-spacing属性用于表格的边框在“分离”的状态下,设置相邻单元格的边框间的距离。下面本篇文章就来带大家了解一下border-spacing属性的使用方法,希望对大家有所帮助。 CSS border-spacing属性 border-spacing属性会在表格边框“分离”时…

    2025年12月24日
    000
  • background属性怎么用

    background属性是css的一个简写属性,可以在一个声明中设置所有的背景属性:背景颜色,背景图像、图像的位置、大小、定位区域、绘画区域,如何重复背景图像、背景图像是否固定或者随着页面的其余部分滚动。 CSS  background属性 作用:background 简写属性在一个声明中设置所有的…

    2025年12月24日 好文分享
    000
  • background-image属性怎么用

    background-image属性是用来设置元素的一个或多个背景图像,用逗号(,)分隔。 CSS  background-image属性 作用:background-image属性为元素设置背景图像。 语法: background-image:url(图片路径) 说明:background-ima…

    2025年12月24日
    000
  • CSS文件中如何引入另一个CSS文件?(代码示例)

    我们可以使用@import规则来实现css文件中如何引入另一个css文件,@import规则可以在主html文件或主css文件中导入多个css文件,本篇文章就来给大家具体介绍一下,希望对大家有所帮助。 @import规则 首先我们来了解一下@import规则。 @import规则用于将一个样式表导入…

    2025年12月24日
    000

发表回复

登录后才能评论
关注微信