浮动和定位的逻辑属性

CSS 逻辑属性和值 模块包含 floatclear 的物理值的逻辑映射,以及与 定位布局 一起使用的定位属性。本指南介绍了如何使用这些属性。

映射的属性和值

下表详细介绍了本指南中讨论的 逻辑属性 和值,以及它们的 物理属性 和值映射。它们假设水平 writing-mode,方向为从左到右。

逻辑属性或值 物理属性或值
float: inline-start float: left
float: inline-end float: right
clear: inline-start clear: left
clear: inline-end clear: right
inset-inline-start left
inset-inline-end right
inset-block-start top
inset-block-end bottom
text-align: start text-align: left
text-align: end text-align: right

除了这些映射属性外,还有一些其他简写属性可以通过能够处理块级和内联尺寸来实现。除了 inset 属性外,它们没有映射到物理属性。

逻辑属性 目的
inset-inline 同时设置以上两个内联尺寸的内边距值。
inset-block 同时设置以上两个块级尺寸的内边距值。
inset 同时设置所有四个内边距值,并具有多值物理映射。

浮动和清除示例

floatclear 属性一起使用的物理值为 leftrightboth。CSS 逻辑属性和值模块将值 inline-startinline-end 定义为 leftright 的映射。

此示例有两个盒子——第一个盒子使用 float: left 浮动,第二个盒子使用 float: inline-start 浮动。如果将 writing-mode 更改为 vertical-rl 或将 direction 更改为 rtl,您将看到左浮动盒子始终粘贴在左侧,而 inline-start 浮动项目则跟随 directionwriting-mode

示例:用于定位布局的内嵌属性

CSS 定位通常允许我们以相对于其包含块的方式定位元素——我们本质上是相对于元素在正常流中所处位置对其进行内嵌。要相对于视口定位元素,请使用物理属性 toprightbottomleft。当您希望定位与书写模式中的文本流相关时,请改用 inset-block-startinset-block-endinset-inline-startinset-inline-end

这些属性接受长度或百分比作为值,并与用户的屏幕尺寸相关。

在下面的示例中,inset-block-startinset-inline-end 属性用于使用绝对定位在具有灰色虚线边框的区域内(该区域具有 position: relative)定位蓝色框。将 writing-mode 属性更改为 vertical-rl 或添加 direction: rtl,然后查看相对框如何保持与文本方向一致。

新的二值和四值简写

与模块中的其他属性一样,我们有简写属性,可以一次设置两个或四个值。

  • inset — 使用物理映射一起设置所有四条边。
  • inset-inline — 设置两个逻辑内联内边距。
  • inset-block — 设置两个逻辑块内边距。

示例:文本对齐的逻辑值

text-align 属性具有与文本方向相关的逻辑值——您可以使用 startend 而不是使用 leftright。在下面的示例中,第一个块中设置了 text-align: right,第二个块中设置了 text-align: end

如果将 direction 的值更改为 rtl,您会看到第一个块的对齐方式保持在右侧,但第二个块的对齐方式会到左侧的逻辑末尾。

当使用使用开始和结束而不是物理方向进行对齐的框对齐时,这可以更一致地工作。