
引用:
https://ics.media/entry/250221/
GTMを使って画像をふわっと表示させる方法
ブログの画像をスクロールに合わせて「スッ…」と浮かび上がらせる演出、おしゃれですよね。
今回は、個別の記事を編集することなく、GTMを使って一気に実装する手順を解説します。
動作の仕組み
JavaScriptの「Intersection Observer(交差監視)」という機能を使います。
画像が画面内に現れたことを検知
CSSクラスを付与して、不透明度(opacity)と位置(transform)を変化させる
という流れです。
GTMに設定するコード
GTMの「カスタムHTML」タグを作成し、以下のコードを貼り付けてください。
注意: すべての画像に適用されるため、ロゴやアイコンも対象になります。特定の画像だけにしたい場合は、querySelectorAll('img') の部分を調整してください。
<style> /* GTMから全画像にアニメーション準備を強制 */ .gtm-fade-target { opacity: 0; transform: translateY(20px); transition: opacity 1.0s ease-out, transform 1.0s ease-out; } /* 画面内に入った時に付与するクラス */ .gtm-fade-in { opacity: 1 !important; transform: translateY(0) !important; } </style> <script> (function() { // ページ内のすべてのimgタグを取得 var imgs = document.querySelectorAll('img'); // 各画像にアニメーション用のクラスを付与し、監視を開始 var observer = new IntersectionObserver(function(entries) { entries.forEach(function(entry) { if (entry.isIntersecting) { entry.target.classList.add('gtm-fade-in'); } }); }, { threshold: 0.1 }); imgs.forEach(function(img) { img.classList.add('gtm-fade-target'); // 準備用のクラスを付与 observer.observe(img); }); })(); </script>
GTMの設定手順
タグの新規作成: 「カスタムHTML」を選択し、上記のコードを貼り付け。
トリガーの設定: 「All Pages(ページビュー)」または、DOMツリーが完成した後の「DOM Ready」を選択するのがおすすめです。
プレビューと公開: 実際にブログをスクロールして、画像がふわっと出てきたら成功です!
まとめ
GTMを使えば、デザインの変更も一瞬で終わります。
transition: 1.0s の部分を 0.5s にすればもっとキビキビ動きますし、translateY を変えれば横から出すことも可能です。
自分好みにカスタマイズしてみてくださいね。