2011-10-21 6 views
2

私は、jQueryで要素を "フラッシュ"にする方法についてthis questionを読んでいましたが、最も一般的な回答はjQueryUIに依存していました。 jQueryUIを使わずに同様の方法で要素の背景色をフラッシュする方法はありますか?jQueryUIのオーバヘッドなしで要素をフラッシュしますか?

+3

この "フラッシュ" を達成するために、あなただけのUIエフェクトコアおよびUI効果を必要とします。この理由からjQuery UIは使用されるように設計されているため、使用していないウィジェットのコードはすべて必要ありません。 – gnarf

答えて

2

各サイクルで少しの遅延を伴うforループを含む関数を書くことができます。ループの各サイクルで、色の値を増減して背景として設定することができます。これにより、アニメーションと同じ効果が得られます。

+1

遅延を行うにはsetInterval()またはsetTimeout()を使用する必要があります。 UIをブロックしないようにします。 – JeffSahol

-2

そのページの回答を調べると、jQuery workaroundへのリンクがあり、jQuery要素の.highlight()という関数を呼び出すことができます。 jQueryは必要ですが、jQueryUIは必要ありません。

+1

これがあなた自身の質問に答えるなら、あなたはまだそのようにマークすることができます。また、jquery uiが "effects.js"のリレーを使ってその作業を行うと思います。 jqueryがその上でそれをしなかった場合、あなたはエフェクトを見るかもしれません。 – Eonasdan

1

このようなものはうまくいくはずです(私は願っています)。

function flash($element, times) { 
    var colors = ['#fff', '#000']; 
    $element.css('background-color', colors[times % colors.length]); 
    if (times === 0) return; 
    setTimeout(function() { 
    flash($element, times - 1); 
    }, 500); 
} 

このような要素にそれを使用します。flash($('#some_element'), 5)

0

一つの方法:

setInterval(function(){ 
    $('#hello').css('background-color', 'red'); 
}, 100); 

setInterval(function(){ 
    $('#hello').css('background-color', 'green'); 
}, 150); 

DEMO

+0

悪い方法。これらの2つの間隔は、互いに容易に同期しなくなります。ブール値などを使ってエフェクトを切り替えるだけの方が良いでしょう。 – Clox

関連する問題