返回顶部
首页 > 资讯 > 前端开发 > node.js >CSS中视觉格式化模型是什么
  • 166
分享到

CSS中视觉格式化模型是什么

2024-04-02 19:04:59 166人浏览 八月长安
摘要

这篇文章主要讲解了“CSS中视觉格式化模型是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“CSS中视觉格式化模型是什么”吧!   CSS视觉格式化模型

这篇文章主要讲解了“CSS中视觉格式化模型是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“CSS中视觉格式化模型是什么”吧!

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

  视觉格式化模型会根据CSS盒子模型将文档中的元素转换为一个个盒子,每个盒子的布局由以下因素决定:

  盒子的尺寸:精确指定、由约束条件指定或没有指定

  盒子的类型:行内盒子(inline)、行内级盒子(inline-level)、原子行内级盒子(atomic

  inline-level)、块盒子(block)

  定位方案(positioningscheme):普通流定位、浮动定位或绝对定位

  文档树中的其它元素:即当前盒子的子元素或兄弟元素

  视口尺寸与位置

  所包含的图片的尺寸

  其他的某些外部因素

  该模型会根据盒子的包含块(containingblock)的边界来渲染盒子。通常,盒子会创建一个包含其后代元素的包含块,但是盒子并不由包含块所限制,当盒子的布局跑到包含块的外面时称为溢出(overflow)

  盒子生成介绍

  盒子的生成是CSS视觉格式化模型的一部分,用于从文档元素生成盒子。盒子有不同的类型,不同类型的盒子的格式化方法也有所不同。盒子的类型取决于CSS的display属性。

  块级元素与块盒子

  当元素的display为block、list-item或table时,该元素将成为块级元素。一个块级元素会被格式化成一个块(例如文章的一个段落),默认按照垂直方向依次排列。

  每个块级盒子都会参与块格式化上下文(blockformattinGContext)的创建,而每个块级元素都会至少生成一个块级盒子,即主块级盒子(principalblock-levelbox)。有一些元素,比如列表项会生成额外的盒子来放置项目符号,而那些会生成列表项的元素可能会生成更多的盒子。不过,多数元素只生成一个主块级盒子。

  主块级盒子包含由后代元素生成的盒子以及内容,同时它也会参与定位方案。

  一个块级盒子可能也是一个块容器盒子。块容器盒子(blockcontainerbox)要么只包含其它块级盒子,要么只包含行内盒子并同时创建一个行内格式化上下文(inlineformattingcontext)。

  能够注意到块级盒子与块容器盒子是不同的这一点很重要。前者描述了元素与其父元素和兄弟元素之间的行为,而后者描述了元素跟其后代之间的行为。有些块级盒子并不是块容器盒子,比如表格;而有些块容器盒子也不是块级盒子,比如非替换行内块和非替换表格单元格。

  一个同时是块容器盒子的块级盒子称为块盒子(blockbox)。

  匿名块盒子

  在某些情况下进行视觉格式化时,需要添加一些增补性的盒子,这些盒子不能用CSS选择符选中,因此称为匿名盒子(anonymousboxes)。

  CSS选择器不能作用于匿名盒子(anonymousboxes),所以它不能被样式表赋予样式。也就是说,此时所有可继承的CSS属性值都为inherit,而所有不可继承的CSS属性值都为initial。

  块包含盒子可能只包含行内级盒子,也可能只包含块级盒子,但通常的文档都会同时包含两者,在这种情况下,就会在相邻的行内级盒子外创建匿名块盒子。

  示例节

  考虑下面的html代码,假设和都保持默认的样式(即它们的display为block):

  <div>

  Someinlinetext

  <p>followedbyaparagraph</p>

  followedbymoreinlinetext.

  </div>

  此时会产生两个匿名块盒子:一个是元素前面的那些文本(Someinlinetext),另一个是元素后面的文本(followedbymoreinlinetext.)。此时会生成下面的块结构:

  2976188203-5c28f59186cda_articlex.png

  显示为:

  Someinlinetext

  followedbyaparagraph

  followedbymoreinlinetext.

  对这两个匿名盒子来说,程序员无法像<p>元素那样控制它们的样式,因此它们会从<p>那里继承那些可继承的属性,如color。其他不可继承的属性则会设置为initial,比如,因为没有为它们指定background-color,因此其具有默认的透明背景,而元素的盒子则能够用CSS指定背景颜色。类似地,两个匿名盒子的文本颜色总是一样的。

  另一种会创建匿名块盒子的情况是一个行内盒子中包含一或多个块盒子。此时,包含块盒子的盒子会拆分为两个行内盒子,分别位于块盒子的前面和后面。块盒子前面的所有行内盒子会被一个匿名块盒子包裹,块盒子后面的行内盒子也是一样。因此,块盒子将成为这两个匿名块盒子的兄弟盒子。

  如果有多个块盒子,而它们中间又没有行内元素,则会在这些盒子的前面和后面创建两个匿名块盒子。

  行内级元素和行内盒子节

  如果一个元素的display属性为inline、inline-block或inline-table,则称该元素为行内级元素。显示时,它不会生成内容块,但是可以与其他行内级内容一起显示为多行。一个典型的例子是包含多种格式内容(如强调文本、图片等)的段落,就可以由行内级元素组成。

  行内级元素会生成行内级盒子,该盒子同时会参与行内格式化上下文(inlineformattingcontext)的创建。行内盒子既是行内级盒子,也是一个其内容会参与创建其容器的行内格式化上下文的盒子,比如所有具有display:inline样式的非替换盒子。如果一个行内级盒子的内容不参与行内格式化上下文的创建,则称其为原子行内级盒子。而通过替换行内级元素或display值为inline-block或inline-table的元素创建的盒子不会像行内盒子一样可以被拆分为多个盒子。

  注意:开始的时候,原子行内级盒子叫做原子行内盒子,这并不准确,因为它们并不是行内盒子。后来在一次勘误时修正了这一问题。不过,当你见到某些文章中使用了“原子行内盒子”的时候,你尽可以将其理解为“原子行内级盒子”,因为这仅仅是一个名字的修改。

  在同一个行内格式化上下文中,原子行内级盒子不能拆分成多行:

  <style>span{

  display:inline;

  }</style>

  <divstyle="width:20em;">

  Thetextinthespan

  <span>canbesplitinseverallinesasit</span>

  isaninlinebox.

  </div>

  可能会显示为:

  Thetextinthespancanbesplitintoseveral

  linesasitisaninlinebox.

  而:

  <style>span{

  display:inline-block;

  }</style>

  <divstyle="width:20em;">

  Thetextinthespan

  <span>

  cannotbesplitinseverallinesasit

  </span>

  isaninline-blockbox.

  </div>

  则可能显示为:

  Thetextinthespan

  cannotbesplitintoseverallinesasitisan

  inline-blockbox.

  其中的“cannotbesplitintoseverallinesasit”永远不会换行。

  匿名行内盒子

  类似于块盒子,CSS引擎有时候也会自动创建一些行内盒子。这些行内盒子无法被选择符选中,因此是匿名的,它们从父元素那里继承那些可继承的属性,其他属性保持默认值initial。

  一种常见的情况是CSS引擎会自动为直接包含在块盒子中的文本创建一个行内格式化上下文,在这种情况下,这些文本会被一个足够大的匿名行内盒子所包含。但是如果仅包含空格则有可能不会生成匿名行内盒子,因为空格有可能会由于white-space的设置而被移除,从而导致最终的实际内容为空。

  其他类型的盒子

  行盒子

  行盒子由行内格式化上下文创建,用来显示一行文本。在块盒子内部,行盒子总是从块盒子的一边延伸到另一边(译注:即占据整个块盒子的宽度)。当有浮动元素时,行盒子会从向左浮动的元素的右边缘延伸到向右浮动的元素的左边缘。

  行盒子更多是以技术性目的而存在的,web开发者通常不需要关心。

  Run-in盒子

  Run-in盒子通过display:run-in来定义,它可以是块盒子,也可以是行内盒子,这取决于紧随其后的盒子的类型。Run-in盒子可以用来在可能的情况下将标题嵌入文章的第一个段落中。

  注意:Run-in盒子已经在CSS2.1的标准中移除了,但可能会在css3中作为一个实验性的内容再次加入。因此最好不要将其用于正式项目。

  由其他模型引入的盒子

  除了行内格式化上下文和块格式化上下文之外,CSS还定义了几种内容模型,这些模型同样可以应用于元素。这些模型一般用来描述布局,它们可能会定义一些额外的盒子类型:

  表格内容模型可能会创建一个表格包装器盒子和一个表格盒子,以及多个其他盒子如表格标题盒子等

  多列内容模型可能会在容器盒子和内容之间创建多个列盒子

  实验性的网格内容模型或flex-box内容模型同样会创建一些其他种类的盒子

  定位规则

  一旦生成了盒子以后,CSS引擎就需要定位它们以完成布局。下面是定位盒子时所使用的规则:

  普通流:按照次序依次定位每个盒子

  浮动:将盒子从普通流中单独拎出来,将其放到外层盒子的某一边

  绝对定位:按照绝对位置来定位盒子,其位置根据盒子的包含元素所建立的绝对坐标系来计算,因此绝对定位元素有可能会覆盖其他元素

  普通流介绍

  在普通流中,盒子会依次放置。在块格式化上下文中,盒子在垂直方向依次排列;而在行内格式化上下文中,盒子则水平排列。当CSS的position属性为static或relative,并且float为none时,其布局方式为普通流。

  浮动介绍

  在浮动定位中,浮动盒子会浮动到当前行的开始或尾部位置。这会导致普通流中的文本及其他内容会“流”到浮动盒子的边缘处,除非元素通过clear清除了前面的浮动。一个盒子的float值不为none,并且其position为static或relative时,该盒子为浮动定位。如果将float设置为left,浮动盒子会定位到当前行盒子的开始位置(左侧),如果设置为right,浮动盒子会定位到当前行盒子的尾部位置(右侧)。不管是左浮动还是右浮动,行盒子都会伸缩以适应浮动盒子的大小。

  绝对定位介绍

  在绝对定位中,盒子会完全从当前流中移除,并且不会再与其有任何联系(译注:此处仅指定位和位置计算,而绝对定位的元素在文档树中仍然与其他元素有父子或兄弟等关系),其位置会使用top、bottom、left和right

  相对其包含块进行计算。如果元素的position为absolute或fixed,该元素为绝对定位。

  对固定位置的元素来说,其包含块为整个视口,该元素相对视口进行绝对定位,因此滚动时元素的位置并不会改变。

