请查看此Codepen:http://codepen.io/muji/pen/XpEYzO
在使用CSS "order"属性排序后,我需要定位第一个元素之后并给它另一个CSS属性。是否有一些jQuery或其他工具可以用来找到排序后的第一个元素,然后添加类别或其他内容?非常感谢任何帮助。
.wrap {
display: flex;
flex-direction: row;
flex-wrap: wrap;
}
.featured {
order: 1;
}
.normal {
order: 2;
}
.wrap div {
flex-basis: 50%;
background: #ddd;
border: 2px solid #000;
}
/*this is the part I need help with, as it should only apply to the first element AFTER applying the "order" attribute*/
.wrap div:first-of-type {
flex-basis: 100%;
background: #f00;
}
<h3>wp_query 1 output:</h3>
<div class="wrap">
<div class="normal">Normal</div>
<div class="normal">Normal</div>
<div class="featured">A featured item</div>
<div class="normal">Normal</div>
<div class="featured">A featured item</div>
<div class="normal">Normal</div>
</div>
<h3>wp_query 2 output:</h3>
<div class="wrap">
<div class="normal">Normal</div>
<div class="normal">Normal</div>
<div class="normal">Normal</div>
<div class="normal">Normal</div>
</div>
:nth-of-type
和其他基于 CSS 位置的选择器(以及 JS)都是根据元素在 DOM 中的位置工作的。order
规则不影响 DOM - 这可以通过使用检查器进行检查来看到。这与伪选择器添加内容的问题类似。我建议您更改逻辑以在 JS 中进行排序。虽然不是理想的解决方案,但它将解决问题,并且还意味着代码在跨浏览器方面的工作效果更好,因为order
尚未得到很好的支持,特别是在 IE 中,请参见 MDN。 - Rory McCrossanorder
不可用。你能控制生成的HTML元素的顺序吗? - Rob Forrest