teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

調整

2019/07/17 11:09

投稿

yambejp
yambejp

スコア117820

answer CHANGED
@@ -27,4 +27,24 @@
27
27
  <div class="dummy"></div>
28
28
  <div id="animation01"><img src="1.jpg"></div>
29
29
  <div class="dummy"></div>
30
+ ```
31
+
32
+ # 調整
33
+ 画像が置き換わったときだけ書き換えればよいかも
34
+
35
+ ```javascript
36
+ $(window).on('pageshow',function (){
37
+ var imgs=[];
38
+ imgs[0]=new Image();imgs[0].src="1.jpg";
39
+ imgs[1]=new Image();imgs[1].src="1.gif";
40
+ var Pos01 = 600;
41
+ var Pos02 = 1000;
42
+ var pre="";
43
+ $(window).on('scroll',function (){
44
+ var scroll = $(this).scrollTop();
45
+ var src=(scroll > Pos01 && scroll < Pos02 )?imgs[1].src:imgs[0].src;
46
+ if(pre!==src) $("#animation01 img").attr("src",src);
47
+ pre=src;
48
+ });
49
+ });
30
50
  ```

1

調整

2019/07/17 11:09

投稿

yambejp
yambejp

スコア117820

answer CHANGED
@@ -1,2 +1,30 @@
1
1
  gifアニメの1枚めだけ別途ファイルを用意しておいて
2
- スクロールでファイルを入れ替えてやればよいのでは?
2
+ スクロールでファイルを入れ替えてやればよいのでは?
3
+
4
+ # sample
5
+ アニメーションgifはとりあえず置いておいて
6
+ 特定の範囲でimgのsrcを切り替えるならこんな感じ
7
+ キャッシュを明確化するためにimgsを設定してあります
8
+
9
+ ページのレンダリングが終わらないと位置が確定しないので一応pageshowを前提にしてあります
10
+ ```javascript
11
+ <style>
12
+ .dummy{background-Color:gray;height:999px}
13
+ </style>
14
+ <script>
15
+ $(window).on('pageshow',function (){
16
+ var imgs=[];
17
+ imgs[0]=new Image();imgs[0].src="1.jpg";
18
+ imgs[1]=new Image();imgs[1].src="2.jpg";
19
+ var Pos01 = 600;
20
+ var Pos02 = 1000;
21
+ $(window).on('scroll',function (){
22
+ var scroll = $(this).scrollTop();
23
+ $("#animation01 img").attr("src",(scroll > Pos01 && scroll < Pos02 )?imgs[1].src:imgs[0].src );
24
+ });
25
+ });
26
+ </script>
27
+ <div class="dummy"></div>
28
+ <div id="animation01"><img src="1.jpg"></div>
29
+ <div class="dummy"></div>
30
+ ```