`

css margin 重叠

    博客分类:
  • css
 
阅读更多

转:http://www.hujuntao.com/web/css/css-margin-overlap.html

 

 

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

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

另一个重叠现象是当一个元素包含在另一个元素之中时,子元素与父元素之间也会产生重叠现象,重叠后的外边距,等于其中最大者:
CSS 外边距(margin)重叠及防止方法
同理,如果一个无内容的空元素,其自身上下边距也会产生重叠。
CSS 外边距(margin)重叠及防止方法
外边距重叠的意义

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

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

  1. 外层元素padding代替
  2. 内层元素透明边框 border:1px solid transparent;
  3. 内层元素绝对定位 postion:absolute:
  4. 外层元素 overflow:hidden;
  5. 内层元素 加float:left;或display:inline-block;
  6. 内层元素padding:1px;

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

 

分享到:
评论

相关推荐

    浅谈css margin重叠

    父子元素margin重叠 ...以上这篇浅谈css margin重叠就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持软件开发网。 原文地址:http://www.cnblogs.com/lj1028/p/5683253.html

    CSS margin(外边距)

    CSS margin(外边距) CSS margin(外边距)属性定义元素周围的空间。 margin margin 清除周围的(外边框)... Margin可以使用负值,重叠的内容。 Margin – 单边外边距属性 在CSS中,它可以指定不同的侧面不同的边距:

    详解css边距重叠的几种解决方案

    今天整理了一下用css防止边距重叠的几种方法 先假设一组dom结构 通常情况下,如果给子元素设置margin,就会产生这个属性对父元素也产生了同样的效果,然而 这其实不是我们想要的结果,我们只想对子元素设置...

    关于css中margin的值和垂直外边距重叠问题

    并列盒子的margin(双margin的重叠)面试题:一个盒子有上边距,另一个盒子有下边距,会出现margin边距的重叠问题?解决:取大值,并不是他们的相加之和,而是谁大听谁的! <!DOCTYPE html> <html> <head> &...

    CSS 外边距(margin)重叠及防止方法

    2、在规范文档中,2个或以上的块级盒模型相邻的垂直margin会重叠。最终的margin值计算方法如下: a、全部都为正值,取最大者; b、不全是正值,则都取绝对值,然后用正值减去最大值; c、没有正值,则都取绝对值,...

    CSS简单实现重叠线效果

    style type=”text/css”> *{padding:0;margin:0;}/*demo偷懒充值样式,实际项目切勿模仿*/ .line{border-bottom:2px solid #EBEBEB;margin-top:10px;margin-bottom:10px;} /* margin:10px 0;在实际项目中因为...

    css+div技术参考手册

    高优先权样式将继承低优先权样式的未重叠定义但覆盖重叠的定义。例外请参阅 !important 声明。 链入外部样式表文件 (Linking to a Style Sheet) 你可以先建立外部样式表文件(.css),然后使用HTML的link对象。示例...

    div+css有实例,易学易懂

    5.7.6 使用margin 属性的水平居中 5.8 浮动属性 5.8.1 浮动属性详解 5.8.2 相邻的浮动元素和固定元素 5.8.3 相邻的两个浮动元素 5.8.4 相邻的多个浮动元素 5.9 关于ul 和li 的样式详解 5.9.1 使用list-style-type 属...

    样式表中文手册 css

    高优先权样式将继承低优先权样式的未重叠定义但覆盖重叠的定义。例外请参阅 !important 声明。 链入外部样式表文件 (Linking to a Style Sheet) 你可以先建立外部样式表文件(.css),然后使用HTML的link对象。示例...

    3一面 3:CSS-HTML 知识点与高频考题解析.md

    - margin 的重叠计算 - 浮动`float` - 浮动布局概念 - 清理浮动 - 定位`position` - 文档流概念 - 定位分类 - fixed 定位特点 - 绝对定位计算方式 - `flex`布局 - 如何实现居中对齐? - 理解语义化 - CSS3 ...

    CSS 样式表手册(中文版哦)

    高优先权样式将继承低优先权样式的未重叠定义但覆盖重叠的定义。例外请参阅 !important 声明。 链入外部样式表文件 (Linking to a Style Sheet) 你可以先建立外部样式表文件(.css),然后使用HTML的link对象。示例...

    利用css3画个同心圆示例代码

    首先你得画三个圆吧,那三个圆怎么重叠到一块呢?这个就得靠-margin来控制了。 <div id='t1'></div> <div id=t2></div> <div id=t3></div> css #t1 { float:left; width:150px; height:150px; ...

    css中zoom:1属性的定义和作用

    zoom:设置或检索对象的缩放比例,触发IE浏览器的haslayout属性,解决浮动,margin重叠等一些问题。 语法: zoom:normal 参数: normal:使用对象的实际尺寸(默认值) number:用数字来定义缩放比例,不能出现负数, ...

    div+css实现两列table效果示例

    css 复制代码代码如下:.mycode{ margin-top:20px; padding-right:200px ; padding-left:50px; float:left; display:inline}.mycode ul{ width:500px; height:300px } .mycode li{ width:200px; float:left; height:...

    什么是BFC? CSS 使用伪元素清除浮动的方法

    所以,BFC元素是不可能发生margin重叠的,因为margin重叠会影响外面的元素的;BFC元素也可以用来清除浮动带来的影响,因为如果不清除,子元素浮动则会造成父元素高度塌陷,必然会影响后面元素的布局和定位,这显然有...

    CSS 清除浮动与BFC的方法

    属于同一个BFC的两个相邻Box的margin会发生重叠。 计算BFC的高度时,浮动元素也参与计算。 BFC的区域不会与float box重叠。 每个盒子(块盒与行盒)的margin box的左边,与包含块border box的左边相接触(对于从左...

    CSS实现两栏布局,左边固定,右边自适应的4种方法

    这种办法主要通过 overflow 触发 BFC,而 BFC 不会重叠浮动元素。由于设置 overflow:hidden 并不会触发 IE6-浏览器的 haslayout 属性,所以需要设置 zoom:1 来兼容 IE6-浏览器。具体代码如下: <!DOCTYPE html> &...

    CSS使用BFC规则布局引发外层div包裹内层div的处理方法

    BFC的概念BFC全称Block Formatting Context ,直译“块级格式化...属于同一个BFC的两个相邻Box的margin会发生重叠3.每个元素的margin box的左边, 与包含块border box的左边相接触(对于从左往右的格式化,否则相反)。即

Global site tag (gtag.js) - Google Analytics