:nth-child(odd)
ではなく :nth-of-type(odd)
を使う
- 普通のテーブル系要素(
table
tr
td
等)を使うとなぜか制御できないので
テーブル系要素以外のタグを使用し、スタイルシートで無理やりテーブル化
- 飛ばしたい行は属性(class等)で制御できないので、別の要素で記述する
- 似非テーブルをテーブルっぽく見せる(★)のが割と面倒だった
HTML
1<div>
2 <section><p>01</p><p>01</p></section>
3 <section><p>02</p><p>02</p></section>
4 <section><p>03</p><p>03</p></section>
5 <span><p>IRREGULAR</p><p>IRREGULAR</p></span>
6 <section><p>04</p><p>04</p></section>
7 <section><p>05</p><p>05</p></section>
8 <section><p>06</p><p>06</p></section>
9</div>
CSS
1/* <table> 代替要素★ */
2div {
3 display: table;
4}
5
6/* <tr> 代替要素★ */
7/* <section> が交互塗り分け行用、<span> が飛ばしたい行用 */
8div section, div span {
9 display: table-row;
10}
11
12/* <td> 代替要素★ */
13/* セルっぽく見せるための border 指定 */
14div p {
15 display: table-cell;
16 border: 4px #fff ridge;
17}
18
19/* 交互塗り分け行の背景色 */
20div section:nth-of-type(odd) {
21 background: #ff0;
22}
23
24/* 飛ばしたい行の背景色 */
25div span {
26 background: #f00;
27}
サンプル(jsfiddle)
いちおうCSSだけで作ることはできたのですが、
yambejpさんが仰っしゃるように 作っててたしかに姑息さを感じました…