感谢各位的阅读,以上就是“CSS中视觉格式化模型是什么”的内容了,经过本文的学习后,相信大家对CSS中视觉格式化模型是什么这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

--结束END--

本文标题: CSS中视觉格式化模型是什么

本文链接: https://lsjlt.com/news/93069.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • CSS中视觉格式化模型是什么
    这篇文章主要讲解了“CSS中视觉格式化模型是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“CSS中视觉格式化模型是什么”吧!   CSS视觉格式化模型...
    99+
    2024-04-02
  • 如何使用CSS代码编写视觉格式化模型
    如何使用CSS代码编写视觉格式化模型,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。CSS 视觉格式化模型(visual formatting ...
    99+
    2024-04-02
  • CSS中框模型是什么
    小编给大家分享一下CSS中框模型是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! CSS 框模型概述 元素框的最内一小部...
    99+
    2024-04-02
  • CSS中布局模型是什么
    这篇文章给大家分享的是有关CSS中布局模型是什么的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。CSS 包含 3 种基本的布局模型,用英文概括为:Flow、Layer 和 Floa...
    99+
    2024-04-02
  • Css中盒子模型是什么
    这篇文章主要介绍了Css中盒子模型是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。网页设计中常用的属性名:内容(content)、填充(...
    99+
    2024-04-02
  • css中什么是盒子模型
    这篇文章主要为大家展示了“css中什么是盒子模型”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“css中什么是盒子模型”这篇文章吧。什么是盒子模型CSS框模型(B...
    99+
    2024-04-02
  • css中盒模型是什么意思
    小编给大家分享一下css中盒模型是什么意思,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!CSS3盒模型是CSS技术所使用的一种思维模型,指在一个网页文档中,每个元...
    99+
    2023-06-14
  • css布局模型是什么
    小编给大家分享一下css布局模型是什么,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!   流动模型(flow)   默认的网...
    99+
    2024-04-02
  • 什么是css盒子模型
    这篇文章主要介绍“什么是css盒子模型”,在日常操作中,相信很多人在什么是css盒子模型问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”什么是css盒子模型”的疑惑有所帮助!接...
    99+
    2024-04-02
  • CSS 盒子模型是什么
    本文将为大家详细介绍“CSS 盒子模型是什么”,内容步骤清晰详细,细节处理妥当,而小编每天都会更新不同的知识点,希望这篇“CSS 盒子模型是什么”能够给你意想不到的收获,请大家跟着小编的思路慢慢深入,具体内容如下,一起去收获新知识吧。网页设...
    99+
    2023-06-08
  • MySQL中的日期时间类型与格式化方式是什么
    本篇内容介绍了“MySQL中的日期时间类型与格式化方式是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!...
    99+
    2024-04-02
  • Windows7无法应用视觉风格的解决办法是什么
    今天朋友说他的Windows 7系统主题界面变成了“Windows经典”主题,点击切换其他主题却提示“无法应用视觉风格”错误。下面icech就介绍两种解决的办法:1、更名解...
    99+
    2023-05-25
    视觉风格 Windows7 解决办法 风格 视觉
  • CSS代码格式化的不同表现方式是什么
    这篇文章主要介绍了CSS代码格式化的不同表现方式是什么,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。   格式化与CSS的功能无关。这些仅...
    99+
    2024-04-02
  • CSS块级格式化上下文指的是什么
    这篇文章主要介绍“CSS块级格式化上下文指的是什么”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“CSS块级格式化上下文指的是什么”文章能帮助大家解决问题。   我...
    99+
    2024-04-02
  • 什么是JavaScript严格模式
    本篇内容介绍了“什么是JavaScript严格模式”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!JavaS...
    99+
    2024-04-02
  • java中的原型模式是什么
    本篇内容主要讲解“java中的原型模式是什么”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java中的原型模式是什么”吧!目录引例原型模式浅拷贝在原先Sheep类基础上实现Cloneable接口...
    99+
    2023-06-20
  • CSS+DIV盒子模型是什么
    今天小编给大家分享一下CSS+DIV盒子模型是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一...
    99+
    2024-04-02
  • Css的模型构建是什么
    这篇文章主要讲解了“Css的模型构建是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Css的模型构建是什么”吧!“盒子”模型,每一个HTML元素可以看成...
    99+
    2024-04-02
  • 光盘格式化是什么
    光盘格式化是指将光盘的文件系统进行重建和清空的过程,在光盘格式化过程中,所有的数据都会被彻底删除,同时文件系统会被重新建立,以便在光盘上重新存储数据。光盘格式化可以用于保护数据安全、修复光盘故障和清除病毒等目的,在进行光盘格式化时,需要备份...
    99+
    2023-08-17
  • css的语法格式是什么
    这篇文章主要介绍“css的语法格式是什么”,在日常操作中,相信很多人在css的语法格式是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”css的语法格式是什么”的疑惑有所帮...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作