2012-03-11 1 views
1

私は特定のクラスのすべての要素を隠す方法を探しています - 最初のものを除いて。私はjavascriptでこれを行う方法があることを認識していますが、この機能は、が有効になっているのためのものです - だから私はCSSのみを探していますソリューション。CSSは、IE6の最初のものを除いて、クラスからすべての要素を隠す

<div class="foo">Content 1</div> //not hidden 
<div class="foo">Content 2</div> //hidden 
<div class="foo">Content 3</div> //hidden 

私は次のようにfirst-child pseduoクラスを使用することによって、これを達成することができます:

.foo:first-child { 
    display:block; 
} 
.foo { 
    display:none; 
} 

しかし、IE6は、このpseduoクラスをサポートしていないので、それは動作しません。残念ながら、私はIE6のサポート(一息)をキャンセルすることはできませんので、私はこの特定のセレクタを使用せずにこれを達成する方法を探しています。

ありがとうございます!

+0

本質的に、膨大な量のオーバーヘッド(ライブラリ、代替設定、追加機能)を追加する可能性のある、既知の欠陥(IE6は '第1子要素+無数の他の有用なものをサポートしていません)等)を使用することができます。 jQueryは[それ自身の方法で手助けする]ことができますが(http://www.thebrightlines.com/2010/01/31/hack-how-to-enable-first-child-in-ie6/)、それはjQueryは必要ありません。 –

+0

私は完全にあなたに同意しますが、私はjavascriptを無効にしてIE6ユーザーのための最良のUXを確保しようとしています(yiekes、悪化する可能性がありますか?)。いくつかは、それが不可能な仕事だと言うかもしれません.. :-D。あなたのご意見ありがとうございます! – Zar

答えて

4

フォールバックと同じスタイルのクラスを使用します。 IE6が連鎖をサポートしているかどうかわからないので(私が知っている限り、それはそうではありません)、表示するためにコンテナを使用してください。これは私が考えることができるすべてです

/*hide all foo*/ 
.container .foo { 
    display:none; 
} 

/*as suggested, might as well do this and drop the others altogether*/ 
.container .first-child { 
    display:block; 
} 
<div class="container"> 
    <div class="foo first-child">Content 1</div> //not hidden 
    <div class="foo">Content 2</div> //hidden 
    <div class="foo">Content 3</div> //hidden 
</div> 
+0

追加のクラスを必要としない解決策を好むだろうが、私はIE6を扱っているので、それはただの夢だと思う。あなたの答えをありがとう! – Zar

+3

IE(IE7やWebKitなどのバグのない他のブラウザ)は、認識できないセレクタを含むルール全体を無視するため、ルールを2つに分割する必要があります。しかし、あなたは ':first-child'セレクターを一切捨ててクラスを使うこともできます。 – BoltClock

+0

@BoltClock意味があります:D – Joseph

0

...

<div class="foo">Content 1</div> 
<!--[if IE 6]><div style="display:none"><![endif]--> 
<div class="foo">Content 2</div> 
<div class="foo">Content 3</div> 
<!--[if IE 6]></div><![endif]-->​ 

OR

<div class="foo">Content 1</div> 
<noscript><div style="display:none"></noscript> 
<div class="foo">Content 2</div> 
<div class="foo">Content 3</div> 
<noscript></div></noscript>​ 

例:http://jsfiddle.net/FkCzB/

+0

最低限の解決策。 Yech、絶対に他の方法がない場合にのみしてください。 ':)'また、実際の問題を実際に解決したとは思わない(私はOPがさらにマークアップを望んでいるとは思わない)。 –

+0

@JaredFarrishクラスやJavaScriptを追加しなくても、それは私が考えることができることです。 – henryaaron

+1

IE6は私たちにすべての倫理を忘れさせ、私たちの罪の許しを求めました。誰かがこの古い獣の "自己破壊"ボタンを押す必要があります。 –

1

与えられたマークアップでは、IE6のみのCSSソリューションは不可能です。最初の子をターゲットにする方法はなく、すべての子孫の一般的なルールだけです。

関連する問題