2012-01-20 13 views
7

私はクラス間でフェードすることができ、エレメントとその子に適用されているすべてのスタイルをシームレスに移行する必要があります。これはjQueryを使ってどのように行うことができますか?私はクラスを追加/削除する方法を知っていますが、それは2つの劇的に異なる色の間の良い移行と同じではありません。jQuery:クラス間でフェードする方法は?

+0

可能な重複:http://stackoverflow.com/questions/2176413 –

+0

あなたがこれを行うことができますjQuery UIのTransitionプラグイン(IIRC)を使用していますが、jQuery UIを推奨するのは嫌ですが、それは人ですさらに好まれる。 – Bojangles

+0

これはjQueryで行う必要がありますか?最新のブラウザ(IEを除いて、おそらく次のバージョンIE10を除く)は、独自のスタイルルールを使用すると、CSSの移行をある程度サポートしています。それとも問題なの? – JayC

答えて

8

jQueryのUIは、期間の引数があるtoggleClass機能があります。たとえば

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

を、私は私のサイトの一つで、これを行います(lightクラスに/フェードアウト及びフェード/でdarkクラス外):

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

は非常に有望です。私はそれをチェックアウトする必要があります。ありがとう! – Andrew

+1

あなたの答えが技術的に私が求めていたものを達成して以来、私はあなたに信用を与えていますが、jQuery UIクラスのアニメーションでの私の経験は恐ろしいものでした。私はコンテンツの背後に位置していたフェードイン/アウトレイヤーを含む何かを一緒にハッキングしました。 – Andrew

+0

その場合、レイアウトをより効果的に構築する方法があるかもしれません。時には、機能的に正常な状態になる前に、私の計画を半ダース回繰り返す必要があります。 :) – Matt

0

fadeInを試してください。

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

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

他が述べてきたように複雑さに応じて、あなたはjQueryのUIを必要とするかもしれないが。

+3

これは要素に適用されるクラスではなく、要素をフェードインします。 – Matt

+0

本当に、この機能はjQueryコアでなければなりません。 –

3

これは達成しようとしていることですか? 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

これは基本的に私がやったことです – Andrew

関連する問題