2012-12-22 10 views
5

は、我々はこのCSS Negate:非表示要素の特定の要素を表示していますか?

<div id="navigation"> 
    <div class="nav-block-1">....</div> 
    <div class="nav-block-2">....</div> 
    This is the offer 
    <a href="#"> Report </a> 
</div> 

に似ている要素があると今、私はtextelementsなくnav-block-2を含むすべての要素を非表示にしたいので、私はこれを行うことができ、それを通して方法はありますか? CSS否定を使用するような何か?

私は

#navigation :not(.nav-block-2) { 
    display:none; 
} 

を使用してみましたが、これはNAV-ブロック2の内部にも要素を否定するようですか?私はここで何か間違っていますか?何か案は?

+0

'#navigation:not(.nav-block-2)'は 'id = navigation'と' class!= nav-block-2'の要素を選択します。子供を表すには、2人の間にスペースが必要です。 – Jivings

+0

これを指摘してくれてありがとう、これは前にこのように意図されていた、これはまだ私の問題を解決していません。 –

+0

これで、nav-block-2の子を非表示にしないように指定するのではなく、要素自体のみを非表示にします。 – Jivings

答えて

0

は、あなたが望んでいないものを多分これ

#navigation div:not(.nav-block-2) { 
    display:none; 
} 


<div id="navigation"> 
    <div class="nav-block-1">Div 1</div> 
    <div class="nav-block-2">Div 2</div> 
    This is the offer 
    <a href="#"> Report </a> 
</div> 
3

してみたが、ここで私がやるだろうものです。

#navigation * { 
    display:none; 
} 
#navigation a { 
    display:inline; 
} 

EDIT:テキストの周りにタグはありませんでないとき:それはあなたの質問のコメントで言うように は、私はそれを行うことは困難だと思います。

+0

これはアンカーをテキストとともにインラインにします。 '#navigation * { の表示をテストするには:none; } '自体がテキストを残してしまいます。 –

0

使用この:

#navigation > *:not(.nav-block-2) { 
    display:none; 
} 

しかし、あなたは、単一のテキストノードを隠すことができません。段落に、または少なくとも<span>タグ内に「これはオファーです」と書かなければなりません。あるいは、の全体に、.nav-block-2が含まれていることを隠す必要があります。

関連する問題