首页 > 其他分享 >CSS2.1规范笔记——9.2 控制盒的生成

CSS2.1规范笔记——9.2 控制盒的生成

时间:2023-07-22 19:45:50浏览次数:36  
标签:块级 容器 行内 元素 笔记 CSS2.1 inline table 9.2

控制盒的生成

控制盒就是我们常说的盒。盒的类型对其在视觉格式化模型中的行为有一定影响。

display的取值

display属性指定了盒的类型:

  • none:此元素不会被显示。
  • block:此元素将显示为块级元素,此元素前后会带有换行符。
  • inline:默认。此元素会被显示为内联元素,元素前后没有换行符。
  • inline-block:行内块元素。(CSS2.1 新增的值)
  • list-item:此元素会作为列表显示。
  • run-in:此元素会根据上下文作为块级元素或内联元素显示。
  • compact:CSS 中有值 compact,不过由于缺乏广泛支持,已经从 CSS2.1 中删除。
  • marker:CSS 中有值 marker,不过由于缺乏广泛支持,已经从 CSS2.1 中删除。
  • table:此元素会作为块级表格来显示(类似 <table>),表格前后带有换行符。
  • inline-table:此元素会作为内联表格来显示(类似 <table>),表格前后没有换行符。
  • table-row-group:此元素会作为一个或多个行的分组来显示(类似 <tbody>)。
  • table-header-group:此元素会作为一个或多个行的分组来显示(类似 <thead>)。
  • table-footer-group:此元素会作为一个或多个行的分组来显示(类似 <tfoot>)。
  • table-row:此元素会作为一个表格行显示(类似 <tr>)。
  • table-column-group:此元素会作为一个或多个列的分组来显示(类似 <colgroup>)。
  • table-column:此元素会作为一个单元格列显示(类似 <col>)
  • table-cell:此元素会作为一个表格单元格显示(类似 <td> 和 <th>)
  • table-caption:此元素会作为一个表格标题显示(类似 <caption>)
  • inherit:规定应该从父元素继承 display 属性的值。

块级元素和块盒

块级元素:当display值为block、list-item、table时,这些盒子会被标记为块级元素,在竖直方向一个接一个地排列,同时参与块级格式化上下文。

  • 块级盒(block-level box):是参与会计格式化上下文的盒。每个块级元素生成一个主块级盒,用来包含后代及生成的内容,并且任何定位方案都与该盒有关。这些块级元素可能会生成除主盒外额外的盒:list-item元素。这些额外的盒根据主盒来放置。
  • 块容器盒(block container box):一个块容器要么只包含块级盒,要么建立行内格式化上下文并因此只包含行内级盒。除了表格盒和替换元素外,一个块级盒也是块容器盒。不是所有块容器盒都是块级盒:非替换元素的行内块与非替换元素的表格单元都是块级容器,但不是块级盒。
  • 块盒(block box):作为块级容器的块级盒也叫块盒。

一个块级元素会生成一个块级盒,块级盒参与块格式化上下文,用于定位,并且包含后代生成的内容。块级盒不一定会生成块容器盒,块容器盒也并非必须由块级盒生成。块容器盒只是符合其直接子盒都是块级盒或行内级盒的条件,可以由部分块级盒和行内级盒生成。

display值

元素类型

作为项目

作为容器

block

块级元素

块级盒

块容器盒

list-item

块级元素

块级盒

块容器盒

table

块级元素

块级盒

非块容器盒

非替换元素的行内块

非替换元素的表格单元

非块级盒

块容器盒

匿名块盒

当块容器盒内部同时存在块级盒和行内盒的情况,CSS2.1会强制让它里面只包含有块级盒。例如下面的代码会在“Some text”四周加上你们块盒(注意是块盒,首先它被套上一个块级盒,然后由于内部只有行内盒,因此又是一个块容器盒,因此是一个块盒)。

 

当行内盒包含流内块级盒时,该行内盒(及与它处于同一行框里的行内祖先元素)将会被该块级盒(以及任何连续的或只被可合并的空白符和/或流外元素隔开的块级兄弟)打破。把行内盒分成两个盒(即使有一边是空的),分别位于块级盒的两边。拆分前的行框和拆分后的行框都被包进匿名块盒,并且该块级盒作为这些匿名盒的兄弟。当这样一个行内盒受到相对定位的影响时,任何由此产生的位移也会影响行内盒里面的块级盒。

行内元素与行内盒

行内级元素:当display为inline、inline-block、inline-table时,这些盒子将被标记为行内级元素,在水平方向上一个接一个排列,如果宽度不够将生成多行。

  • 行内级盒:行内级元素将生成行内级盒,参与行内格式化上下文。
  • 行内盒:特殊的行内级盒,它的内容参与了它的包含行内格式化上下文(containing inline formatting context)。display为inline的非替换元素会生成一个行内盒。
  • 原子行内级盒:不属于行内盒的行内级盒,它们作为单一的不透明盒参与其行内格式化上下文。例如行内级替换元素、display为inline-block和inline-table的元素。

display值

元素类型

附加条件

作为项目

作为容器

inline

行内级元素

非替换元素

行内级盒

行内盒

替换元素

原子行内级盒

inline-block

行内级元素

行内级盒

原子行内级盒

inline-table

行内级元素

 

行内级盒

原子行内级盒

匿名行内盒

任何被直接包含在一个块容器元素(不在行内元素里面)的文本,必须视为一个匿名行内元素。

