回答編集履歴

2

画像

2024/11/06 05:02

投稿

yambejp
yambejp

スコア116487

test CHANGED
@@ -1,2 +1,45 @@
1
1
  [IntersectionObserver](https://developer.mozilla.org/ja/docs/Web/API/IntersectionObserver)で制御してはどうでしょうか?
2
2
  サムネイルを表示しておき、アニメーション開始のタイミングでsrcを置き換えるとか
3
+
4
+ # 参考
5
+ IntersectionObserverを使った画像の切り替え
6
+ ```html
7
+ <style>
8
+ .dummy{
9
+ background-Color:white;
10
+ height:80%;
11
+ }
12
+ .dummy:nth-child(odd){
13
+ background-Color:lightgray;
14
+ }
15
+ </style>
16
+ <script>
17
+ const crossing=()=>{
18
+ const observer = new IntersectionObserver(changes=>{
19
+ for (let change of changes) {
20
+ if(change.intersectionRatio == 1){
21
+ change.target.src=change.target.dataset.src;
22
+ }
23
+ }
24
+ });
25
+ document.querySelectorAll('.anime').forEach(target=>observer.observe(target));
26
+ }
27
+ window.addEventListener('pageshow',crossing);
28
+ window.addEventListener('scroll',crossing);
29
+ window.addEventListener('DOMContentLoaded',()=>{
30
+ document.querySelectorAll('img[data-src]').forEach(x=>{
31
+ const img=new Image();
32
+ img.src=x.dataset.src;
33
+ });
34
+ });
35
+ </script>
36
+ <body>
37
+ <div class="dummy">1</div>
38
+ <div class="dummy">2<img src="https://placehold.jp/f00/000/300x300.png?text=2-1" data-src="https://placehold.jp/000/f00/300x300.png?text=2-2" alt="2" class="anime"></div>
39
+ <div class="dummy">3<img src="https://placehold.jp/0f0/000/300x300.png?text=3-1" data-src="https://placehold.jp/000/0f0/300x300.png?text=3-2" alt="3" class="anime"></div>
40
+ <div class="dummy">4<img src="https://placehold.jp/f0f/000/300x300.png?text=4-1" data-src="https://placehold.jp/000/f0f/300x300.png?text=4-2" alt="4" class="anime"></div>
41
+ <div class="dummy">5</div>
42
+ <div class="dummy">6<img src="https://placehold.jp/fff/800/300x300.png?text=6-1" data-src="https://placehold.jp/800/fff/300x300.png?text=6-2" alt="6" class="anime"></div>
43
+ <div class="dummy">7<img src="https://placehold.jp/fff/080/300x300.png?text=7-1" data-src="https://placehold.jp/080/fff/300x300.png?text=7-2" alt="7" class="anime"></div>
44
+ <div class="dummy">8<img src="https://placehold.jp/fff/008/300x300.png?text=8-1" data-src="https://placehold.jp/008/fff/300x300.png?text=8-2" alt="8" class="anime"></div>
45
+ ```

1

調整

2024/11/06 04:06

投稿

yambejp
yambejp

スコア116487

test CHANGED
@@ -1 +1,2 @@
1
1
  [IntersectionObserver](https://developer.mozilla.org/ja/docs/Web/API/IntersectionObserver)で制御してはどうでしょうか?
2
+ サムネイルを表示しておき、アニメーション開始のタイミングでsrcを置き換えるとか