Pau*_*aul 8 css css-selectors css3
背景:我正在尝试实现一种布局,其中元素在一行中从左向右流动,然后在下一行从右向左流动,依此类推......我在CodePen中模拟了一些东西,看看这里(它解释得比我好!)
我已经实现了上面的例子,nth-child但它是'硬编码的',例如
HTML:
<ul>
<li>1</li>
<li>2</li>
...
<li>16</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
CSS:
li { float: left; }
li:nth-child(5),
li:nth-child(6),
li:nth-child(7),
li:nth-child(8) {
float: right;
}
Run Code Online (Sandbox Code Playgroud)
现在,这可行,但它显然仅限于特定数量的元素(我放入CSS中的数量!).我知道我可以做到:nth-child(4n)每个第四个元素,但我希望能够选择那个和下一个4.它几乎就像nth-child(odd),但是对于4个元素的组.
有没有办法以编程方式执行此操作?我看过调整数量查询(http://alistapart.com/article/quantity-queries-for-css),但这似乎不是我追求的......
任何帮助非常感谢!!
是的,您可以使用nth-child下面代码段中的一组选择器来根据模式选择重复的元素组.
有一点需要注意的是,选择每个第4个元素和接下来的4个元素相当于选择第4个元素之后的所有元素,因此我将样本限制为仅接下来的2个元素.
选择器的说明(选择第4,第5,第8,第9个元素等):
nth-child(4n+4) - 选择第4(4*0 + 4),第8(4*1 + 4),第12(4*2 +4)个元素nth-child(4n+5) - 选择第5(4*0 + 5),第9(4*1 + 5),第13(4*2 + 5)个元素.从解释中可以看出,该系列从第4个元素开始,然后重复.如果您需要从第一个元素(比如第一,第二,第五,第六等)开始,那么您可以使用选择器组作为div:nth-child(4n+1), div:nth-child(4n+2).
div:nth-child(4n+4), div:nth-child(4n+5){
color: red;
}Run Code Online (Sandbox Code Playgroud)
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
<div>8</div>
<div>9</div>
<div>10</div>
<div>11</div>
<div>12</div>
<div>13</div>
<div>14</div>
<div>15</div>
<div>16</div>Run Code Online (Sandbox Code Playgroud)
选择器的说明(选择第4,第5,第12,第13个元素等):
nth-child(8n+4) - 选择第4(8*0 + 4),第12(8*1 + 4),第20(8*2 +4)个元素nth-child(8n+5) - 选择第5(8*0 + 5),第13(8*1 + 5),第21(8*2 + 5)个元素.从解释中可以看出,该系列从第4个元素开始,然后重复.如果您需要从第一个元素(比如第一,第二,第五,第六等)开始,那么您可以使用选择器组作为div:nth-child(4n+1), div:nth-child(4n+2).
div:nth-child(8n+4), div:nth-child(8n+5){
color: red;
}Run Code Online (Sandbox Code Playgroud)
<div>1</div>
<div>2</div>
<div>3</div>
<div>4</div>
<div>5</div>
<div>6</div>
<div>7</div>
<div>8</div>
<div>9</div>
<div>10</div>
<div>11</div>
<div>12</div>
<div>13</div>
<div>14</div>
<div>15</div>
<div>16</div>
<div>17</div>
<div>18</div>
<div>19</div>
<div>20</div>
<div>21</div>
<div>22</div>
<div>23</div>Run Code Online (Sandbox Code Playgroud)