ライブラリを使わず、JSで画像をフェードインさせてみる
ライブラリを使わず、JSで画像をフェードインさせてみる:
2パターン書いてみました。
まず1つ目
実は上記のfadeIn関数は下の記事から関係のない部分を省かせていただき、使わせていただきました。
「脱jQuery」 生JSで.fadeIn()のように要素をフェードインで表示する
ありがてぇ!
上記のJSでOpacityを弄るのは、正直パフォーマンスが良くない・・・
というわけで、Styleの値の書き換えだけJSにまかせて、アニメーションはCSSにさせる。
HTMLは共通です
なんだ、これだけでFadeInできるのか。
これなら簡単にFadeOutも実装できるし、CSS3はやっぱり凄いなぁ。
2パターン書いてみました。
まず1つ目
jsの再起を使ってフェードインさせる
HTML
<!-- 必要最低限 --> <body> <img id="image" src="https://placehold.jp/150x150.png" alt="画像" style="opacity: 0;"> </body>
JavaScript
function fadeIn(node) { var start = performance.now(); requestAnimationFrame(function tick(timestamp) { var easing = (timestamp - start) / 300; node.style.opacity = Math.min(easing, 1); if (easing < 1) { // 再起 requestAnimationFrame(tick); } else { node.style.opacity = ''; } }); } window.onload = function() { fadeIn(document.getElementById("image")); }
「脱jQuery」 生JSで.fadeIn()のように要素をフェードインで表示する
ありがてぇ!
CSSでアニメーションさせる
上記のJSでOpacityを弄るのは、正直パフォーマンスが良くない・・・というわけで、Styleの値の書き換えだけJSにまかせて、アニメーションはCSSにさせる。
HTMLは共通です
CSS
img { transition: all 0.5s; opacity: 0; }
JavaScript
window.onload = function() { var image = document.getElementById("image"); image.style.opacity = 1; }
これなら簡単にFadeOutも実装できるし、CSS3はやっぱり凄いなぁ。
コメント
コメントを投稿