たとえば、要素セット内の 4 つおきの要素を選択することは可能ですか?
例: 要素が 16 個ある場合<div>
、次のように記述できます。
div:nth-child(4),
div:nth-child(8),
div:nth-child(12),
div:nth-child(16)
これを行うより良い方法はありますか?
ベストアンサー1
名前が示すように、定数に加えて変数を使用して算術式を作成できます。加算( )、減算()、および:nth-child()
n
+
-
係数乗算(an
はa
正の数、負の数、ゼロを含む整数です)。
上記のセレクター リストを書き換える方法は次のとおりです。
div:nth-child(4n)
これらの算術式がどのように機能するかについては、私の回答を参照してください。この質問、そしてスペック。
この回答では、同じ親要素内のすべての子要素が同じ要素タイプ であると想定していることに注意してください。やdiv
などの異なるタイプの他の要素がある場合は、の代わりにを使用して、要素のみがカウントされるようにする必要があります。h1
p
:nth-of-type()
:nth-child()
div
<body>
<h1></h1>
<div>1</div> <div>2</div>
<div>3</div> <div>4</div>
<h2></h2>
<div>5</div> <div>6</div>
<div>7</div> <div>8</div>
<h2></h2>
<div>9</div> <div>10</div>
<div>11</div> <div>12</div>
<h2></h2>
<div>13</div> <div>14</div>
<div>15</div> <div>16</div>
</body>
その他すべて(クラス、属性、またはこれらの組み合わせ)では、任意のセレクタに一致するn番目の子を探すことになりますが、純粋なCSSセレクタではこれを行うことはできません。この質問。
ちなみに、 に関しては 4n と 4n + 4 の間に大きな違いはありません:nth-child()
。 変数を使用するとn
、0 からカウントが始まります。各セレクターが一致するのは次のようになります。
:nth-child(4n)
4(0) = 0
4(1) = 4
4(2) = 8
4(3) = 12
4(4) = 16
...
:nth-child(4n+4)
4(0) + 4 = 0 + 4 = 4
4(1) + 4 = 4 + 4 = 8
4(2) + 4 = 8 + 4 = 12
4(3) + 4 = 12 + 4 = 16
4(4) + 4 = 16 + 4 = 20
...
ご覧のとおり、両方のセレクターは上記と同じ要素に一致します。この場合、違いはありません。