オープニングの gif アニメーションをフェードさせて、メニューと静的なロゴを表示することはできますか? GIFアニメーションが一度再生される時間があった後、フェードのタイミングが発生するようにします。次に、メニューと静的なロゴにクロスフェードします。ありがとう。
1 に答える
それは<img>
要素ですか?もしそうなら:
- 要素を削除する
<img>
と、ページがリフローし、ボタンが上に移動して「ギャップを埋める」ようになります。 - 使用する場合
display: none
、画像は表示されず、スペースを占有しません (ページは を削除したかのようにリフローします<img>
)。 - を使用する
visibility: hidden
と、<img>
は見えなくなりますが、所定の位置に留まります。ボタンは非表示の画像の下にとどまります。
要素を削除したり、JavaScript を使用してその CSS を編集したりするには、まず要素への参照を取得する必要があります。これを行う 1 つの方法は、 を指定してid
を使用することgetElementById
です。次に、そのスタイル プロパティを操作したり、DOM から削除したりできます。
gif アニメーションがいつ終了したかの検出について: JavaScript と通常の gif<img>
要素を使用してこれを検出する方法はありません。setTimeoutに依存する必要があります。読み込み時間は訪問者ごとに異なるため、画像の読み込みが完了したらタイムアウトを開始できます。
<img src="img/animation.gif" id="disappearing_image" />
var img = document.getElementyById('disappearing_image');
var runtime = 1200; // in milliseconds
img.onload = function() {
setTimeout(function() {
$(img).fadeOut("slow");
}, runtime);
img.onload = null;
};
id
これにより、指定された("disappearing_image")のイメージがruntime
ミリ秒後にフェードアウトします。
イベントが処理されたら、onload
ハンドラーを元に戻すことに注意してください。null
これは、Internet Explorer が最初に画像が読み込まれたときにこのイベントを発生させ、次にアニメーションのフレームごとに発生させるためです。
最後に 1 つ: ブラウザーが異なれば、アニメーション GIF の読み込み方法も異なる場合があります。たとえば、あるブラウザでは、アニメーションを開始する前にファイル全体をロードすることができますが、別のブラウザでは、ロード中に画像をonload
アニメーション化してから、再度トリガーしてアニメーション化することができます。問題が発生した場合は、イメージのプリロードを調べることができます(SO で「[javascript] preload img」を検索してください)。