<p>Some <em>emphasized</em> text</p>

比如这里"emphasized"的盒是一个由行内元素<em>生成的行内盒,但其他盒("Some"和"text")都是由块级元素<p>生成的行内盒。后者叫做匿名行内盒,因为它们没有与之相关的行内元素。这种匿名行内盒从它们的父级块盒继承了可继承的属性,不可继承的属性取其初始值。示例中,匿名行内盒的颜色是从P继承的,但背景是透明的对于后续会根据'white-space'属性合并起来的空白字符内容,不会生成任何匿名行内盒。

 

如果知道上下文中匿名盒是哪种含义,本规范中的匿名行内盒和匿名块盒都可以简称为匿名盒在格式化表格时会出现更多的匿名盒类型。

小结

现对上面的内容进行一个总结:

display值

元素类型

附加条件

作为项目

作为容器

建立的FC

block

块级元素

块级盒

块容器盒

BFC

list-item

块容器盒

BFC

table

非块容器盒

 

inline

行内级元素

非替换元素

行内级盒

行内盒

IFC

替换元素

原子行内盒

 

inline-block

非替换元素

原子行内盒+

块容器盒

 

替换元素

原子行内盒

 

inline-table

原子行内盒

 

标签:块级,容器,行内,元素,笔记,CSS2.1,inline,table,9.2
From: https://www.cnblogs.com/hdxg/p/17574083.html

相关文章

  • CSS2.1规范笔记——9.1 视觉格式化模型(视口和包含块)
    视觉格式化模型视觉格式化模型:对于可视化媒体,用户代理怎样处理文档树。在视觉格式化模型中,文档树中的每个元素根据其盒模型生成0或多个盒。这些盒的布局由以下因素控制:盒尺寸与类型定位方案(常规流、浮动与绝对定位)文档树中元素间的关系外部信息(例如视口大小、图片的固有尺寸......
  • CSS2.1规范笔记——8.2 外边距与margin合并
    外边距margin取值<length>:一个固定值<percentage>:百分比根据当前生成盒的包含块的width来计算。注意,margin-top和margin-bottom也是根据其包含块的width来计算的。如果包含块的width取决于该元素,那么产生的布局在CSS2.1是未定义的。auto:具体见“计算width与margin”章节。m......
  • CSS2.1规范笔记 - 8.1 盒尺寸
    中文链接:http://www.ayqy.net/doc/css2-1/cover.html英文链接:https://www.w3.org/TR/2011/REC-CSS2-20110607/本笔记是2020年自学前端时所写,当时写在word文档上,今天重温,就搬到博客园上来。盒尺寸盒模型的组成css盒模型描述了一个为文档树中的元素生成的,根据视觉格式化模型进......
  • MQTT学习笔记
    客户端:mqttxforwindows,并提供基于互联网的mqtt服务,不用再搭建 MQTT的C语言编程:下载paho的包,在github上,有基于Linux的release版本,下载后,将其解压到任意目录,比如:/opt/mqtt目录结构如下: 安装完毕后,进行配置(如果不配置,动态链接库无法找到)设置动态链接库的搜索路径export......
  • java学习笔记
    目录值传递&引用传递WeakHashMap-弱引用MapHashMapResponseEntityMessageFormat.format-代码里直接打印输出如何将java项目的依赖打成一个大的jar包加载证书报错:Couldnotparsecertificate:java.io.IOException:Incompletedatapowermock使用注意jpa的使用注意AOP切面java......
  • pyhon 基础学习笔记(一)List
    1.有两个索引 2索引的切片L=[1,2,3,4,5,6]L[start:stop:step]如L[1,2,2] 3.列表增加元素L.append(9),L.append([2,3])尾部追加L.extend([1,2,3]) 尾部追加L.insert(3,5)位置3插入5L[2:2]=[8,9] 下标为2的位置插入8,9 3.列表删除元素L.remove(4)删除元素4......
  • maven学习笔记
    1、maven的两大核心内容:依赖管理:对jar的统一管理(Maven提供了一个Maven的中央仓库,https://mvnrepository.com/,当我们在项目中添加完依赖之后,Maven会自动去中央仓库下载相关的依赖,并且解决依赖的依赖问题。),也可以是自己的仓库。项目构建:对项目进行编译、测试、打包、......
  • C语言学习笔记(三)函数和递归
    函数和递归库函数strcpy()​ 使用之前要先包含<string.h>​ 拷贝时会将\0一起拷贝(注意:/0是字符串结束的标志,但计算长度时不计入)memset()内存设置​ 使用之前要先包含<string.h>#include<stdio.h>#include<string.h>intmain(){ chararr[]="helloworld"; memset(ar......
  • C语言学习笔记(四)数组
    数组一维数组的创建和初始化//创建类型数组名[元素个数];intarr[10];chararr2[5];//初始化intarr[10]={1,2,3};//不完全初始化chararr[5]={'a','b'};chararr3[5]="ab";//每一位为:a,b,末尾有\0chararr6[]="abcdef";//没有确定长度则必须进行初始化,根据初始......
  • re: 从零开始的学PPT笔记
    深夜模式:账户\(\rightarrow\)office主题神奇操作:.ppt后缀改成.rar居然可以解压/jy默认设置:账户\(\rightarrow\)保存\(\rightarrow\)字体嵌入;账户\(\rightarrow\)高级设置\(\rightarrow\)不压缩图片默认字体:设计\(\rightarrow\)变体右下角\(\rightarrow\)字......