nth-childやlast-childをIE8でどうしても使いたいときの代替手段。
ご無沙汰してます。mackyです。
最近、目覚めると14:00で、やってしまった…。今日はどんな言い訳をしようか…。と朝から真剣に考える「夢」をよく見ます。
「落し物を届けたのは先週使ったしな~!」と毎回言うのですが、なかなか言い訳の嘘くささもリアルで面白いです。
さて今日は、タイトルにもありますようにIE8で、nth-childやlast-childと同等の指定ができる方法について書こうと思います。
そもそも、こんなことが必要にならないようにコーディングを行うよ。と言われればそれまでなのですが、
自分の未熟さはわかっている。くそ!悔しい!でもてっとり早く何とかしたいの。という仲間たち、つづきを読んでやってください。
HTML
<h3>寝坊したときの言い訳リスト</h3>
<ul>
<li>朝から腹痛</li>
<li>道に人が倒れていた</li>
<li>愛犬が逝く</li>
<li>(無敵の)私用</li>
<li>「寝坊です。」</li>
</ul>
こんなリストがあったとして、最後の「寝坊です。」にだけ背景色を与えてみようと思います。
CSS
ul {
background: #DFDFDF;
}
li {
margin-bottom: 10px;
padding: 3px;
font-size: 12px;
color: #666666;
font-weight: bold;
}
li:last-child {
background-color: #FA498F;
color: #FFFFFF;
}
もしくは、
li:nth-child(5) {
background-color: #FA498F;
color: #FFFFFF;
}
でこうなります。

が、これではIE8では反映されないので。。。
ul > *:first-child + * + * + * + * {
background-color: #FA498F;
color: #FFFFFF;
}
とします。
「+ *」の数で調整するわけですね。
くれぐれも、li > *:first-child + * + * + * + * としないように。
まとめ
どちらかというと、n番目としてあつかうといったほうが正しいカモしれませんね。last-childだとマークアップだけの修正ですみますが、この書き方だとリストが追加されるたびにCSSの修正も発生しますので。
ですが、知ってて損はないかと。是非、お試しください。
