回答編集履歴

2

誤りがあったので修正

2019/04/02 10:10

投稿

researcher
researcher

スコア87

test CHANGED
@@ -1,55 +1,275 @@
1
- 下記のように修正すれば良いかと思います
2
-
3
-
4
-
5
- ```HTML
6
-
7
- // 変更前
8
-
9
- <a href="#tabpage1">タブ1</a>
10
-
11
- <a href="#tabpage2">タブ2</a>
12
-
13
- // 変更後
14
-
15
- <a id="tabpage1" href="#tabpage1">タブ1</a>
16
-
17
- <a id="tabpage2" href="#tabpage2">タブ2</a>
1
+ 下記のようにすれば良いかと思います
2
+
3
+ 一応、コメントアウトで変更箇所を示してあります
4
+
5
+
6
+
7
+ ```HTML5
8
+
9
+ <html lang="ja">
10
+
11
+ <head>
12
+
13
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
14
+
15
+ <title>タブサンプル</title>
16
+
17
+ <meta name="viewport" content="initial-scale=1">
18
+
19
+ </head>
20
+
21
+ <body>
22
+
23
+
24
+
25
+ <h1>タブサンプル</h1>
26
+
27
+
28
+
29
+
30
+
31
+
32
+
33
+ <!-- ================ -->
34
+
35
+ <!-- ▼タブを作るHTML -->
36
+
37
+ <!-- ================ -->
38
+
39
+ <div class="sample-area">
40
+
41
+
42
+
43
+ <p id="tabcontrol">
44
+
45
+ <!-- idを追加。0スタートに変更 -->
46
+
47
+ <!-- <a href="#tabpage1">タブ1</a>
48
+
49
+ <a href="#tabpage2">タブ2</a> -->
50
+
51
+ <a id="tabpage0" href="#tabpage0">タブ1</a>
52
+
53
+ <a id="tabpage1" href="#tabpage1">タブ2</a>
54
+
55
+ </p>
56
+
57
+ <div id="tabbody">
58
+
59
+ <!-- <div id="tabpage1">タブ1の中身<br><h2>■CSS3:</h2><ul><li>テスト1</li><li>テスト2</li><li>テスト3</li><li>テスト4</li><li>テスト5</li></ul></div>
60
+
61
+ <div id="tabpage2">タブ2の中身<br><h2>■JavaScript:</h2><ul><li>テスト6</li><li>テスト7</li><li>テスト8</li><li>テスト9</li><li>テスト10</li></ul></div> -->
62
+
63
+ <!-- id削除 -->
64
+
65
+ <div id="">タブ1の中身<br><h2>■CSS3:</h2><ul><li>テスト1</li><li>テスト2</li><li>テスト3</li><li>テスト4</li><li>テスト5</li></ul></div>
66
+
67
+ <div id="">タブ2の中身<br><h2>■JavaScript:</h2><ul><li>テスト6</li><li>テスト7</li><li>テスト8</li><li>テスト9</li><li>テスト10</li></ul></div>
68
+
69
+ </div>
70
+
71
+
72
+
73
+ </div>
74
+
75
+
76
+
77
+ <style type="text/css">
78
+
79
+
80
+
81
+ /* ▼タブ領域全体 */
82
+
83
+ #tabcontrol {
84
+
85
+ margin: 0;
86
+
87
+ }
88
+
89
+
90
+
91
+ /* ▼タブ */
92
+
93
+ #tabcontrol a {
94
+
95
+ display: inline-block; /* インラインブロック化 */
96
+
97
+ border-width: 1px 1px 0px 1px; /* 下以外の枠線を引く */
98
+
99
+ border-color: black; /* 枠線の色:黒色 */
100
+
101
+ border-radius: 0.75em 0.75em 0px 0px; /* 枠線の左上角と右上角だけを丸く */
102
+
103
+ padding: 0.75em 3.5em; /* 内側の余白 */
104
+
105
+ text-decoration: none; /* リンクの下線を消す */
106
+
107
+ color: black; /* 文字色:黒色 */
108
+
109
+ background-color: white; /* 背景色:白色 */
110
+
111
+ font-weight: bold; /* 太字 */
112
+
113
+ position: relative; /* JavaScriptでz-indexを調整するために必要 */
114
+
115
+ }
116
+
117
+
118
+
119
+ /* ▼タブの中身 */
120
+
121
+ #tabbody div {
122
+
123
+ display: none; /* 追加 */
124
+
125
+ max-width: 100%;
126
+
127
+ margin-top: -1px; /* 上側にあるタブと1pxだけ重ねるために「-1px」を指定 */
128
+
129
+ padding: 1em; /* 内側の余白 */
130
+
131
+ background-color: white; /* 背景色:白色 */
132
+
133
+ position: relative; /* z-indexを調整するために必要 */
134
+
135
+ z-index: 0; /* 重なり順序を「最も背面」にするため */
136
+
137
+ min-height: 5em; /* 最低の高さが必要なら指定(不要なら省略可) */
138
+
139
+ }
140
+
141
+
142
+
143
+ /* ▼タブの配色 */
144
+
145
+ /* 変更 */
146
+
147
+ /* #tabcontrol a:nth-child(1) { background-color: #BBFFFF; }
148
+
149
+ #tabcontrol a:nth-child(2) { background-color: #FFCCFF; } */
150
+
151
+ #tabpage0:target{ background-color: #BBFFFF;}
152
+
153
+ #tabpage1:target{background-color: #FFCCFF;}
154
+
155
+ </style>
156
+
157
+
158
+
159
+ <script type="text/javascript">
160
+
161
+
162
+
163
+ // 対象の要素を得る
164
+
165
+ var tabs = document.getElementById('tabcontrol').getElementsByTagName('a');
166
+
167
+ var pages = document.getElementById('tabbody').getElementsByTagName('div');
168
+
169
+
170
+
171
+ function changeTab() {
172
+
173
+ // ▼href属性値から対象のid名を抜き出す
174
+
175
+ // 変更
176
+
177
+ // var targetid = this.href.substring(this.href.indexOf('#')+1,this.href.length);
178
+
179
+ let targetid = this.href.slice(-1);
180
+
181
+
182
+
183
+ // ▼指定のページだけを表示する
184
+
185
+ // 変更
186
+
187
+ // for(var i=0; i<pages.length; i++) {
188
+
189
+ // if( pages[i].id != targetid ) {
190
+
191
+ // pages[i].style.display = "none";
192
+
193
+ // }
194
+
195
+ // else {
196
+
197
+ // pages[i].style.display = "block";
198
+
199
+ // }
200
+
201
+ // }
202
+
203
+ for(var i=0; i<pages.length; i++) {
204
+
205
+ if( i != targetid ) {
206
+
207
+ pages[i].style.display = "block";
208
+
209
+ }
210
+
211
+ else {
212
+
213
+ pages[i].style.display = "none";
214
+
215
+ }
216
+
217
+ }
218
+
219
+
220
+
221
+ // ▼クリックされたタブを前面に表示する
222
+
223
+ for(var i=0; i<tabs.length; i++) {
224
+
225
+ tabs[i].style.zIndex = "0";
226
+
227
+ }
228
+
229
+ this.style.zIndex = "10";
230
+
231
+
232
+
233
+ // 削除
234
+
235
+ // ▼ページ遷移しないようにfalseを返す
236
+
237
+ // return false;
238
+
239
+ }
240
+
241
+
242
+
243
+ // すべてのタブに対して、クリック時にchangeTab関数が実行されるよう指定する
244
+
245
+ for(var i=0; i<tabs.length; i++) {
246
+
247
+ tabs[i].onclick = changeTab;
248
+
249
+ }
250
+
251
+
252
+
253
+ // 最初は先頭のタブを選択
254
+
255
+ // 変更
256
+
257
+ // tabs[0].onclick();
258
+
259
+ window.location.href = "#tabpage0"
260
+
261
+ pages[0].style.display = "block";
262
+
263
+
264
+
265
+ </script>
266
+
267
+
268
+
269
+ </body>
270
+
271
+ </html>
272
+
273
+
18
274
 
