回答編集履歴

2

サンプルコードを追加

2018/04/02 14:27

投稿

defghi1977
defghi1977

スコア4756

test CHANGED
@@ -1,3 +1,83 @@
1
1
  同じURLを参照する`iframe`要素を2つ重ねておいて`opacity`でクロスフェードさせるのはどうだろう?
2
2
 
3
3
  定期的に交互に`iframe`の内容をリロードするようにすれば、ぱっと見気が付かないのでは?
4
+
5
+ ```CSS
6
+
7
+ body{
8
+
9
+ margin: 0;
10
+
11
+ }
12
+
13
+ iframe{
14
+
15
+ position: absolute;
16
+
17
+ width: 100%;
18
+
19
+ height: 100%;
20
+
21
+ border: none;
22
+
23
+ transition: opacity 2s linear 0s;
24
+
25
+ }
26
+
27
+ iframe.on{
28
+
29
+ opacity: 1;
30
+
31
+ z-index: 1;
32
+
33
+ }
34
+
35
+ iframe.off{
36
+
37
+ opacity: 0;
38
+
39
+ z-index: 0;
40
+
41
+ }
42
+
43
+ ```
44
+
45
+ ```HTML
46
+
47
+ <iframe class="on" src="http://jsrun.it/assets/C/0/h/W/C0hWw.png" scrolling="no" style="background-color:yellow;" onload="swap()"></iframe>
48
+
49
+ <iframe class="off" src="http://jsrun.it/assets/I/8/W/E/I8WEq.png" scrolling="no" style="background-color:red;" onload="swap()"></iframe>
50
+
51
+ ```
52
+
53
+ ```JavaScript
54
+
55
+ "use strict";
56
+
57
+ window.onload = e => {
58
+
59
+ (function reload(){
60
+
61
+ document.querySelector(".off").contentWindow.location.reload(true);
62
+
63
+ setTimeout(reload, 3000);
64
+
65
+ })();
66
+
67
+ const iframes = [].slice.call(document.querySelectorAll("iframe"));
68
+
69
+ window.swap = e =>
70
+
71
+ iframes.forEach(iframe => iframe.className = iframe.className == "on" ? "off" : "on");
72
+
73
+ }
74
+
75
+ ```
76
+
77
+ 動作サンプル
78
+
79
+ [http://jsdo.it/defghi1977/sXVK](http://jsdo.it/defghi1977/sXVK)
80
+
81
+ NOTE:
82
+
83
+ `iframe`要素の内容を交互にリロードしていることがはっきりするように背景色と画像を変えていますが, 実際には同じ内容とします.

1

コメントを追加

2018/04/02 14:26

投稿

defghi1977
defghi1977

スコア4756

test CHANGED
@@ -1 +1,3 @@
1
1
  同じURLを参照する`iframe`要素を2つ重ねておいて`opacity`でクロスフェードさせるのはどうだろう?
2
+
3
+ 定期的に交互に`iframe`の内容をリロードするようにすれば、ぱっと見気が付かないのでは?