Po pierwsze, zakładam, że jest to zbyt skomplikowane dla CSS3, ale jeśli gdzieś jest jakieś rozwiązanie, wolałbym to zamiast tego.
HTML jest dość prosty.
<div class="parent">
<div class="child">
Text Block 1
</div>
</div>
<div class="parent">
<div class="child">
Text Block 2
</div>
</div>
Element podrzędny div jest ustawiony na wyświetlanie: none; domyślnie, ale potem zmienia się na wyświetlenie: blok; gdy wskaźnik myszy zostanie umieszczony nad nadrzędnym elementem DIV. Problem polega na tym, że ten znacznik pojawia się w kilku miejscach na mojej stronie i chcę, aby dziecko było wyświetlane tylko wtedy, gdy wskaźnik myszy jest nad jego rodzicem, a nie, gdy wskaźnik myszy jest nad którymkolwiek z pozostałych rodziców (wszyscy mają tę samą klasę imię i nazwisko bez identyfikatorów).
Próbowałem używać $(this)
i .children()
bezskutecznie.
$('.parent').hover(function(){
$(this).children('.child').css("display","block");
}, function() {
$(this).children('.child').css("display","none");
});
źródło
:hover
jest jedną z „dynamicznych pseudoklas” zdefiniowanych w CSS2 ( tutaj jest specyfikacja ). Oto krótki przykład: http://jsfiddle.net/5FLr4/ . mi to pasuje..parent:not(:hover) .child { display: none; }
wydaje mi się, że działa dobrze, chociaż z pewnością nie martwię się o IE6. Ale w ten sposób mogę go użyć na elementach, które nie chcą mieć jednolitejdisplay
właściwości.Nie ma potrzeby używania JavaScript ani jquery, CSS wystarczy:
ZOBACZ DEMO
źródło
Użyj
toggleClass()
.gdzie
color
jest klasa. Możesz stylizować klasę według własnego uznania, aby osiągnąć pożądane zachowanie. Przykład pokazuje, jak klasa jest dodawana i usuwana po wejściu i wyjściu myszą.Sprawdź przykład pracy tutaj .
źródło
źródło
Odpowiedź Stephena jest poprawna, ale oto moja adaptacja jego odpowiedzi:
HTML
CSS
jQuery
Możesz zobaczyć ten przykład pracujący w jsFiddle .
źródło
Mam to, co uważam za lepsze rozwiązanie, ponieważ jest skalowalne do większej liczby poziomów, tylu, ile potrzeba, a nie tylko do dwóch lub trzech.
Używam obramowań, ale można to również zrobić w dowolnym stylu, na przykład w kolorze tła.
W przypadku granicy chodzi o:
Możesz to przetestować pod adresem: http://jsbin.com/ubiyo3/13
A oto kod:
źródło
Jeśli używasz stylu Twitter Bootstrap i podstawowego JS dla menu rozwijanego:
To jest brakujący element do tworzenia lepkich list rozwijanych (które nie są denerwujące)
źródło
Nie jestem pewien, czy istnieją straszne powody, aby to zrobić, czy nie, ale wydaje się, że działa ze mną w najnowszej wersji przeglądarki Chrome / Firefox bez żadnych widocznych problemów z wydajnością z dużą ilością elementów na stronie.
Ale w ten sposób wszystko, czego potrzebujesz, to zastosować się
parent-hover-show
do elementu, a reszta jest załatwiona, i możesz zachować dowolny domyślny typ wyświetlania, który nie jest zawsze „blokowany” lub tworząc wiele klas dla każdego typu.źródło
Aby zmienić to z css, nie musisz nawet ustawiać klasy podrzędnej
źródło