Learn HTML&CSS the hard way VIII

在什么场景下会出现外边距合并?如何合并?如何不让相邻元素外边距合并?给个父子外边距合并的范例


想出现外边距合并:

1.两个margin必须是相邻的

2.两个块级元素必须都处于常规的文档流中(非float和绝对定位),并且在同一BFC中

3.没有间隙,没有内边距或者边框将他们分隔开

合并的情况:

1.相邻的兄弟元素,margin-bottom与margin-top合并

2.父子元素的margin-top合并

3.父子元素的margin-bottom合并:

   只在父元素height为auto且不设置边框时合并


父元素无边框,高度为auto,父子元素margin-bottom合并


父元素设置高度,无边框,父子元素bottom不合并


父元素设置边框以及高度,父子元素bottom不合并


高度auto,设置边框,不合并

4.高度为0,不包含文档流子元素,没有建立BFC,自身的margin-top和margin-bottom将合并

想要不产生合并有很多情况:

1.兄弟元素采用float,绝对定位元素不产生外边距合并,并且闭合浮动的元素的border-top会紧贴着相应的浮动元素的margin-bottom。


2.兄丢元素也可采用inline-block

3.父子元素,则为父元素添加border或padding

去除inline-block内缝隙有哪几种常见方法?


1.float





2.写在一排


3.父元素里的字体设置为0px


4.负边距


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


使用overflow:auto/hidden后,整体形成了bfc,相当于清除了浮动,否则当子元素浮动父元素不设置具体高度时,父元素塌陷。



ul中加入overflow后


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


BFC的中文名称使块级格式化上下文,我的理解是一种块级元素的布局方式,BFC中的元素与外界元素互不干扰。在BFC中,盒子从顶端开始垂直地一个接一个排列,垂直的间隙有margin值决定(上文的外边距合并),每个盒子的外左边缘margin-left会触碰到容器的左边缘border-left。

如何形成BFC:

1.浮动元素、绝对定位元素

2.非块级盒子的块级容器(inline-block,table-cell,table-caption,flex,inline-flex)

3.overflow值部位visiable的块级盒子

BFC的作用:

1.防止外边距合并

BFC的特点是不受外界元素影响,所以可以设置子元素自己构成BFC,这样子元素之间就不会出现边距合并的情况了



可以看到JS的外边距没有合并

2.清除浮动,防止父容器塌陷

绝对定位和浮动会使元素脱离文档流,造成没有设置高度的父容器塌陷,可以用BFC解决此问题



父容器的塌陷


更改为BFC后恢复正常

3.避免文字环绕

浮动的初衷是为了文字环绕,然而一些情况下我们不想这么做

我们想要的结果是


实际的情况是


这里举个栗子



可以发现现在的floated div是脱离了文档流,浮动在p元素上面的,而p元素包含了整行,这里我们在p元素里加入overflow,使其形成BFC就会出现清除文字环绕的效果了



这里有一个问题,一开始我以为清除文字环绕需要把overflow加到container里面的,因为我想把整体变成BFC,但是这个方法一是没有效果,二是就算变成了BFC也垂直排列,不符合要求,然后我把overflow加入到floated里面,还是没有效果,最终在p里面实现了清除环绕,我的问题是:1.前面两个加入overflow为什么没有效果,2.最后的p加入overflow为什么有效果了。

对于第一个问题,没有思路。对于第二个问题我的思考是,最后的p自己形成了BFC不受外界影响,但是他和float元素并列了就代表他没有忽略floated div,应该是和他在同一层面上的。但是浮动元素不是块级元素吗,如果在同一层面上的话,应该floated div独占一行才对呀?为了还能并列呢?

4.多列布局



这里对最后一个块元素进行了处理,将他去除浮动,变为BFC,保证沾满一行而不是由于宽度超出预期而降到第二行,那么这个问题就和上面的那个去除文字环绕的问题2一样了,为什么BFC后可以和浮动的块级元素在一行而不是块级元素独占一行或者武略浮动元素,被其覆盖。

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


浮动后元素脱离文档流,父容器没设置高度的话,就没有人撑开他了,所以塌陷了。

解决方法:

1.父元素也float

2.加一个div ,类为clear:both

3.父元素overflow设置为BFC

4.使用:after

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


.clearfix:after{                                            添加伪类

    content:'';                                               生成一个空元素作为最后一个元素

   display:block;                                          生成块级元素独占一行

   clear:both;                                               闭合浮动

}

.clearfix{

*zoom:1;                                                     兼容早期IE的hasLayout,清除浮动

}

这个方法相当于

<div class="clear">

</div>

.clear{

clear:both;

}

在容器最后添加了一个块级元素,使其闭合浮动

与BFC的区别是,BFC把自己弄成了BFC,而这个只是闭合浮动,没有形成BFC,而且闭合浮动不能使浮动元素回到原来的BFC之中。

代码


任务10更改前

任务10更改后

任务11-1

任务11-2

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,717评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,501评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 160,311评论 0 350
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,417评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,500评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,538评论 1 293
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,557评论 3 414
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,310评论 0 270
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,759评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,065评论 2 330
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,233评论 1 343
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,909评论 5 338
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,548评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,172评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,420评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,103评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,098评论 2 352

推荐阅读更多精彩内容

  • 问答题47 /72 常见浏览器兼容性问题与解决方案? 参考答案 (1)浏览器兼容问题一:不同浏览器的标签默认的外补...
    _Yfling阅读 13,747评论 1 92
  • 一,浮动元素有什么特征?对父容器、其他浮动元素、普通元素、文字分别有什么影响? 浮动模型是一种可视化格式模型,浮动...
    DeeJay_Y阅读 866评论 0 4
  • 一、在什么场景下会出现外边距合并?如何合并?如何不让相邻元素外边距合并?给个父子外边距合并的范例 在CSS当中,相...
    dengpan阅读 571评论 0 0
  • relative:生成相对定位的元素,通过top,bottom,left,right的位置相对于其正常位置进行定位...
    zx9426阅读 938评论 0 2
  • 1.浮动元素有什么特征?对父容器、其他浮动元素、普通元素、文字分别有什么影响? 何谓浮动元素?有什么特征?所谓浮动...
    草鞋弟阅读 812评论 0 1