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

回答編集履歴

2

サンプルコードを追加

2018/04/02 14:27

投稿

defghi1977
defghi1977

スコア4756

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

1

コメントを追加

2018/04/02 14:26

投稿

defghi1977
defghi1977

スコア4756

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