首页 > 其他分享 >CSS2.1规范笔记——9.5 浮动

CSS2.1规范笔记——9.5 浮动

时间:2023-07-22 19:57:26浏览次数:33  
标签:浮动 行框 边界 clear 元素 笔记 CSS2.1 9.5 属性

浮动

一个浮动盒会向左或向右移动,直到其外边界挨到包含块边界或者另一个浮动盒的外边界。如果存在行框,浮动盒的上外(边界)会与当前行框的上(边界)对齐。如果没有足够的水平空间来浮动,它会向下移动,直到空间合适或者再没出现过其他浮动。

因为浮动盒不在常规流内,在浮动盒之前或者之后创建的非定位块盒会垂直排列,就像浮动盒不存在一样。

浮动盒缩短行框

浮动盒不再常规流内,在浮动盒之前或者之后创建的非定位块盒会垂直排列,就像浮动不存在一样。然而,会根据需要缩短挨着浮动盒创建的当前及后续行框,以便给浮动盒的外边距让出空间。

行框挨着(next to)浮动盒的条件是存在一个垂直位置,同时满足这4个条件:

  • 位于行框的顶端或者顶端下方
  • 位于行框底端或者底端上方
  • 在浮动盒上margin edge下方
  • 在浮动盒下margin edge上方

(也就是说0外高度(outer height)或者负外高度的浮动不会缩短行框)

如果一个缩短的行框小到无法容纳任何内容了,那么该行框会向下移动,并重新计算器宽度,直到有些内容能适应它的空间,或者再没出现其他浮动了。当前行里浮动盒之前的所有内容都会在浮动方向另一侧的相同行重新排列(reflow)。换句话说,如果行内级盒放在同一行的左浮动元素之前,并且适应剩余的行框空间,左浮动盒就放在改行,与行框的顶端对齐,然后,相应地,该行中已经放好的这个内联级盒会被移动到浮动盒右侧,瑞昱rtl和右浮动,反之亦然。

部分元素不能与浮动盒重叠

表格,块级替换元素或常规流中建立的新的BFC的元素不能和与元素自身处于同一BFC中的任何浮动盒的外边距框重叠。如果有必要的话,实现应该把它放在所有之前出现的浮动(盒)的下方,以清除(clear)该元素收到的浮动影响,如果空间充足的话,可以放得与浮动盒相邻。

float属性

float属性指定了一个盒应该向左浮动还是向右浮动,或是不浮动。可以给任何元素设置,但只会应用于生成了非绝对定位的元素。属性值的含义如下:

  • left:元素生成一个左浮动的块盒。其他内容排列在盒的右侧,从顶部开始(受限于clear属性);
  • right:元素生成一个右浮动的块盒。其他内容排列在盒的左侧,从顶部开始(受限于clear属性);
  • none:盒不浮动。

浮动行为的准则

注意,下述规则里的“其他元素”仅仅指的是与浮动盒处于同一BFC的其他元素。

  • 水平方向
    • 左浮动盒的左外边界不能位于其包含块的左边界的左边,右浮动盒同理。
    • 左浮动盒的右外边不能位于挨着它的右浮动盒的左外边界的右边。右浮动盒同理。
    • 左边存在另一个左浮动盒的左浮动盒的右外边不能位于其包含块的右边界的右边(不严谨地:左浮动盒不能超出右边界,除非他已经尽量向左(紧挨着包含块的左边界)了)。右浮动元素同理。
  • 垂直方向
    • 浮动盒的外顶端不能高于其包含块的顶部。
    • 浮动盒的外顶端不能高于源文档中任何在该元素之前的元素生成的块盒或者浮动盒的外顶端。
    • 浮动盒必须尽量往高处放。
  • 水平、垂直方向
    • 如果当前盒是左浮动盒A,且在之前文档中还有元素生成了左浮动盒B,那么对于每一个之前的盒,要么当A的左外边界在B的右外边界的右边,要么A的顶部要低于B的底部。右浮动盒同理。
    • 左浮动盒必须尽量往左放,右浮动盒尽量往右放。更高的位置要比更左/右的位置优先。
  • 当浮动盒出现在两个折叠外边距之间时,浮动盒的定位就像它有一个空的匿名块父级存在于当前流一样,这个父级的位置通过外边合并的规则来定义。

clear属性

clear属性说明元素盒的哪一边不能与之前的浮动盒相邻。clear属性不考虑元素自身的浮动或者其他BFC中的浮动。应用于非浮动块级盒时,属性值含义如下:

  • left:要求该盒的上边框边界位于源文档中在此之前的元素形成的所有左浮动盒的下外边界下方。
  • right:要求该盒的上边框边界位于源文档中在此之前的元素形成的所有右浮动盒的下外边界下方。
  • both:要求该盒的上边框边界位于源文档中在该元素之前的元素形成的所有左浮动盒和右浮动盒的下外边界下方。
  • none:对该盒相对于浮动(盒)的位置没有约束。

注意,该属性在CSS1中适用于所有元素,而在CSS2和CSS2.1中,clear属性只适用于块级元素。因此,编写者应该只把该属性用在块级元素上。

空隙 clearance

clear值不为none就隐含了要引入空隙。空隙会阻止外边界合并,并作为元素margin-top上方的空间。用来在垂直方向上把元素推离浮动元素。

 

 

要特别注意的是,加上clear:both后的B2,其上border edge与F的下margin edge重叠,而不是其上margin edge与F的下margin edge重叠(即clear要求上边框边界处于浮动元素F的下方(这个下方就是botom margin edge))

标签:浮动,行框,边界,clear,元素,笔记,CSS2.1,9.5,属性
From: https://www.cnblogs.com/hdxg/p/17574113.html

相关文章

  • CSS2.1规范笔记——9.6 绝对定位
    绝对定位绝对定位模型中,盒相对其包含块偏移,它会从常规流中全部移除(不会影响后面的兄弟)。绝对定位的盒会为常规流中的子级和绝对(不包括fixed)定位的后代建立一个新的包含块。然而绝对定位的内容不会沿着任何其他盒排列。它们可能会遮住其他盒的内容(或者被它们自身遮住),取决于重叠盒......
  • CSS2.1规范笔记——9.7 分层展示
    分层展示z-index属性该属性指定了:当前堆叠上限爱问(stackingcontext)中,该盒的堆叠层级(stacklevel);该盒是否应该建立一个堆叠上下文;该属性的取值为:<integer>:是生成盒当前堆叠上下文中的堆叠层级,该盒还会建立一个新的堆叠上下文。auto:生成盒在当前堆叠上下文中的堆叠层级为......
  • CSS2.1规范笔记——9.2 控制盒的生成
    控制盒的生成控制盒就是我们常说的盒。盒的类型对其在视觉格式化模型中的行为有一定影响。display的取值display属性指定了盒的类型:none:此元素不会被显示。block:此元素将显示为块级元素,此元素前后会带有换行符。inline:默认。此元素会被显示为内联元素,元素前后没有换行符。......
  • 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会自动去中央仓库下载相关的依赖,并且解决依赖的依赖问题。),也可以是自己的仓库。项目构建:对项目进行编译、测试、打包、......