疑似要素なのに要素が増える。
どういうことか
tableを作ったとする。
<table>
<thead><tr><th></th><th></th><th></th></tr></thead>
<tbody>
<tr><td></td><td></td><td></td></tr>
<tr><td></td><td></td><td></td></tr>
<tr><td></td><td></td><td></td></tr>
</tbody>
</table>
装飾したくてstyleをこうしたとする。
table tbody tr{ position: relative;}
table tbody tr::before{ content: "";}
table tbody tr::after{ content: "";}
このとき、cssというかhtmlだと思うけど、疑似要素がtr内に追加される。
どういうことかというと、tr内のセル数が増える。
::beforeは<tr>の先頭、::afterは<tr>の末尾に追加される。
この場合だと<tbody>の<tr>に疑似要素を作ったわけで、そうすると<thead>の<tr>にあるセル数とズレるので<table>が壊れる。
対処法
疑似要素を使うことが大前提にある場合、全体のセル数が合うようにする必要がある。
今回の例で言えば、以下の2択。
- <thead>内の<tr>にも疑似要素を追加する
- <thead>内の<tr>に要素を追加する
cssで要素を追加してるわけだから、同様に疑似要素で対応したほうがスマート。
そういう話。
コメント