视觉格式化模型


CSS 视觉格式化模型(visual formatting model)是用来处理和在视觉媒体上显示文档时使用的计算规则。该模型是 CSS 的基础概念之一。

盒子类型由 display 决定,同时给一个元素设置 display 后,将会决定这个盒子的 2 个显示类型(display type):

  • outer display type(对外显示):决定了该元素本身是如何布局的,即参与何种格式化上下文;
  • inner display type(对内显示):其实就相当于把该元素当成了容器,规定了其内部子元素是如何布局的,参与何种格式化上下文;

outer display type

对外显示方面,盒子类型可以分成 2 类:

block-level box(块级盒子) 和 inline-level box(行内级盒子)

  • 块级盒子:display 为 block、list-item、table、flex、grid、flow-root 等;
  • 行内级盒子:display 为 inline、inline-block、inline-table 等;

所有块级盒子都会参与 BFC,呈现垂直排列;而所有行内级盒子都参会 IFC,呈现水平排列

块级元素

addressopen in new window联系方式信息。articleopen in new window 文章内容。asideopen in new window 伴随内容。blockquoteopen in new window块引用。ddopen in new window定义列表中定义条目描述。divopen in new window文档分区。dlopen in new window定义列表。fieldsetopen in new window表单元素分组。figcaptionopen in new window 图文信息组标题figureopen in new window 图文信息组 (参照 figcaptionopen in new window)。footeropen in new window 区段尾或页尾。formopen in new window表单。h1open in new windowh2open in new windowh3open in new windowh4open in new windowh5open in new windowh6open in new window标题级别 1-6.headeropen in new window 区段头或页头。hgroupopen in new window 标题组。hropen in new window水平分割线。olopen in new window有序列表。popen in new window行。preopen in new window预格式化文本。sectionopen in new window 一个页面区段。tableopen in new window表格。ulopen in new window

无序列表。

行内元素

inner display type

对内方面,其实就是把元素当成了容器,里面包裹着文本或者其他子元素。container box 的类型依据 display 的值不同,分为 4 种:

  • block container:建立 BFC 或者 IFC;
  • flex container:建立 FFC;
  • grid container:建立 GFC;
  • ruby container:接触不多,不做介绍。

值得一提的是如果把 img 这种替换元素(replaced element)申明为 block 是不会产生 container box 的,因为替换元素比如 img 设计的初衷就仅仅是通过 src 把内容替换成图片,完全没考虑过会把它当成容器。

评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v2.13.0