19
275
  ```
20
-
21
-
22
-
23
- ```CSS
24
-
25
- // 変更前
26
-
27
- #tabcontrol a:nth-child(1) { background-color: #BBFFFF; }
28
-
29
- #tabcontrol a:nth-child(2) { background-color: #FFCCFF; }
30
-
31
- // 変更後
32
-
33
- #tabpage1:target{ background-color: #BBFFFF;}
34
-
35
- #tabpage2:target{background-color: #FFCCFF;}
36
-
37
- ```
38
-
39
-
40
-
41
- JS
42
-
43
- ---
44
-
45
- // changeTabのreturn falseを消す
46
-
47
-
48
-
49
- // 変更前
50
-
51
- tabs[0].onclick()
52
-
53
- // 変更後
54
-
55
- window.location.href = "#tabpage1"

1

見にくかったので修正

2019/04/02 10:09

投稿

researcher
researcher

スコア87

test CHANGED
@@ -4,13 +4,13 @@
4
4
 
5
5
  ```HTML
6
6
 
7
- 変更前
7
+ // 変更前
8
8
 
9
9
  <a href="#tabpage1">タブ1</a>
10
10
 
11
11
  <a href="#tabpage2">タブ2</a>
12
12
 
13
- 変更後
13
+ // 変更後
14
14
 
15
15
  <a id="tabpage1" href="#tabpage1">タブ1</a>
16
16
 
@@ -22,13 +22,13 @@
22
22
 
23
23
  ```CSS
24
24
 
25
- 変更前
25
+ // 変更前
26
26
 
27
27
  #tabcontrol a:nth-child(1) { background-color: #BBFFFF; }
28
28
 
29
29
  #tabcontrol a:nth-child(2) { background-color: #FFCCFF; }
30
30
 
31
- 変更後
31
+ // 変更後
32
32
 
33
33
  #tabpage1:target{ background-color: #BBFFFF;}
34
34
 
@@ -42,6 +42,14 @@
42
42
 
43
43
  ---
44
44
 
45
- changeTabのreturn falseを消す
45
+ // changeTabのreturn falseを消す
46
46
 
47
+
48
+
49
+ // 変更前
50
+
51
+ tabs[0].onclick()
52
+
53
+ // 変更後
54
+
47
- tabs[0].onclick()をwindow.location.href = "#tabpage1"にする
55
+ window.location.href = "#tabpage1"