2
私はボックスにフェードインしたいタイトルのテキストがあります。 その後、字幕がその下にフェードインする必要があります。 両方が表示されたら、それらはフェードアウトし、次のセットは同じ方法でフェードインする必要があります。jQueryでテキストのようなバナーをフェーディング
これは私が作成したものですが、ブラウザのCPU使用量が多くなると疑問が生じます。私の懸念の1つは、Javascriptの再帰深度でもあります。
私は、これはそれを行うための正しい方法であれば私の質問は(私もCSSとHTML http://jsfiddle.net/ukewY/1/とともに、jsfiddleに含まれています)次のコード
var no = 3;
function fadeText(id) {
// Fade in the text
$("#text" + id).animate({
opacity: 1,
left: '+=50'
}, 5000, function() {
// Upion completion, fade in subtext
$("#subtext" + id).animate({
opacity: 1,
}, 5000, function() {
// Upon completion, fade the text out and move it back
$("#subtext" + id).animate({
opacity: 0,
}, 1000, function() {
$("#text" + id).animate({
opacity: 0,
left: '+=200'
}, 3000, function() {
// Yet again upon completion, move the text back
$("#text" + id).css("left", "19%");
$("#subtext" + id).css("left", "10%")
fadeText((id % no) + 1);
});
});
});
});
}
$(document).ready(function() {
fadeText(1);
});
を持っています。またはこれを行うためのより良い、おそらく非再帰的な方法がある場合は、
PS。これはウェブサイトのバナーのため、人々がおそらくそれ以降に移動したので、id
が大きくなることを心配しません。
Brilliant!どうもありがとうございました。しかし、私はこれを次のように置き換えました: 'titleid =(titleid + 1)%$ text.length;' –
あなたがそのパーセント/モジュロ演算子で何をしているのか分かりませんでした。実際にうまく動作します。 if文より効率的ですか?なぜあなたは声明が好きではない、または別の理由があるのですか?これはtitleid =(titleid == 2)?0:titleid + 1;で1行で行うこともできます。しかし、私はそれがちょうど偽装if文だと思う。 – Grezzo
ええ、それはかなり主な理由です。 'if'節を使用することなくコード化することはできませんが、もしそれを防ぐことができれば、私はそれを違う方法で行います。それは通常は高速です:) –