:first-child 疑似class を代用するjsライブラリ
メニューなんかを作っていて、同じ項目を連続させるような場合
下記のようなケースがよくあると思います。
このような場合、本来はCSSの疑似class :first-child を使えばよいのですが、、、
IE6やFirefox2は、CSSに定義された、
この便利な疑似class “:firstchild” をサポートしていません。
(IE7でも不具合があるようです。)
:first-child の利用はあきらめて、
なんてことを考えるのですが、システムと連携する場合には
難しい場合があります。
システム側で「始めの要素にだけclassを付与する」なんて機能を
作るとなれば、工数的には本末転倒ですし(泣… 。
これをjavascript で解決してくれるのがoffspring.jsです。
他のjsとコンフリクトして動作しない場合があります。利用前にテストを行ってください。(2008年11月18日追記)
HTMLを変更せずとも、javascriptが後から自動でclass="first-child"を振ってくれます。
HTMLに余計なclassを加えないで、しかし
CSSからは下記のように参照可能となります。
first-child 以外に last-child なんかも使えるようになるので、
デザインの自由度が広がること間違いなしです。
下記のようなケースがよくあると思います。
<ul id="foo">
<li>item-1</li> <- ここだけ特別なデザインにしたい!
<li>item-2</li>
<li>item-3</li>
<li>item-4</li>
</ul>
このような場合、本来はCSSの疑似class :first-child を使えばよいのですが、、、
#foo li:first-child { border: none; }
IE6やFirefox2は、CSSに定義された、
この便利な疑似class “:firstchild” をサポートしていません。
(IE7でも不具合があるようです。)
:first-child の利用はあきらめて、
<ul id="foo">
<li class="first-child">item-1</li>
<li>item-2</li>
<li>item-3</li>
<li>item-4</li>
</ul>
なんてことを考えるのですが、システムと連携する場合には
難しい場合があります。
システム側で「始めの要素にだけclassを付与する」なんて機能を
作るとなれば、工数的には本末転倒ですし(泣… 。
これをjavascript で解決してくれるのがoffspring.jsです。
他のjsとコンフリクトして動作しない場合があります。利用前にテストを行ってください。(2008年11月18日追記)
HTMLを変更せずとも、javascriptが後から自動でclass="first-child"を振ってくれます。
<ul id="foo">
<li>item-1</li> <- javascriptが class="first-child" を振ってくれている
<li>item-2</li>
<li>item-3</li>
<li>item-4</li>
</ul>
HTMLに余計なclassを加えないで、しかし
CSSからは下記のように参照可能となります。
#foo li.first-child { border: none; }
first-child 以外に last-child なんかも使えるようになるので、
デザインの自由度が広がること間違いなしです。
出典
CSSの擬似クラス:IE6/IE7でも使う方法あります2008年11月19日(水) 11:50:32 Modified by andanada