资讯专栏INFORMATION COLUMN

CSS2中盒模型与布局的一些概念关系

happyhuangjinjin / 3030人阅读

摘要:的一些名词和概念用来帮你更明确地去描述世界的事物。具体信息可以参考盒模型的解释,这里暂且不作展开。的位置和大小时根据一个称为的边界进行计算的。其它情况,依据设定的值进行处理指定值最终表现值与指定值相同

CSS的一些名词和概念

用来帮你更明确地去描述HTML/CSS世界的事物。

box

在CSS中,一个元素就可以看作一个box。具体信息可以参考盒模型的解释,这里暂且不作展开。

containing blocks

Box的位置和大小时根据一个称为containing blocks的边界进行计算的。

block-level elements 和 block boxes

block-level elements 一般指HTML中的特定类型的元素,比如div,p,ul等。
block boxes 指形成一个block formatting contexts的boxes。可以确定的时正常的block-level(没有改变它的position,display等默认属性值)可以形成一个BFC。But,如果元素等display属性值为 "block", "list-item", 或 "table"中的一种,也可以对外表现出块级元素的行为。也会成为一个block box。

BFC(Block formatting contexts)

哪些情况会产生一个BFC:

根元素

float元素(float属性不是none)

display: block,table-cell,table-captain,list-item, table、table-row、 table-row-group、table-header-group、table-footer-group

position是absolute的元素(绝对定位)

overflow不等于visible

flex 元素

grid 元素

在一个BFC中,形成一个独立的布局环境,里面元素等布局位置不会受外部元素影响。

IFC (Inline formatting contexts)

与BFC对应,一个行内元素默认也会形成一个IFC(行内格式化上下文)。IFC有个不同于一般的常识的特性:

当inline-level box宽度大于父容器宽度时会被拆分成多个inline-level box;
当属性direction为ltr时,margin/border/padding-left将作用于第一个的inline-level box,margin/border/padding-right将作用于最后一个的 inline-level box;
若属性direction为rtl时,margin/border/padding-right将作用于第一个的inline-level box,margin/border/padding-left将作用于最后一个的inline-level box;

before An inline box is one that is both inline-level and whose contents participate in its containing inline formatting context. A non-replaced element with a "display" value of "inline" generates an inline box. Inline-level boxes that are not inline boxes (such as replaced inline-level elements, inline-block elements, and inline-table elements) are called atomic inline-level boxes because they participate in their inline formatting context as a single opaque box. after

注意示例中,content 元素这段话开头和结尾的外边距大小。

在CSS2中, 一个盒子的定位模式通常是一下三种:

Normal flow:正常的文档流是由 BFC、IFC和position是relative的 block boxes或inline boxes 组成。

Floats float属性值不等于none的元素通常称之为浮动元素。

absolute positioning (绝对定位元素) 绝对定位的元素完全从正常的文档流中移除,它的位置不会影响它后面元素的位置。

positioned element

position属性值不是static的元素称之positioned element。

display,position和float的相对关系

我们知道,display,position和float都会对元素的布局位置表现产生影响。那么它们三者之间是如何起作用的呢?

如果display:none; position和float将不会再起任何作用;

如果position属性是absolute或fixed,则float属性置为none(可以理解为不再存在float行为,即使手动设置了float不为none), display行为依据下表的规则展示;元素的定位会依据top/right/bottom/left进行计算。

如果float属性值不为none,则display属性依据下表的规则展示;

如果元素是根元素,则display的展示依据下表规则表现。

其它情况,依据display设定的值进行处理

指定值 最终表现值
inline-table table
inline, table-row-group, table-column, table-column-group, table-header-group, table-footer-group, table-row, table-cell, table-caption, inline-block block
others 与指定值相同

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/117187.html

相关文章

  • CSS中语法概念

    摘要:属性语法层面仅对属性作粗略分类。重点还是概念均决定了布局基础模式。常规布局的重心与难点。对应标准第章布局上下文格式化上下文在常规流中的框,都属于一个格式化的上下文中规则脱胎自文字排印,核心概念是。 发端自此。本文细节从略,只做主干梳理。 showImg(https://segmentfault.com/img/bVpFuh); 这个树主要还是在借CSS2.1标准的骨架,填充进一些新的C...

    funnyZhang 评论0 收藏0
  • 深入css布局 (2) — 定位浮动

    摘要:深入布局定位与浮动在知识体系中,除了选择器,样式属性等基础知识外,布局相关的知识才是比较核心和重要的点。定位后,原来在文档流中占据的位置,会被其他元素所占据。清除浮动的特殊应用清除浮动可以解决父元素高度塌陷问题。  深入css布局(2) — 定位与浮动        在css知识体系中,除了css选择器,样式属性等基础知识外,css布局相关的知识才是css比较核心和重要的点。今天我们来深...

    Crazy_Coder 评论0 收藏0
  • 关于css margin,你需要知道一切

    摘要:前两个元素之间的是,因为较小的顶部与较大的底部相结合。这是由于两个重叠造成的。同样,这种行为也有一定的逻辑。这意味着在使用百分比时,元素周围的大小都是相同的。 为了保证的可读性,本文采用意译而非直译。 当我们学习CSS时,我们大多数人学到的第一件事是CSS中盒子的各个部分的细节,这部分通过叫做 CSS盒、模型。盒模型中的元素之一是margin,即盒子周围的透明区域,它会将其他元素从盒子...

    FreeZinG 评论0 收藏0
  • 关于css margin,你需要知道一切

    摘要:前两个元素之间的是,因为较小的顶部与较大的底部相结合。这是由于两个重叠造成的。同样,这种行为也有一定的逻辑。这意味着在使用百分比时,元素周围的大小都是相同的。 为了保证的可读性,本文采用意译而非直译。 当我们学习CSS时,我们大多数人学到的第一件事是CSS中盒子的各个部分的细节,这部分通过叫做 CSS盒、模型。盒模型中的元素之一是margin,即盒子周围的透明区域,它会将其他元素从盒子...

    libxd 评论0 收藏0
  • 浅谈CSS3 box-sizing 属性 有趣模型

    摘要:盒模型的组成大家肯定都懂,由里向外盒模型是有两种标准的,一个是标准模型,一个是模型。指定元素的宽度和高度最小最大属性适用于的宽度和高度。盒模型的组成大家肯定都懂,由里向外content,padding,border,margin. 盒模型是有两种标准的,一个是标准模型,一个是IE模型。  从上面两图不难看出在标准模型中,盒模型的宽高只是内容(content)的宽高, 而在IE模型中盒模型...

    K_B_Z 评论0 收藏0

发表评论

0条评论

happyhuangjinjin

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<