如何解决视觉上放置一个元素,尽管在DOM中它首先使用Grid或Flexbox出现了?
我是一个可访问性专家,我的CSS变得非常生锈,但是我需要快速提供一个在视觉上将元素放置在另一个元素之后的示例,尽管在DOM中是相反的。
在下面的代码中,<time>
元素应在标题之前 中直观地显示,但出于可访问性的原因,在DOM中应放置在其之后。
<article>
<h2>Wahlresultate bekannt gegeben</h2>
<time datetime="2020-08-18">Dienstag,18.8.2020</time>
<p>Heute morgen wurden die Resultate der aktuellen Wahlen veröffentlicht.</p>
</article>
在早期,我们需要使用简单的绝对定位来实现类似的目标。我今天该怎么用? Flexbox?格?以及如何实现?
非常感谢。
解决方法
您可以使用Flex Box,特别是order属性来实现这一点。
尽管在每种情况下都请小心使用,但是视觉上与DOM顺序不同的顺序通常是可访问性(尽管在这种情况下看起来不错)。谨慎使用!
article {
display: flex;
flex-direction: column;
}
h2 {
order: 2;
margin-top: 0.5em;
}
time {
order: 1;
}
p{
order: 3;
}
<article>
<h2>Wahlresultate bekannt gegeben</h2>
<time datetime="2020-08-18">Dienstag,18.8.2020</time>
<p>Heute morgen wurden die Resultate der aktuellen Wahlen veröffentlicht.</p>
</article>
为了更容易控制,我将在要交换的元素周围添加一个<div>
并使其成为display: flex
,这样您就不必定义其中所有内容的顺序article
。
如果您无法更改标记,我会同时提供这两个版本。
.container {
display: flex;
flex-direction: column;
}
h2 {
order: 2;
margin-top: 0.5em;
}
time {
order: 1;
}
<article>
<div class="container">
<h2>Wahlresultate bekannt gegeben</h2>
<time datetime="2020-08-18">Dienstag,18.8.2020</time>
</div>
<p>Heute morgen wurden die Resultate der aktuellen Wahlen veröffentlicht.</p>
</article>
最大兼容性
因为它被标记为accessibility
,所以在使用flexbox时请注意。 Flexbox does not work in IE 8,9 etc.。
这是一个问题,因为a lot of screen reader users still use IE8,IE9,IE10 etc。
因此,您应该使用flexbox polyfill或改为使用absolute positioning as shown in this fiddle.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。