CSS面试题中盒子模型和BFC整理

css基础知识:

  • 盒子模型
    简单来说就是css中并不是我们以为的一个width和height就是盒子的宽高了,还要考虑margin,padding,boder三个一起,但是不同浏览器对于这三个的标准又不同,与盒子模型相对于的属性是box-sizing。
    盒子模型有两种,分别是w3c的标准盒子模型,一种是IE的盒子模型。
    w3c的盒子模型中,width指的是content,排除了margin,border,padding,
    IE的盒子模型中,width表示的是content+padding+border三部分的宽度,也就是排除了margin之后的宽度
    box-sizing的作用是切换盒子模型
    box-sizing:content-box这个是w3c盒子模型
    box-sizing:border-box这个是IE盒子模型
    其默认属性是content-box
    • BFC
      首先对于BFC我觉得是理解定义等,找到起源,对于定义等我们可以看看MDN网站上BFC的。

本身格式化上下文有三种类型:分别是块格式化上下文(block formatting context)、内联格式化上下文(inline formatting context)、灵活格式化上下文(flex formatting context)
页面上的所有内容都是格式化上下文的一部分,或者是已定义为以特定方式布局内容的区域。块格式化上下文(BFC)将根据块布局规则布局子元素,灵活格式化上下文将其子元素布局为灵活项等。每个格式上下文都有关于布局在该上下文中的行为的特定规则。
文档中使用块布局规则的最外层元素建立第一个或初始块格式上下文。这意味着<html>元素块中的每个元素都是按照正常流程块和内联布局规则进行布局的。参与BFC的元素使用css盒子模型概述的规则,该模型定义了元素的边距、边框和填充如何与同一上下文中的其他块交互。

创建新的块格式化上下文

<html>元素不是唯一能够创建块格式化上下文的元素。默认为块布局的任何元素也会为其后代元素创建格式化上下文。此外,还有一些css属性可以导致创建一个bfc,即使默认情况下它不这样做。着很有用,因为新的bfc的行为与最外层的文档非常相似,因为它在主布局中变成了一个小布局。BFC 包含其内部的所有内容,float和clear仅适用于同一格式化上下文中的项目,而页边距仅在同一格式上下文中的元素间折叠。除了文档的根元素<html>外,还将在以下情况下创建一个新的BFC:

  • elements made to float using float
  • absolutely positioned elements (including position: fixed or position: sticky
  • elements with display: inline-block
  • table cells or elements with display: table-cell, including anonymous table cells created when using the display: table-* properties
  • table captions or elements with display: table-caption
  • block elements where overflow has a value other than visible
  • elements with display: flow-root or display: flow-root list-item
  • elements with contain: layout, content, or strict
  • flex items
  • grid items
  • multicol containers
  • elements with column-span set to all

过去典型的一种方法是设置overflow:auto或设置其他值而不是overflow:visible的初始值。
设置溢出:自动创建包含浮动的新BFC。现在,我们的DIV在布局中变成了一个迷你布局。任何子元素都将包含在其中。
使用溢出创建新的bfc的问题在于,溢出属性用于告诉浏览器您希望如何处理溢出的内容。在某些情况下,当您纯粹使用此属性创建bfc时,您会发现不需要的滚动条或剪切阴影。另外,对于未来的开发人员来说,它可能不太可读,因为不太明显为什么要使用溢出来实现这一目的。如果您这样做,最好对代码进行注释以进行解释。

使用display:flow-root显式创建BFC

使用包含块上的display:flow-root(或display:flow-root-list-item)将创建一个新的BFC,而不会产生任何其他潜在的问题副作用。
流根”关键字的名称指的是这样一个事实,即您创建的内容本质上类似于一个新的根元素(如<html>所做),前提是新上下文是如何创建的,其流布局功能也是如此。

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