浮动定位BFC边距合并

浮动元素的特征和影响

特征:浮动模型也是一种可视化格式模型,浮动的框可以左右移动(由float属性的值决定)直到它的外边缘碰到包含框或另一个浮动元素的框的边缘,浮动元素不在文档的普通流中,文档的普通流中的元素表现的就像浮动元素不存在一样。
正常情况下父盒子没有设置高度,那么父盒子高由其中的子元素撑开,当给子元素浮动后,子元素脱离文档流向左或右移动知道碰到父盒子边框,因浮动不占据原来位置所以会引起父盒子高度塌陷
对于其它浮动元素,各自依据float的值向左或右移动排列,如果父盒子宽不够则向下移动直到有足够空间,当几个浮动元素的高不一样时会有卡住的可能
对于普通元素,普通文档流渲染到浮动元素时,元素浮动不占据原来的位置,其后面的元素会被浮动元素覆盖
对于文字,文字能感受到浮动元素并围绕浮动元素排列,术语:浮动元素旁边的行框被缩短,从而给浮动元素留出空间,行框围绕浮动元素。

清除浮动

浮动元素不占据原来位置因此会引起父元素高度塌陷问题,清除浮动就是清除浮动给父元素带来的高度塌陷问题。
清除浮动思路:

  • 设置clear:both能清除浮动,并撑开父元素。(clear 属性的值规定元素的哪一侧不允许其他浮动元素。)
  • 让父容器BFC
盒子定位

CSS定位有三种基本定位方式:普通流、浮动和绝对定位
普通流是HTML的默认定位方式,position:static/relative属于普通定位,但是relative元素可以设置top/left设置后元素还占据原来位置,对其他元素不产生影响,但自己会在自己原来的位置发生偏移,一般用于页面中的小icon。
float定位会让元素浮动block元素不占据一行而是由float的值来向左/有移动并会对后面和父元素产生影响,常用于导航栏等需要横向排列的元素
绝对定位,有两种:position:absolute/fixed
绝对定位的元素的位置是相对于最近的非static祖先元素来决定,如果元素没有已经定位的祖先元素,那就相对于html来定位。但fixed是固定定位,它的包含框是viewport,常用于相对屏幕窗口固定的低栏
z-index:元素设置成绝对定位后就会脱离文档流,并且会失去占用的空间,而且偏移的位置越近就会造成重叠的问题。这就用到z-index属性,这个属性表示叠加的顺序,默认情况下z-index为0,在同一层叠上下文中,值越高的元素层级越高,就可以盖住低于其层级的元素。如果两个元素的层级相同,则越往后的元素会覆盖前面的元素,默认情况下,第二个元素就会盖住第一个元素。

position:relative和magin

relative:元素还占据原来的位置,但会视觉上的效果会相对原来的位置发生偏移,不会对其他元素产生影响
margin:给元素添加外边距,元素真正的位置和视觉上的位置都会发生变化,会影响周围相邻元素

BFC

Block Format Content格式化上下文
是页面 CSS 视觉渲染(visual CSS rendering)这个过程中的一个概念。它是决定块盒子的布局及浮动元素相互影响的一个因素。具有对内部元素的包裹性及对外部元素的独立性。

  • BFC会阻止垂直外边距(margin-top、margin-bottom)折叠
  1. 照BFC的定义,只有同属于一个BFC时,两个元素才有可能发生垂直Margin的重叠,这个包括相邻元素,嵌套元素,只要他们之间没有阻挡(例如边框,非空内容,padding等)就会发生margin重叠。
  2. 因此要解决margin重叠问题,只要让它们不在同一个BFC就行了,但是对于两个相邻元素来说,意义不大,没有必要给它们加个外壳,但是对于嵌套元素来说就很有必要了,只要把父元素设为BFC就可以了。这样子元素的margin就不会和父元素的margin发生重叠了。
  • BFC不会重叠浮动元素
  • BFC可以包含浮动

当元素形成BFC时可以达到清浮动的效果
BFC的形成:
float:right/left;
overflow:hidden/auto/scroll
display:table-cell/table-caption/inline-block
position:absolute/fixed

外边距合并

外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距。
合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者。

简单地说,外边距合并指的是,当两个垂直外边距相遇时,它们将形成一个外边距。合并后的外边距的高度等于两个发生合并的外边距的高度中的较大者。
当一个元素出现在另一个元素上面时,第一个元素的下外边距与第二个元素的上外边距会发生合并。请看下图:

![Upload 屏幕快照 2017-08-09 上午9.49.06.png failed. Please try again.]
当一个元素包含在另一个元素中时(假设没有内边距或边框把外边距分隔开),它们的上和/或下外边距也会发生合并。

屏幕快照 2017-08-09 上午9.49.16.png

假设有一个空元素,它有外边距,但是没有边框或填充。在这种情况下,上外边距与下外边距就碰到了一起,它们会发生合并

屏幕快照 2017-08-09 上午9.49.24.png

如果这个外边距遇到另一个元素的外边距,它还会发生合并


屏幕快照 2017-08-09 上午9.49.30.png

在负外边距的情况下,合并后的外边距为最大正外边距与最小的负外边距之和(即负边距中绝对值最大的一个),如两个兄弟元素,上面的元素的下边距为20px,下面的元素的上边距为-20px,那么发生外边距合并后,这两个元素的实际距离将变成0px。

阻止外边距合并
防止元素与子元素margin重叠:

  1. 用内层元素的margin通过外层元素的padding代替;
  2. 内层元素透明边框 border:20px solid transparent/父元素background-color;
  3. 给外层元素 overflow:hidden;/overflow:auto;
    防止元素与子元素、与父元素。与相邻元素的重合:
  4. 设置元素绝对定位 postion:absolute;或float:left;或display:inline-block;
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 199,711评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 83,932评论 2 376
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 146,770评论 0 330
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,799评论 1 271
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,697评论 5 359
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,069评论 1 276
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,535评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,200评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,353评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,290评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,331评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,020评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,610评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,694评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,927评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,330评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,904评论 2 341

推荐阅读更多精彩内容