我想选择列表的最后一项,即使该列表是弹性反转的。
示例:
我有一份清单。我希望最后一个元素中的背景颜色为红色。所以,在第一个列表上,它没问题。在第二个列表中,该列表是还原的,因为最后一个元素是" 1"而不是" 5"。所以我创建了一个"修复"替换CSS值以产生效果的类。
.list {
background-color: green;
margin-bottom: 10px;
}
.list div:nth-last-child(1) {
background: red;
}
.rev {
display: flex;
flex-direction: column-reverse;
}
.rev-fix div:nth-last-child(1) {
background-color: initial;
}
.rev-fix div:nth-child(1) {
background-color: red;
}

<div class="list">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
</div>
<div class="list rev">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
</div>
<div class="list rev rev-fix">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
</div>
&#13;
我认为这不是最好的方法。那么即使列表被CSS上的良好实践还原,我如何选择最后一个元素呢?
答案 0 :(得分:3)
不幸的是,伪选择器以DOM顺序运行。您可以使用:not
伪选择器跳过目标任何弹性反转元素。这将消除对第二类的依赖,以修复所应用的css
.list {
background-color: green;
margin-bottom: 10px;
}
.rev {
display: flex;
flex-direction: column-reverse;
}
.list:not(.rev) div:last-child {
background: red;
}
.rev div:first-child {
background: red;
}
<div class="list">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
</div>
<div class="list rev">
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
</div>
答案 1 :(得分:0)
你不需要.rev-fix
,但你的直觉是正确的 - 你需要在反转时改变行为。 last-child
或nth-last-child
是指HTML订单,而不是布局。 .rev-fix
翻转的Insead使用此:
.list.rev div:last-child {
background-color: initial;
}
.list.rev div:first-child {
background-color: red;
}
另外,请注意.list div
选择器...,您应该为该div
类型的事物设置一个类,或使用.list > div
确保您没有定位该子树中的所有div。