2012-12-22 10 views
5

Załóżmy, że mamy element, który jest podobny do tegoCSS Negate: Wyświetlanie określonych elementów w ukrytym elemencie?

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

teraz chcę, aby ukryć wszystkie elementy, w tym textelements ale nie nav-block-2, więc czy jest jakiś sposób, przez które można to zrobić? Coś jak użycie negacji CSS?

Próbowałem za pomocą

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

ale to wydaje się negując nawet elementów wewnątrz nav-blok-2? Czy robię coś złego tutaj? Jakieś pomysły?

+0

'#navigation: not (.nav-block-2)' wybierze elementy z 'id = navigation' i' class! = Nav-block-2'. Potrzebujesz miejsca między tymi dwoma, aby wskazać dzieci. – Jivings

+0

Dzięki za wskazanie, że wcześniej było to lubić, to nadal nie rozwiązuje moich problemów. –

+0

Teraz nie określasz, że nie chcesz, aby dzieci z nav-block-2 były ukryte, tylko sam element. – Jivings

Odpowiedz

0

Spróbuj

#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

Może nie to, co chcesz, ale tutaj jest to, co chciałbym robić.

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

EDIT: Jak mówi się w komentarzach w swoje pytanie, myślę, że jest to trudne do zrobienia: nie, gdy nie ma tag wokół tekstu.

+0

Spowoduje to utworzenie kotwicy w linii wraz z tekstem. Aby przetestować wyświetlenie '#navigation * { : brak; } 'sama pozostawia tekst z tyłu. –

0

Użyj tego:

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

Jednakże, nie można ukryć pojedyncze węzły tekstowe. Będziesz musiał umieścić "To jest oferta" w akapicie lub przynajmniej w tagu <span>, aby to ukryć, lub musisz ukryć cały #navigation, który nieuchronnie zawiera .nav-block-2.

Powiązane problemy