【发布时间】:2016-12-09 10:49:09
【问题描述】:
我有 5 个 div,每个第二个 div 的颜色都应该与其他的不同。
<div class="element element1">Element1</div>
<div class="element element2">Element2</div>
<div class="element element3">Element3</div>
<div class="element element4">Element4</div>
<div class="element element5">Element5</div>
在我的 CSS 中
.element {
background-color: grey;
}
.element:nth-child(odd) {
background-color: pink;
}
现在这些元素的顺序会动态地改变,我想用 flexbox 来做。这意味着我的 CSS 看起来像这样:
.element {
background-color: grey;
display:flex;
}
.element5 {
order: 1;
}
.element2 {
order: 2;
}
由于 flexbox 没有改变 DOM,nth-child(odd) 仍然会每隔一个 DOM 元素设置样式,这不是用户将看到的顺序。但这就是我想要的。用户看到的每个第二个元素都应该有不同的颜色,即使该元素使用 flexbox 改变了顺序。有谁知道这如何工作?我只能为此使用 CSS 或 HTML,不能使用 JavaScript 或 PHP。
【问题讨论】:
-
我猜这不一样。不幸的是,我没有一个可以添加背景颜色的类,这必须由 CSS/SASS 动态完成
-
你不能用 CSS 做到这一点......你需要 javascript。,即使那样它也会很棘手。
-
谢谢 Paulie,我也已经这么认为了。嗯..该死的!
-
@Michael_B nth-order 非常适合这个!我将编写 w3c 将其添加到 CSS :-)
标签: html css sass css-selectors flexbox