inline-block BFC 边距合并

在什么场景下会出现外边距合并?如何合并?如何不让相邻元素外边距合并?

首先,外边距的合并出现在垂直方向上,两个块级元素垂直外边距相邻时,两者的原外边距会合并成一个高度等于两者中较大的新外边距。

在正常的文档流下,没有边框,没有padding,但有外边距时,上下的margin会出现合并,高度等于两者中的较大者。

不让相邻元素外边距合并的方法:

  • 加外边框,加padding;
  • 父元素加overflow(不为visible);
  • 父元素加display:inline-block;
  • 父元素加float;

父容器使用overflow: auto| hidden撑开高度的原理是什么?

overflow:auto|hidden会触发BFC,由于BFC可以包含浮动,故可以感知浮动元素的高度,所以可以撑开高度。

BFC是什么?如何形成BFC,有什么作用?

BFC(块级元素格式上下文)形成了一个独立的空间,空间内部不受外部元素影响。

如何形成BFC:

1.根元素

2.display:inline-block|table-cell|table-caption|flex|inline-flex;

3.position:absolute|fixed;

4.overflow:auto|hidden|scroll;

5.float:right|left|both;

有什么作用?

1.可以清除浮动,包含浮动元素;

2.不被浮动元素覆盖;

3.阻止外边距折叠。

浮动导致的父容器高度塌陷指什么?为什么会产生?有几种解决方法

由于浮动脱离文档流,浮动元素不会影响父元素的宽度,使父元素的高度为“0”,从而形成高度塌陷。

一般有两种解决办法:

1.用clear清除浮动;

2.使父容器形成BFC。

以下代码每一行的作用是什么? 为什么会产生作用? 和BFC撑开空间有什么区别?

.clearfix:after{
    content: ‘‘;
    display: block;
    clear: both;
}
.clearfix{
    *zoom: 1;
}

作用:清除浮动

给类选择器clearfix的元素添加一个伪类after,添加内容为空的块级元素,清除两边的浮动。

*zoom用来触发IE浏览器下的hasLayout,解决浏览器不兼容问题。

和BFC的区别:

通过伪类清除浮动元素,并不是父元素感觉到了子元素中的浮动元素,而是在后面添加了一个块级元素。而元素形成BFC,是因为元素感觉到了子元素中浮动元素的宽度,而不是通过添加元素撑开父元素。

时间: 2024-12-28 00:14:45

inline-block BFC 边距合并的相关文章

文本溢出、垂直外边距合并、BFC、hasLayout

今天学习文本溢出,又遇到了一些小问题,先上图: 关于文本溢出推荐:http://www.cnblogs.com/yzg1/p/5089534.html 从里面学习到单行文本和多行文本溢出, overflow:hidden;text-overflow: ellipsis是基本.然后在控制多行文本溢出的时候需要用到弹性伸缩盒子-webkit-box ,包括设置盒子的伸缩方向和显示的行数. 用div内嵌div做一个小测试:发现对子元素,margin-left有效但是margin-top是无效的,问题的

BFC与垂直外边距合并问题

一.什么情况下发生外边距的合并 1)必须处于普通文档流中(不能脱离文档流),并且处于同一个BFC中 2)相邻的外边距,不能有间隙和边框 3)垂直方向上 二.如何合并 1)兄弟元素之间,外边距合并会去最大的那个外边距而不是取和 2)父子元素之间,外边距合并会将子元素的外边距设置给父元素 3)空元素 三.如何解决垂直外边距重叠问题? 1)父元素添加透明上边框或者内边距 2)父元素前面块元素隔开 3)开启BFC, *设置 display:table/table-cell/table-captions/

css基础 BFC 解决div块外边距合并问题

礼悟:    公恒学思合行悟,尊师重道存感恩.叶见寻根三返一,江河湖海同一体.          虚怀若谷良心主,愿行无悔给最苦.读书锻炼养身心,诚劝且行且珍惜.              ide:visual studio 2017             browser:Chrome                     os:win7 代码 <!DOCTYPE html> <html> <head> <meta charset="utf-8&qu

Collapsing margins(外边距合并)

开篇 块元素的上边距或下边距有时会合并为一个margin,这种情况称之为外边距的合并,即collapsing margins. 一个常见的css样式的bug html&css: <!DOCTYPE html> <html> <style type="text/css"> html, body{ width: 100%; height: 100%; padding: 0; margin: 0; } #main { width: 200px; h

样式初始化+元素类型+外边距合并

浏览器默认给边距,去除浏览器默认样式 <!doctype html><html>    <head>        <title>样式初始化</title>        <style>            /* *通配符选择器,选择页面中所有元素,内外边距都设为0*/           *{margin:0px;padding:0;}            /* 多元素选择器,用”,“隔开,能够节省性能*/          

[ css 外边距 margin ] css中margin外边距合并问题讲解及实例演示

外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距;合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者 外边距合并外边距合并(叠加)是一个相当简单的概念.但是,在实践中对网页进行布局时,它会造成许多混淆.简单地说,外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距.合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者.当一个元素出现在另一个元素上面时,第一个元素的下外边距与第二个元素的上外边距会发生合并.请看下图: CSS 外边距合并实例 1 亲自试一试

CSS display:inline|block|inline-block差异

display:inline|block|inline-block三属性的区别和联系,block就是将元素显示为块级元素,inline就是将元素 显示为行内元素,CSS display:inline-block将对象呈递为内联对象,但是对象的内容作为块对象呈递.旁边的内联对象会被呈递在同一行内,允许空格. 详解CSS display:inline|block|inline-block的区别 ◆CSS display:block CSS display:block就是将元素显示为块级元素. blo

CSS外边距合并(塌陷/margin越界)

原文 简书原文:https://www.jianshu.com/p/5f18f12cd162 大纲 1.什么是外边距合并?(折叠外边距) 2.外边距带来的影响 3.折叠的结果 4.产生折叠的原因 5.出现的情况 1.什么是外边距合并?(折叠外边距) 外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距.合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者.而左右外边距不合并. 在CSS当中,相邻的两个盒子(可能是兄弟关系也可能是祖先关系)的外边距可以结合成一个单独的外边距.这种

CSS,边距合并

外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距.合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者. 情况1:当一个元素出现在另一个元素上面时,第一个元素的下外边距与第二个元素的上外边距会发生合并 情况2:当一个元素包含在另一个元素中时(假设没有内边距或边框把外边距分隔开),它们的上和/或下外边距也会发生合并 情况3:自身合并 假设有一个空元素,它有外边距,但是没有边框或填充.在这种情况下,上外边距与下外边距就碰到了一起,它们会发生合并 情况4:带有外边距的空元素和另一