純粋な CSS、Javascript なし、IE7/8 をサポート
HTML の変更が必要、または...
HTML で変更する要素に何らかのクラスを明示的に設定する必要があります。これは、サーバー側のスクリプト カウントを使用して動的に行うか、ハード コーディングによって手動で行います。
デモフィドル
HTML
<section>
<div class="someclass explicitClass"></div>
<div id="someId"></div>
<div class="someotherclass"></div>
<div id="someotherId" class="explicitClass"></div>
<div class="someclass"></div>
<div id="someId"></div>
<div class="someotherclass explicitClass"></div>
</section>
CSS
.explicitClass {
your-property-to-change: your-value-desired;
}
... 広範な CSS マークアップが必要
または、かさばる方法で「カウント」する CSS を生成する必要があります。Indy が彼の回答で指摘したように (隣接する兄弟が「IE8 以下ではデフォルトで利用できない」と述べた理由は不明です。これは正しくないためです)、これは CSS プリプロセッサを介して処理できますが、それでも、実際にはそうではありません。要素の数が非常に限られている場合を除き、おそらくあなたの例に投稿した数よりも多くない限り、このルートに行きたいと思います。何百もの要素があった場合、これは実用的ではありません。このソリューションでは、HTML を変更する必要はありません。
デモフィドル
CSS
section div:first-child,
section div:first-child + div + div + div,
section div:first-child + div + div + div + div + div + div {
your-property-to-change: your-value-desired;
}
最終的に、私は JoshC と Indy に同意します
上記の回答を提供したのは、自分が言いたいことが本当に欲しい場合に何をしなければならないかを示すためだけです. それが私だったら、これらのスタイルの変更を 3 要素ごとに行うことが絶対に不可欠でない限り (したがって、javascript をオフにすることはスキーム全体にとって致命的であり、それを回避して非 javascript のスタイルを変更することもできます)、私は使用します。 JoshCの回答をCSSとして使用し、何らかの形式のjavascriptソリューションを使用して下位互換性を確保します(Indyが指摘したように、または他の形式のjavascriptソリューション)。