2012-01-20 11 views
7

Muszę być w stanie przeniknąć między klasami i płynnie przejść do wszystkich stylów zastosowanych do elementu i jego elementów potomnych. Jak to zrobić za pomocą jQuery? Wiem, jak dodawać/usuwać klasy, ale to nie jest to samo, co ładne przejście między dwoma drastycznie różnymi kolorami.jQuery: jak przejść między klasami?

+0

Możliwy duplikat: http://stackoverflow.com/questions/2176413 –

+0

Można to zrobić z wtyczką Transition jQuery UI (IIRC), ale nie lubię polecać interfejsu jQuery, ale to osoba al preferencji. – Bojangles

+0

Czy to musi być zrobione z jQuery? Najnowsze przeglądarki (z wyjątkiem oczywiście IE, z wyjątkiem prawdopodobnie kolejnej wersji, IE10) w pewnym stopniu obsługują przejścia CSS, jeśli używasz ich zastrzeżonych reguł stylu. Czy to jest problem? – JayC

Odpowiedz

8

jQuery UI posiada funkcję toggleClass który ma argument za czas trwania:

http://jqueryui.com/demos/toggleClass/

na przykład, zrobić to na jednej z moich stron (pojawianie się/z klasy light i zanikać/w z klasy dark)

$('body').toggleClass('light', 250).toggleClass('dark', 250); 
+0

który wygląda niezwykle obiecująco. Będę musiał to sprawdzić. dzięki! – Andrew

+1

ponieważ twoja odpowiedź technicznie osiąga to, o co prosiłem, daję ci kredyt, ale moje doświadczenia z animacjami klas jQuery UI były okropne. Skończyło się na tym, że zhackowałem coś, co wiązało się z zanikaniem warstw, które znajdowały się za zawartością. – Andrew

+0

W takim przypadku może istnieć skuteczniejszy sposób struktury układu. Czasami muszę powtarzać moje plany pół tuzina razy, zanim zacznie funkcjonować zdrowy umysł. :) – Matt

0

Spróbuj zaniknąć.

$(".myClass").fadeIn("slow"); 

http://api.jquery.com/fadeIn/

Chociaż w zależności od złożoności może trzeba jQuery UI jako inny wspomniałem.

+3

To będzie blaknąć w elementach, a nie w klasie zastosowanej do elementów. – Matt

+0

Prawda, ta funkcja powinna znajdować się w rdzeniu jQuery. –

3

Czy to właśnie chcesz osiągnąć? Here's the jsFiddle

HTML:

<input type="button" id="toggle" value="toggle" /> 
<br /> 
<div id="classContainer"> 

    <div id = "class1"> 

    </div> 
    <div id = "class2"> 
    </div> 
</div> 

jQuery:

$("#toggle").click(function(){ 
    if ($("#class1").is(":visible")) { 
     $("#class1").fadeOut(); 
     $("#class2").fadeIn(); 
    } 
    else { 
     $("#class1").fadeIn(); 
     $("#class2").fadeOut(); 
    } 
}); 

CSS:

#classContainer 
{ 
    position: relative; 
} 

#class1, #class2 
{ 
    height: 100px; 
    width: 100px; 
    position: absolute; 
    top: 0; 
    left: 0; 
} 

#class1 
{ 
    background-color: red; 
    display: none; 
} 

#class2 
{ 
    background-color: blue; 
} 
+0

to w zasadzie to, co skończyłem – Andrew

Powiązane problemy