すでに CSS3 セレクターの使用を試みたので、これは使用する正しい疑似クラスです。
.MyClass:last-of-type
CSS3 仕様(少なくとも私が理解している限り) によると、これは機能するはずですが、機能していないようです。少なくとも、最新の Chrome (v23) および Firefox (v17) ブラウザー バージョンにはありません。
警告:上の情報は機能せず、この問題に対する純粋な CSS ソリューションがあると誤解を招く可能性があります... CSS3 の時点では何もないためです。一方、CSS4 には、:nth-last-match(n)
この正確なシナリオをカバーする追加の疑似クラスがあります。しかし、すべての CSS3 セレクターがブラウザーに実装されているわけではないことを言うのは時期尚早です。
追加調査
この疑似クラスセレクターが実際にどのように機能するかを示すJSFiddleを次に示します。
- CSS セレクターを満たすすべての要素を取得します (疑似なし)
- さまざまな HTML 要素タイプ (タグ) を取得する
- タイプ (タグ) グループごとに同じタイプ (タグ) のすべての兄弟要素を選択する
- 各タイプ (タグ) グループをグループ内の最後の要素に減らします
- この (各グループの) 残りの要素は、(疑似なしで) セレクターを満たしていますか?
- true の場合はスタイルを適用し、それ以外の場合は適用しません
これは、(私の例でも示されているように) いくつかの兄弟要素が、それらが異なる型である限り、このセレクターを満たすことができることを意味します。
これは、Chrome と Firefox で同じように機能するようです。そして、仕様を注意深く読むと、
:last-of-type
疑似クラスは、親要素の子のリストで、その型の最後の兄弟である要素を表します。
それがセレクターを満足させた最後の兄弟であると言った場合、私の上の解決策は機能します。それでは、私のステップをテストしましょう。
HTML を使用して手順を実行する
- 最初の 3 つの要素を取得します
- 1 つのタイプのみ:
div
- 4 つの要素 (最後の要素を含む)
- 最後の1つに減らす
- 満たす?いいえ
- スタイルを設定しない
私のフィドルの他のいくつかの例
この擬似クラス セレクターの動作をテストするために、さらに 2 つの例を追加しました。HTMLは次のとおりです。
<!-- First -->
<div class="SomeContainer">
<div class="MyClass">Content</div>
<div class="MyClass">Content</div>
<p class="MyClass">Content</p>
<p class="MyClass">Content</p>
</div>
<!-- Second -->
<div class="SomeContainer">
<div class="MyClass">Content</div>
<div class="MyClass">Content</div>
<div class="MyClass">Content</div>
<p class="MyOtherClass">Content</p>
</div>
最初の 1 つで、2 つの要素がセレクター ( lastdiv
と last p
) を満たします。
2 番目の要素では、1 つの要素がセレクターを満たします (last div
)
結果
あなたが提供したHTMLを持ち、任意の数の要素が存在する可能性があると仮定すると.MyClass
、特定のCSSクラスで最後の要素を実際にターゲットにする一般的なセレクターをCSS3に記述する方法はありません。
最善の方法は、特定のクラスを持つ最後の要素を表す要素に追加のクラスを追加し、それを対象とするセレクターを作成することです。