reading-order
语法
/* <integer> values */
reading-order: 1;
reading-order: -1;
/* Global values */
reading-order: inherit;
reading-order: initial;
reading-order: revert;
reading-order: revert-layer;
reading-order: unset;
值
<integer>-
表示元素所属的顺序组。
描述
当元素的块、flex 或 grid 父容器的 reading-flow 属性设置为 normal 以外的值时,可以使用 reading-order 属性来设置元素的阅读流位置,使其相对于其兄弟元素。
对于阅读和导航,块、flex 或 grid 容器内的元素按 reading-order 值升序排序。如果多个兄弟元素具有相同的 reading-order 值,则这些项根据容器的 reading-flow 进行排序。未明确指定 reading-order 值的兄弟元素被分配默认值 0,这使得阅读流容器的所有子元素默认处于同一顺序组。
兄弟元素按从最小编号的顺序组到最大编号的顺序组进行排序。因此,要使元素在其兄弟元素之后被读出,可以将其 reading-order 值设置为 1 或更大。要使元素在其兄弟元素之前被读出,可以将其 reading-order 值设置为 -1 或更小。
reading-order 定义了阅读和 Tab 键顺序,但对视觉顺序没有影响。
与 tabindex 的交互
如果一组通常不可聚焦的阅读流容器子元素通过 tabindex="0" 属性变得可聚焦,它们的阅读顺序将按 reading-flow 和 reading-order 属性的预期方式进行修改,就像 <a> 或 <button> 等交互元素一样。
但是,任何尝试使用正 tabindex 值修改阅读流容器内容的 Tab 键顺序的尝试都将被忽略——被 reading-flow 和 reading-order 的效果覆盖。无论如何,你通常不应该使用这些;请参阅不要使用大于 0 的 Tabindex。如果需要,reading-flow 和 reading-order 属性提供了更好的修改 Tab 键顺序的方法。
正式定义
在数据库中未找到值!示例
网格行顺序
此示例演示了如何使用 reading-order 来控制网格容器阅读顺序中单个网格项的位置。一个网格项的 reading-order 值低于默认的 0,因此将在其兄弟元素之前被读出。另一个网格项的 reading-order 值设置得更高,因此将在其他元素之后被读出,无论源顺序或显示顺序如何。
HTML
在我们的标记中,有六个包含在包装器 <div> 中的 <a> 元素。
<div class="wrapper">
<a href="#">Item 1</a>
<a class="bottom" href="#">Item 2</a>
<a href="#">Item 3</a>
<a class="top" href="#">Item 4</a>
<a href="#">Item 5</a>
<a href="#">Item 6</a>
</div>
CSS
在 <div> 上,我们将 grid-auto-flow 属性设置为 dense,因此项目可能会以非源顺序显示。类为 top 的 <a> 元素的 reading-order 属性设置为 -1,因此“项目 4”将是阅读流中的第一个项目。类为 bottom 的 <a> 元素的 reading-order 属性设置为 21,因此“项目 4”将是阅读顺序中的最后一个项目。其余项目将在此之间以网格行顺序访问,因为 <div> 元素的 reading-flow 属性设置为 grid-rows。
.wrapper {
display: grid;
grid-template-columns: repeat(3, 150px);
grid-auto-flow: dense;
reading-flow: grid-rows;
}
.top {
reading-order: -1;
}
.bottom {
reading-order: 21;
}
结果
上面的演示渲染如下:
尝试使用 Tab 键浏览链接。请注意,“项目 4”是如何首先被 Tab 键访问,而“项目 2”是最后被 Tab 键访问的,这是因为它们的 reading-order 值被修改了。在这两者之间,项目按网格行顺序被 Tab 键访问。
源顺序覆盖
在此示例中,奇数项的 reading-order 值设置得较低,因此它们将在组中的其他项之前被读出,无论源顺序或显示顺序如何。
HTML
在我们的标记中,有五个包含在包装器 <div> 中的 <a> 元素。
<div class="wrapper">
<a href="#">Item 1</a>
<a href="#">Item 2</a>
<a href="#">Item 3</a>
<a href="#">Item 4</a>
<a href="#">Item 5</a>
</div>
CSS
<div> 元素的 reading-flow 属性设置为 source-order,这允许使用 reading-order 覆盖默认的源阅读顺序。奇数 <a> 元素的 reading-order 值为 -1,因此它们在偶数项之前被读出。
.wrapper {
reading-flow: source-order;
}
.wrapper > a {
display: block;
}
.wrapper a:nth-child(odd) {
reading-order: -1;
}
结果
上面的演示渲染如下:
尝试使用 Tab 键浏览链接,并注意“项目 1”、“项目 3”和“项目 5”是如何首先被 Tab 键访问的,这是因为它们的 reading-order 被修改了。之后,项目按源顺序被 Tab 键访问。
规范
| 规范 |
|---|
| CSS Display Module Level 4 # propdef-reading-order |
浏览器兼容性
加载中…
另见
reading-flow- CSS
reading-flow示例(通过 chrome.dev)