2012-02-10 14 views
82

私はリストの最後の子を選択できるCSSセレクターを探しています。CSS last-child(-1)

<ul> 
    <li>1</li> 
    <li>2</li> 
    <li>3</li> 
    <li>4</li> 
    <li>5</li> <!-- select the pre last item dynamically no matter how long this list is --> 
    <li>6</li> 
</ul> 

staticメソッド:

ul li:nth-child(5) 

ダイナミック方法:もちろんn番目-最後の子はしていないようにも、検証しません

ul li:last-child(-1) 

動的な方法を提供..私はjavascriptにフォールバックすることができますが、私は見落としたCSSの方法がある場合は私は疑問に思っている

+7

通常、「第2の最後」と呼ばれます。また別の言葉があります: "最後から2番目の"。 – BoltClock

+1

@BoltClock私は単語 "最後から2番目"が大好きです。私はsnarky Facebookのアップデートでそれを使うつもりです。 –

+0

[cssで2番目の最後の要素を選択]の可能な複製(http://stackoverflow.com/questions/5418744/select-second-last-element-with-css) –

答えて

167

You can use :nth-last-child();実際には、:nth-last-of-type()のほかに、私は他にあなたが使うことができるか分からない。私はあなたが "ダイナミック"とは何を意味しているのかよく分かりませんが、もっと子供がリストに追加されたときにスタイルが新しい最後の2番目の子に適用されるかどうかを意味するならば、そうです。あなたはクラスでその要素にラベルを付けるためにPHPを取得することができない限りInteractive fiddle.

ul li:nth-last-child(2) 
+0

これは機能します。コードインタプリタ(jsfiddle)はそれを検証しませんでした。彼らの側のバグを推測してください!ありがとうございます –

+0

いいえIE7とIE8のサポート –

+4

@David Allen:彼がすでに ':nth-​​child(5)'と ':last-child'を使用しようとしているとは思いません。このようなコメントは、質問に行くか、または自己に守られるべきです。 – BoltClock

1

あなたはjQueryのを使用することをお勧めします。

jQuery(document).ready(function() { 
    $count = jQuery("ul li").size() - 1; 
    alert($count); 
    jQuery("ul li:nth-child("+$count+")").css("color","red"); 
}); 
+3

jQueryは[Johnが誰も使っていないと思う]という理由だけで ':nth-​​last-child()'を実装していないのは間違いです(http://ejohn.org/blog/selectors-that-people-actually-use) 。 – BoltClock

+0

私はむしろPythonでラベルを貼りたいと思っています;-) ontopic:うーんこのように見えるかもしれませんが、おそらくjsfiddleも誰もそれを使用しないと思っています:-) –

+0

@ArgsKwargs:なぜjsFiddleではうまくいかないのですか?それを解釈するのはブラウザの責任です。独自のCSSエンジンを持っていません。 – BoltClock

関連する問題