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

質問編集履歴

3

別の実装方法の追記

2017/12/28 09:10

投稿

Nerf.this
Nerf.this

スコア14

title CHANGED
File without changes
body CHANGED
@@ -69,4 +69,42 @@
69
69
 
70
70
  ###発生している問題・エラーメッセージ
71
71
  各タブの初回クリック時に、コンテンツ部分一瞬真っ白になる(全て`display: none;`状態)
72
- 2回目からは一瞬真っ白になることなくスムーズに表示される
72
+ 2回目からは一瞬真っ白になることなくスムーズに表示される
73
+
74
+ ###追記(上手くいった実装方法。しかし、こちらの場合フェードインの実装方法がわかりません。)
75
+ ```JavaScript
76
+ //対象要素取得
77
+ var tabs = document.getElementById('tabs').getElementsByTagName('div');
78
+ var pages = document.getElementById('contents').getElementsByTagName('div');
79
+
80
+ //タブ切り替え
81
+ function changeTab() {
82
+ var targetid = this.href.substring(this.href.indexOf('#')+1,this.href.length);
83
+
84
+ //指定のタブページだけを表示する
85
+ for(var i=0; i<pages.length; i++) {
86
+ if( pages[i].id != targetid ) {
87
+ pages[i].style.display = "none";
88
+ }else {
89
+ pages[i].style.display = "block";
90
+ }
91
+ }
92
+
93
+ //クリックしたタブを前面に表示する
94
+ for(var i=0; i<tabs.length; i++) {
95
+ tabs[i].style.zIndex = "0";
96
+ }
97
+ this.style.zIndex = "10";
98
+
99
+ //ページ遷移しないようにfalseを返す
100
+ return false;
101
+ }
102
+
103
+ //すべてのタブに対して、クリック時にchangeTab関数が実行されるよう指定する
104
+ for(var i=0; i<tabs.length; i++) {
105
+ tabs[i].onclick = changeTab;
106
+ }
107
+
108
+ //最初は先頭のタブを選択しておく
109
+ tabs[0].onclick();
110
+ ```

2

タグの修正

2017/12/28 09:10

投稿

Nerf.this
Nerf.this

スコア14

title CHANGED
File without changes
body CHANGED
File without changes

1

タグに誤りがあったため、適切なタグに再設定しました。

2017/12/28 08:53

投稿

Nerf.this
Nerf.this

スコア14

title CHANGED
File without changes
body CHANGED
File without changes