質問編集履歴

22

修正

2018/05/18 10:40

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -52,7 +52,7 @@
52
52
 
53
53
  <h1 class="logo"><a href="/">Site Name</a></h1>
54
54
 
55
- <!-- ドロワーメニューボタン -->
55
+ <!-- メニューボタン -->
56
56
 
57
57
  <p class="btn"><a href="#menu-btn">&#x2630;</a></p>
58
58
 
@@ -520,7 +520,7 @@
520
520
 
521
521
  <h1 class="logo"><a href="/">Site Name</a></h1>
522
522
 
523
- <!-- ドロワーメニューボタン -->
523
+ <!-- メニューボタン -->
524
524
 
525
525
  <p class="btn"><a href="#menu-btn">&#x2630;</a></p>
526
526
 

21

修正

2018/05/18 10:40

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -20,7 +20,7 @@
20
20
 
21
21
  ###発生している問題
22
22
 
23
- 0. メニューボタンをクリック又はフォーカスしている状態でEnterキーを押すと1番初めの第1階層のli a(hoge1)にフォーカスしなければいけないのに、1番初めの第2階層の1番最後のli a(fuga2)にフォーカスが飛んでしまう。
23
+ 0. メニューボタンフォーカスしている状態でTabキーを押すと1番初めの第1階層のli a(hoge1)にフォーカスしなければいけないのに、1番初めの第2階層の1番最後のli a(fuga2)にフォーカスが飛んでしまう。
24
24
 
25
25
  (移動順序がおかしい)
26
26
 
@@ -42,7 +42,7 @@
42
42
 
43
43
  ナビゲーションの1番初め(hoge1)がサブナビ(第2階層)を持たない場合は、下記の記述でも上記の3つの問題は発生しませんでした。
44
44
 
45
- ですが、ナビゲーションの1番初めの要素(hoge1)がサブナビ(第2階層)を持っていても持っていなくても上記の問題が出ないよう実装しなければけないので、どう修正すれば問題を解消出来るかご教示お願いします。
45
+ ですが、ナビゲーションの1番初めの要素(hoge1)がサブナビ(第2階層)を持っていても持っていなくても上記の問題が出ないよう実装しいので、どう修正すれば問題を解消出来るかご教示お願いします。
46
46
 
47
47
 
48
48
 
@@ -58,13 +58,13 @@
58
58
 
59
59
  <!-- ナビゲーションメニュー -->
60
60
 
61
- <nav id="navigation" role="navigation">
61
+ <nav id="navigation">
62
62
 
63
63
  <ul>
64
64
 
65
65
  <li><a href="#">hoge1</a>
66
66
 
67
- <ul aria-label="submenu">
67
+ <ul>
68
68
 
69
69
  <li><a href="#">fuga1</a></li>
70
70
 
@@ -76,7 +76,7 @@
76
76
 
77
77
  <li><a href="#">hoge2</a>
78
78
 
79
- <ul aria-label="submenu">
79
+ <ul>
80
80
 
81
81
  <li><a href="#">fuga1</a></li>
82
82
 
@@ -88,7 +88,7 @@
88
88
 
89
89
  <li><a href="#">hoge4</a>
90
90
 
91
- <ul aria-label="submenu">
91
+ <ul>
92
92
 
93
93
  <li><a href="#">fuga1</a></li>
94
94
 
@@ -302,12 +302,6 @@
302
302
 
303
303
  #navigation {
304
304
 
305
- position: absolute;
306
-
307
- top: -8px;
308
-
309
- right: -1px;
310
-
311
305
  width: 44%;
312
306
 
313
307
  padding: 25px 0 20px;
@@ -466,12 +460,6 @@
466
460
 
467
461
  #navigation {
468
462
 
469
- position: absolute;
470
-
471
- top: -8px;
472
-
473
- right: -1px;
474
-
475
463
  width: 44%;
476
464
 
477
465
  padding: 25px 0 20px;
@@ -538,13 +526,13 @@
538
526
 
539
527
  <!-- ナビゲーションメニュー -->
540
528
 
541
- <nav id="navigation" role="navigation">
529
+ <nav id="navigation">
542
530
 
543
531
  <ul>
544
532
 
545
533
  <li><a href="#">hoge1</a>
546
534
 
547
- <ul aria-label="submenu">
535
+ <ul>
548
536
 
549
537
  <li><a href="#">fuga1</a></li>
550
538
 
@@ -556,7 +544,7 @@
556
544
 
557
545
  <li><a href="#">hoge2</a>
558
546
 
559
- <ul aria-label="submenu">
547
+ <ul>
560
548
 
561
549
  <li><a href="#">fuga1</a></li>
562
550
 
@@ -568,7 +556,7 @@
568
556
 
569
557
  <li><a href="#">hoge4</a>
570
558
 
571
- <ul aria-label="submenu">
559
+ <ul>
572
560
 
573
561
  <li><a href="#">fuga1</a></li>
574
562
 

20

修正

2018/05/18 10:39

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -626,10 +626,6 @@
626
626
 
627
627
 
628
628
 
629
- // At start of navigation block, refocus close button on SHIFT+TAB
630
-
631
-
632
-
633
629
  $('#navigation li:first a').on('keydown', function(e) {
634
630
 
635
631
  if (e.keyCode === 9) {

19

修正

2018/05/18 09:48

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,8 +1,6 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
- ウインドウサイズが1151px以下の時は、ドロワーメニューになるので
4
-
5
- キーボード移動(Tabキー又はShift+Tab)時のフォーカスがメニューボタンとナビゲーションメニュー内だけの移動にし、
3
+ ウインドウサイズが1151px以下の時は、キーボード移動(Tabキー又はShift+Tab)時のフォーカスがメニューボタンとナビゲーションメニュー内だけの移動にし、
6
4
 
7
5
  Tabキーを押したときの移動順序は、メニューボタン→ナビゲーションメニュー(第1階層→第2階層→第1階層)→メニューボタン→ナビゲーションと回る。
8
6
 
@@ -22,7 +20,7 @@
22
20
 
23
21
  ###発生している問題
24
22
 
25
- 0. メニューボタンをクリック又はフォーカスしている状態でEnterキーを押すとメニューが開き(aria-expanded="true")次にTabキーを押すと1番初めの第1階層のli a(hoge1)にフォーカスしなければいけないのに、1番初めの第2階層の1番最後のli a(fuga2)にフォーカスが飛んでしまう。
23
+ 0. メニューボタンをクリック又はフォーカスしている状態でEnterキーを押すと1番初めの第1階層のli a(hoge1)にフォーカスしなければいけないのに、1番初めの第2階層の1番最後のli a(fuga2)にフォーカスが飛んでしまう。
26
24
 
27
25
  (移動順序がおかしい)
28
26
 
@@ -40,12 +38,6 @@
40
38
 
41
39
 
42
40
 
43
- 0. ~~1152px以上にリサイズした時(リロード時は問題ない)にフォーカスが第2階層(サブメニュー)に当たらない。~~
44
-
45
- これはドロップダウンメニューのJSが原因だという事がわかりました。
46
-
47
-
48
-
49
41
  ###試した事
50
42
 
51
43
  ナビゲーションの1番初め(hoge1)がサブナビ(第2階層)を持たない場合は、下記の記述でも上記の3つの問題は発生しませんでした。
@@ -62,7 +54,7 @@
62
54
 
63
55
  <!-- ドロワーメニューボタン -->
64
56
 
65
- <p class="btn"><a href="#navigation" aria-expanded="true">&#x2630;</a></p>
57
+ <p class="btn"><a href="#menu-btn">&#x2630;</a></p>
66
58
 
67
59
  <!-- ナビゲーションメニュー -->
68
60
 
@@ -128,78 +120,6 @@
128
120
 
129
121
  ```JavaScript
130
122
 
131
- $('[href="#navigation"]').attr({
132
-
133
- 'aria-expanded': 'false'
134
-
135
- });
136
-
137
-
138
-
139
- $('.wrap').attr({
140
-
141
- 'data-nav-visible': 'false'
142
-
143
- });
144
-
145
-
146
-
147
-
148
-
149
- var openMenu = function() {
150
-
151
- $('.wrap').attr({
152
-
153
- 'data-nav-visible': 'true'
154
-
155
- });
156
-
157
- $('[href="#navigation"]').attr({
158
-
159
- 'aria-expanded': 'true'
160
-
161
- })
162
-
163
- $('[href="#navigation"]').text('\u00D7');
164
-
165
- return false;
166
-
167
- }
168
-
169
-
170
-
171
- var closeMenu = function() {
172
-
173
- $('.wrap').attr({
174
-
175
- 'data-nav-visible': 'false'
176
-
177
- });
178
-
179
- $('[href="#navigation"]').attr({
180
-
181
- 'aria-expanded': 'false'
182
-
183
- });
184
-
185
- $('[href="#navigation"]').text('\u2630');
186
-
187
- return false;
188
-
189
- }
190
-
191
-
192
-
193
- $('[href="#navigation"]').on('click', function(e) {
194
-
195
- e.preventDefault();
196
-
197
- $(this).attr('aria-expanded') == 'true' ? closeMenu() : openMenu();
198
-
199
- });
200
-
201
-
202
-
203
123
  $(window).on('load resize', function(){
204
124
 
205
125
  if ($(window).width() <= 1151) { //ウインドウサイズが1151px以下ならば
@@ -214,7 +134,7 @@
214
134
 
215
135
  e.preventDefault();
216
136
 
217
- $('[href="#navigation"]').focus();
137
+ $('[href="#menu-btn"]').focus();
218
138
 
219
139
  }
220
140
 
@@ -232,7 +152,7 @@
232
152
 
233
153
  e.preventDefault();
234
154
 
235
- $('[href="#navigation"]').focus();
155
+ $('[href="#menu-btn"]').focus();
236
156
 
237
157
  }
238
158
 
@@ -242,31 +162,17 @@
242
162
 
243
163
 
244
164
 
245
-
165
+ } else {
246
-
166
+
167
+
168
+
247
- $('[aria-expanded]').on('keydown', function(e) {
169
+ $('#navigation li:last a').on('keydown', function(e) {
248
170
 
249
171
  if (e.keyCode === 9) {
250
172
 
251
- if ($(this).attr('aria-expanded') == 'true') {
252
-
253
- if (!e.shiftKey) {
173
+ if (!e.shiftKey) {
254
-
174
+
255
- e.preventDefault();
175
+ $(this).blur();
256
-
257
- $('#navigation li:first a').focus();
258
-
259
- } else {
260
-
261
- if (e.shiftKey) {
262
-
263
- e.preventDefault();
264
-
265
- $('#main').focus();
266
-
267
- }
268
-
269
- }
270
176
 
271
177
  }
272
178
 
@@ -276,6 +182,472 @@
276
182
 
277
183
 
278
184
 
185
+
186
+
187
+ $('#navigation li:first a').on('keydown', function(e) {
188
+
189
+ if (e.keyCode === 9) {
190
+
191
+ if (e.shiftKey) {
192
+
193
+ e.preventDefault();
194
+
195
+ $('.logo a').focus();
196
+
197
+ }
198
+
199
+ }
200
+
201
+ });
202
+
203
+
204
+
205
+
206
+
207
+ }
208
+
209
+ });
210
+
211
+
212
+
213
+ ```
214
+
215
+ ```CSS
216
+
217
+ .wrap {
218
+
219
+ max-width: 1170px;
220
+
221
+ margin: 0 auto;
222
+
223
+ padding: 3%;
224
+
225
+ }
226
+
227
+
228
+
229
+ .btn {
230
+
231
+ display: none;
232
+
233
+ }
234
+
235
+
236
+
237
+ nav ul {
238
+
239
+ list-style: none;
240
+
241
+ margin-left: 190px;
242
+
243
+ padding: 0;
244
+
245
+ }
246
+
247
+
248
+
249
+ #navigation ul ul {
250
+
251
+ margin: 10px 0 0;
252
+
253
+ }
254
+
255
+
256
+
257
+ #navigation ul ul li {
258
+
259
+ float: none;
260
+
261
+ }
262
+
263
+ #navigation li {
264
+
265
+ float: left;
266
+
267
+ margin-left: 5%;
268
+
269
+ width: 12%;
270
+
271
+ }
272
+
273
+
274
+
275
+ #main {
276
+
277
+ clear: both;
278
+
279
+ margin-top: 180px
280
+
281
+ }
282
+
283
+
284
+
285
+ /*-- smaller than 1165px --*/
286
+
287
+ @media screen and (max-width: 1165px) {
288
+
289
+
290
+
291
+ .btn {
292
+
293
+ display: block;
294
+
295
+ width: 30%;
296
+
297
+ text-align: right;
298
+
299
+ }
300
+
301
+
302
+
303
+ #navigation {
304
+
305
+ position: absolute;
306
+
307
+ top: -8px;
308
+
309
+ right: -1px;
310
+
311
+ width: 44%;
312
+
313
+ padding: 25px 0 20px;
314
+
315
+ }
316
+
317
+
318
+
319
+ #navigation ul {
320
+
321
+ margin: 15px 0 0;
322
+
323
+ }
324
+
325
+
326
+
327
+ #navigation ul li {
328
+
329
+ float: none;
330
+
331
+ }
332
+
333
+
334
+
335
+ #navigation ul ul {
336
+
337
+ display: block;
338
+
339
+ padding-left: 1.12em;
340
+
341
+ }
342
+
343
+
344
+
345
+ #navigation ul ul li {
346
+
347
+ margin: 0;
348
+
349
+ }
350
+
351
+
352
+
353
+ }
354
+
355
+
356
+
357
+
358
+
359
+ ```
360
+
361
+
362
+
363
+ 全体のコード
364
+
365
+ ```html
366
+
367
+ <!DOCTYPE html>
368
+
369
+ <html lang="ja">
370
+
371
+ <head>
372
+
373
+ <meta charset="UTF-8" />
374
+
375
+ <meta name="viewport" content="width=device-width">
376
+
377
+ <title>test</title>
378
+
379
+ <style type="text/css">
380
+
381
+ .wrap {
382
+
383
+ max-width: 1170px;
384
+
385
+ margin: 0 auto;
386
+
387
+ padding: 3%;
388
+
389
+ }
390
+
391
+
392
+
393
+ .btn {
394
+
395
+ display: none;
396
+
397
+ }
398
+
399
+
400
+
401
+ nav ul {
402
+
403
+ list-style: none;
404
+
405
+ margin-left: 190px;
406
+
407
+ padding: 0;
408
+
409
+ }
410
+
411
+
412
+
413
+ #navigation ul ul {
414
+
415
+ margin: 10px 0 0;
416
+
417
+ }
418
+
419
+
420
+
421
+ #navigation ul ul li {
422
+
423
+ float: none;
424
+
425
+ }
426
+
427
+ #navigation li {
428
+
429
+ float: left;
430
+
431
+ margin-left: 5%;
432
+
433
+ width: 12%;
434
+
435
+ }
436
+
437
+
438
+
439
+ #main {
440
+
441
+ clear: both;
442
+
443
+ margin-top: 180px
444
+
445
+ }
446
+
447
+
448
+
449
+ /*-- smaller than 1165px --*/
450
+
451
+ @media screen and (max-width: 1165px) {
452
+
453
+
454
+
455
+ .btn {
456
+
457
+ display: block;
458
+
459
+ width: 30%;
460
+
461
+ text-align: right;
462
+
463
+ }
464
+
465
+
466
+
467
+ #navigation {
468
+
469
+ position: absolute;
470
+
471
+ top: -8px;
472
+
473
+ right: -1px;
474
+
475
+ width: 44%;
476
+
477
+ padding: 25px 0 20px;
478
+
479
+ }
480
+
481
+
482
+
483
+ #navigation ul {
484
+
485
+ margin: 15px 0 0;
486
+
487
+ }
488
+
489
+
490
+
491
+ #navigation ul li {
492
+
493
+ float: none;
494
+
495
+ }
496
+
497
+
498
+
499
+ #navigation ul ul {
500
+
501
+ display: block;
502
+
503
+ padding-left: 1.12em;
504
+
505
+ }
506
+
507
+
508
+
509
+ #navigation ul ul li {
510
+
511
+ margin: 0;
512
+
513
+ }
514
+
515
+
516
+
517
+ }
518
+
519
+
520
+
521
+ </style>
522
+
523
+
524
+
525
+ </head>
526
+
527
+
528
+
529
+ <body class="hamburger-page">
530
+
531
+ <div class="wrap">
532
+
533
+ <h1 class="logo"><a href="/">Site Name</a></h1>
534
+
535
+ <!-- ドロワーメニューボタン -->
536
+
537
+ <p class="btn"><a href="#menu-btn">&#x2630;</a></p>
538
+
539
+ <!-- ナビゲーションメニュー -->
540
+
541
+ <nav id="navigation" role="navigation">
542
+
543
+ <ul>
544
+
545
+ <li><a href="#">hoge1</a>
546
+
547
+ <ul aria-label="submenu">
548
+
549
+ <li><a href="#">fuga1</a></li>
550
+
551
+ <li><a href="#">fuga2</a></li>
552
+
553
+ </ul>
554
+
555
+ </li>
556
+
557
+ <li><a href="#">hoge2</a>
558
+
559
+ <ul aria-label="submenu">
560
+
561
+ <li><a href="#">fuga1</a></li>
562
+
563
+ </ul>
564
+
565
+ </li>
566
+
567
+ <li><a href="#">hoge3</a></li>
568
+
569
+ <li><a href="#">hoge4</a>
570
+
571
+ <ul aria-label="submenu">
572
+
573
+ <li><a href="#">fuga1</a></li>
574
+
575
+ <li><a href="#">fuga2</a></li>
576
+
577
+ <li><a href="#">fuga3</a></li>
578
+
579
+ </ul>
580
+
581
+ </li>
582
+
583
+ </ul>
584
+
585
+ </nav>
586
+
587
+ <!-- メインコンテンツ -->
588
+
589
+ <main id="main">
590
+
591
+ <p>メイン<a href="#">リンク</a></p>
592
+
593
+ </main>
594
+
595
+ </div>
596
+
597
+
598
+
599
+
600
+
601
+ <script src="http://code.jquery.com/jquery-latest.min.js"></script>
602
+
603
+ <script>
604
+
605
+ $(window).on('load resize', function(){
606
+
607
+ if ($(window).width() <= 1151) { //ウインドウサイズが1151px以下ならば
608
+
609
+
610
+
611
+ $('#navigation li:last a').on('keydown', function(e) {
612
+
613
+ if (e.keyCode === 9) {
614
+
615
+ if (!e.shiftKey) {
616
+
617
+ e.preventDefault();
618
+
619
+ $('[href="#menu-btn"]').focus();
620
+
621
+ }
622
+
623
+ }
624
+
625
+ });
626
+
627
+
628
+
629
+ // At start of navigation block, refocus close button on SHIFT+TAB
630
+
631
+
632
+
633
+ $('#navigation li:first a').on('keydown', function(e) {
634
+
635
+ if (e.keyCode === 9) {
636
+
637
+ if (e.shiftKey) {
638
+
639
+ e.preventDefault();
640
+
641
+ $('[href="#menu-btn"]').focus();
642
+
643
+ }
644
+
645
+ }
646
+
647
+ });
648
+
649
+
650
+
279
651
  } else {
280
652
 
281
653
 
@@ -324,726 +696,10 @@
324
696
 
325
697
 
326
698
 
699
+ </script>
700
+
701
+ </body>
702
+
703
+ </html>
704
+
327
705
  ```
328
-
329
- ```CSS
330
-
331
- .wrap {
332
-
333
- max-width: 1170px;
334
-
335
- margin: 0 auto;
336
-
337
- padding: 3%;
338
-
339
- }
340
-
341
-
342
-
343
- .btn {
344
-
345
- display: none;
346
-
347
- }
348
-
349
-
350
-
351
- nav ul {
352
-
353
- list-style: none;
354
-
355
- margin-left: 190px;
356
-
357
- padding: 0;
358
-
359
- }
360
-
361
-
362
-
363
- #navigation ul ul {
364
-
365
- margin: 10px 0 0;
366
-
367
- }
368
-
369
-
370
-
371
- #navigation ul ul li {
372
-
373
- float: none;
374
-
375
- }
376
-
377
- #navigation li {
378
-
379
- float: left;
380
-
381
- margin-left: 5%;
382
-
383
- width: 12%;
384
-
385
- }
386
-
387
-
388
-
389
- #main {
390
-
391
- clear: both;
392
-
393
- margin-top: 180px
394
-
395
- }
396
-
397
-
398
-
399
- /*-- smaller than 1165px --*/
400
-
401
- @media screen and (max-width: 1165px) {
402
-
403
-
404
-
405
- .btn {
406
-
407
- display: block;
408
-
409
- width: 30%;
410
-
411
- text-align: right;
412
-
413
- }
414
-
415
-
416
-
417
- #navigation {
418
-
419
- position: absolute;
420
-
421
- top: -8px;
422
-
423
- right: -1px;
424
-
425
- width: 44%;
426
-
427
- padding: 25px 0 20px;
428
-
429
- }
430
-
431
-
432
-
433
- #navigation ul {
434
-
435
- margin: 15px 0 0;
436
-
437
- }
438
-
439
-
440
-
441
- #navigation ul li {
442
-
443
- float: none;
444
-
445
- }
446
-
447
-
448
-
449
- #navigation ul ul {
450
-
451
- display: block;
452
-
453
- padding-left: 1.12em;
454
-
455
- }
456
-
457
-
458
-
459
- #navigation ul ul li {
460
-
461
- margin: 0;
462
-
463
- }
464
-
465
-
466
-
467
- [data-nav-visible] {
468
-
469
- position: relative;
470
-
471
- }
472
-
473
-
474
-
475
- [data-nav-visible="true"] {
476
-
477
- top: 0;
478
-
479
- left: -23%;
480
-
481
- }
482
-
483
-
484
-
485
- [role="navigation"] {
486
-
487
- -webkit-transition: all 1s ease 0s;
488
-
489
- transition: all 1s ease 0s;
490
-
491
- }
492
-
493
-
494
-
495
- [data-nav-visible="true"] #navigation {
496
-
497
- display: block;
498
-
499
- -webkit-transform: translate(100%);
500
-
501
- transform: translate(100%);
502
-
503
- }
504
-
505
-
506
-
507
- [data-nav-visible="false"] {
508
-
509
- top: 0;
510
-
511
- left: 0;
512
-
513
- }
514
-
515
-
516
-
517
- [data-nav-visible="false"] #navigation {
518
-
519
- display: none;
520
-
521
- }
522
-
523
-
524
-
525
-
526
-
527
- }
528
-
529
-
530
-
531
-
532
-
533
- ```
534
-
535
-
536
-
537
- 全体のコード
538
-
539
- ```html
540
-
541
- <!DOCTYPE html>
542
-
543
- <html lang="ja">
544
-
545
- <head>
546
-
547
- <meta charset="UTF-8" />
548
-
549
- <meta name="viewport" content="width=device-width">
550
-
551
- <title>test</title>
552
-
553
- <style type="text/css">
554
-
555
- .wrap {
556
-
557
- max-width: 1170px;
558
-
559
- margin: 0 auto;
560
-
561
- padding: 3%;
562
-
563
- }
564
-
565
-
566
-
567
- .btn {
568
-
569
- display: none;
570
-
571
- }
572
-
573
-
574
-
575
- nav ul {
576
-
577
- list-style: none;
578
-
579
- margin-left: 190px;
580
-
581
- padding: 0;
582
-
583
- }
584
-
585
-
586
-
587
- #navigation ul ul {
588
-
589
- margin: 10px 0 0;
590
-
591
- }
592
-
593
-
594
-
595
- #navigation ul ul li {
596
-
597
- float: none;
598
-
599
- }
600
-
601
- #navigation li {
602
-
603
- float: left;
604
-
605
- margin-left: 5%;
606
-
607
- width: 12%;
608
-
609
- }
610
-
611
-
612
-
613
- #main {
614
-
615
- clear: both;
616
-
617
- margin-top: 180px
618
-
619
- }
620
-
621
-
622
-
623
- /*-- smaller than 1165px --*/
624
-
625
- @media screen and (max-width: 1165px) {
626
-
627
-
628
-
629
- .btn {
630
-
631
- display: block;
632
-
633
- width: 30%;
634
-
635
- text-align: right;
636
-
637
- }
638
-
639
-
640
-
641
- #navigation {
642
-
643
- position: absolute;
644
-
645
- top: -8px;
646
-
647
- right: -1px;
648
-
649
- width: 44%;
650
-
651
- padding: 25px 0 20px;
652
-
653
- }
654
-
655
-
656
-
657
- #navigation ul {
658
-
659
- margin: 15px 0 0;
660
-
661
- }
662
-
663
-
664
-
665
- #navigation ul li {
666
-
667
- float: none;
668
-
669
- }
670
-
671
-
672
-
673
- #navigation ul ul {
674
-
675
- display: block;
676
-
677
- padding-left: 1.12em;
678
-
679
- }
680
-
681
-
682
-
683
- #navigation ul ul li {
684
-
685
- margin: 0;
686
-
687
- }
688
-
689
-
690
-
691
-
692
-
693
- [data-nav-visible] {
694
-
695
- position: relative;
696
-
697
- }
698
-
699
-
700
-
701
- [data-nav-visible="true"] {
702
-
703
- top: 0;
704
-
705
- left: -23%;
706
-
707
- }
708
-
709
-
710
-
711
- [data-nav-visible="true"] #navigation {
712
-
713
- display: block;
714
-
715
- -webkit-transform: translate(100%);
716
-
717
- transform: translate(100%);
718
-
719
- }
720
-
721
-
722
-
723
- [data-nav-visible="false"] {
724
-
725
- top: 0;
726
-
727
- left: 0;
728
-
729
- }
730
-
731
-
732
-
733
- [data-nav-visible="false"] #navigation {
734
-
735
- display: none;
736
-
737
- }
738
-
739
-
740
-
741
-
742
-
743
- }
744
-
745
-
746
-
747
- </style>
748
-
749
-
750
-
751
- </head>
752
-
753
-
754
-
755
- <body class="hamburger-page">
756
-
757
- <div class="wrap">
758
-
759
- <h1 class="logo"><a href="/">Site Name</a></h1>
760
-
761
- <!-- ドロワーメニューボタン -->
762
-
763
- <p class="btn"><a href="#navigation" aria-expanded="true">&#x2630;</a></p>
764
-
765
- <!-- ナビゲーションメニュー -->
766
-
767
- <nav id="navigation" role="navigation">
768
-
769
- <ul>
770
-
771
- <li><a href="#">hoge1</a>
772
-
773
- <ul aria-label="submenu">
774
-
775
- <li><a href="#">fuga1</a></li>
776
-
777
- <li><a href="#">fuga2</a></li>
778
-
779
- </ul>
780
-
781
- </li>
782
-
783
- <li><a href="#">hoge2</a>
784
-
785
- <ul aria-label="submenu">
786
-
787
- <li><a href="#">fuga1</a></li>
788
-
789
- </ul>
790
-
791
- </li>
792
-
793
- <li><a href="#">hoge3</a></li>
794
-
795
- <li><a href="#">hoge4</a>
796
-
797
- <ul aria-label="submenu">
798
-
799
- <li><a href="#">fuga1</a></li>
800
-
801
- <li><a href="#">fuga2</a></li>
802
-
803
- <li><a href="#">fuga3</a></li>
804
-
805
- </ul>
806
-
807
- </li>
808
-
809
- </ul>
810
-
811
- </nav>
812
-
813
- <!-- メインコンテンツ -->
814
-
815
- <main id="main">
816
-
817
- <p>メイン<a href="#">リンク</a></p>
818
-
819
- </main>
820
-
821
- </div>
822
-
823
-
824
-
825
-
826
-
827
- <script src="http://code.jquery.com/jquery-latest.min.js"></script>
828
-
829
- <script>
830
-
831
-
832
-
833
- $('[href="#navigation"]').attr({
834
-
835
- 'aria-expanded': 'false'
836
-
837
- });
838
-
839
-
840
-
841
- $('.wrap').attr({
842
-
843
- 'data-nav-visible': 'false'
844
-
845
- });
846
-
847
-
848
-
849
-
850
-
851
-
852
-
853
- var openMenu = function() {
854
-
855
- $('.wrap').attr({
856
-
857
- 'data-nav-visible': 'true'
858
-
859
- });
860
-
861
- $('[href="#navigation"]').attr({
862
-
863
- 'aria-expanded': 'true'
864
-
865
- })
866
-
867
- $('[href="#navigation"]').text('\u00D7');
868
-
869
- return false;
870
-
871
- }
872
-
873
-
874
-
875
-
876
-
877
- var closeMenu = function() {
878
-
879
- $('.wrap').attr({
880
-
881
- 'data-nav-visible': 'false'
882
-
883
- });
884
-
885
- $('[href="#navigation"]').attr({
886
-
887
- 'aria-expanded': 'false'
888
-
889
- });
890
-
891
- $('[href="#navigation"]').text('\u2630');
892
-
893
- return false;
894
-
895
- }
896
-
897
-
898
-
899
-
900
-
901
- $('[href="#navigation"]').on('click', function(e) {
902
-
903
- e.preventDefault();
904
-
905
- $(this).attr('aria-expanded') == 'true' ? closeMenu() : openMenu();
906
-
907
- });
908
-
909
-
910
-
911
- $(window).on('load resize', function(){
912
-
913
- if ($(window).width() <= 1151) { //ウインドウサイズが1151px以下ならば
914
-
915
-
916
-
917
- $('#navigation li:last a').on('keydown', function(e) {
918
-
919
- if (e.keyCode === 9) {
920
-
921
- if (!e.shiftKey) {
922
-
923
- e.preventDefault();
924
-
925
- $('[href="#navigation"]').focus();
926
-
927
- }
928
-
929
- }
930
-
931
- });
932
-
933
-
934
-
935
- // At start of navigation block, refocus close button on SHIFT+TAB
936
-
937
-
938
-
939
- $('#navigation li:first a').on('keydown', function(e) {
940
-
941
- if (e.keyCode === 9) {
942
-
943
- if (e.shiftKey) {
944
-
945
- e.preventDefault();
946
-
947
- $('[href="#navigation"]').focus();
948
-
949
- }
950
-
951
- }
952
-
953
- });
954
-
955
-
956
-
957
- // If the menu is visible, always TAB into it from the menu button
958
-
959
-
960
-
961
-
962
-
963
- $('[aria-expanded]').on('keydown', function(e) {
964
-
965
- if (e.keyCode === 9) {
966
-
967
- if ($(this).attr('aria-expanded') == 'true') {
968
-
969
- if (!e.shiftKey) {
970
-
971
- e.preventDefault();
972
-
973
- $('#navigation li:first a').focus();
974
-
975
- } else {
976
-
977
- if (e.shiftKey) {
978
-
979
- e.preventDefault();
980
-
981
- $('#main').focus();
982
-
983
- }
984
-
985
- }
986
-
987
- }
988
-
989
- }
990
-
991
- });
992
-
993
-
994
-
995
- } else {
996
-
997
-
998
-
999
- $('#navigation li:last a').on('keydown', function(e) {
1000
-
1001
- if (e.keyCode === 9) {
1002
-
1003
- if (!e.shiftKey) {
1004
-
1005
- $(this).blur();
1006
-
1007
- }
1008
-
1009
- }
1010
-
1011
- });
1012
-
1013
-
1014
-
1015
-
1016
-
1017
- $('#navigation li:first a').on('keydown', function(e) {
1018
-
1019
- if (e.keyCode === 9) {
1020
-
1021
- if (e.shiftKey) {
1022
-
1023
- e.preventDefault();
1024
-
1025
- $('.logo a').focus();
1026
-
1027
- }
1028
-
1029
- }
1030
-
1031
- });
1032
-
1033
-
1034
-
1035
-
1036
-
1037
- }
1038
-
1039
- });
1040
-
1041
-
1042
-
1043
- </script>
1044
-
1045
- </body>
1046
-
1047
- </html>
1048
-
1049
- ```

18

2018/05/18 09:47

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -50,7 +50,7 @@
50
50
 
51
51
  ナビゲーションの1番初め(hoge1)がサブナビ(第2階層)を持たない場合は、下記の記述でも上記の3つの問題は発生しませんでした。
52
52
 
53
- ですが、ナビゲーションの1番初めの要素(hoge1)がサブナビ(第2階層)を持っていても持っていなくても上記の問題が出ないよう実装しなければいけないので、どう修正すれば問題を解消出来るかご教示ください。
53
+ ですが、ナビゲーションの1番初めの要素(hoge1)がサブナビ(第2階層)を持っていても持っていなくても上記の問題が出ないよう実装しなければいけないので、どう修正すれば問題を解消出来るかご教示お願します
54
54
 
55
55
 
56
56
 

17

2018/04/26 15:25

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -50,6 +50,8 @@
50
50
 
51
51
  ナビゲーションの1番初め(hoge1)がサブナビ(第2階層)を持たない場合は、下記の記述でも上記の3つの問題は発生しませんでした。
52
52
 
53
+ ですが、ナビゲーションの1番初めの要素(hoge1)がサブナビ(第2階層)を持っていても持っていなくても上記の問題が出ないよう実装しなければいけないので、どう修正すれば問題を解消出来るかご教示ください。
54
+
53
55
 
54
56
 
55
57
  ```HTML

16

2018/04/26 15:23

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -48,7 +48,7 @@
48
48
 
49
49
  ###試した事
50
50
 
51
- ナビゲーションの1番初め(hoge1)がサブナビ(第2階層)を持たない場合は、下記の技術でも上記の3つの問題は発生しませんでした。
51
+ ナビゲーションの1番初め(hoge1)がサブナビ(第2階層)を持たない場合は、下記の記述でも上記の3つの問題は発生しませんでした。
52
52
 
53
53
 
54
54
 

15

2018/04/26 15:02

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -46,6 +46,12 @@
46
46
 
47
47
 
48
48
 
49
+ ###試した事
50
+
51
+ ナビゲーションの1番初め(hoge1)がサブナビ(第2階層)を持たない場合は、下記の技術でも上記の3つの問題は発生しませんでした。
52
+
53
+
54
+
49
55
  ```HTML
50
56
 
51
57
  <div class="wrap">

14

説明修正

2018/04/26 15:00

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -22,19 +22,19 @@
22
22
 
23
23
  ###発生している問題
24
24
 
25
- 0. メニーが開いた時(aria-expanded="true")1番初めの第1階層のli aにフォーカスしなければいけないのに、1番初めの第2階層の1番最後のli aにフォーカスが飛んでしまう。
25
+ 0. メニボタンをクリック又はフォーカスしている状態でEnterキーを押すとメニューが開(aria-expanded="true")次にTabキーを押すと1番初めの第1階層のli a(hoge1)にフォーカスしなければいけないのに、1番初めの第2階層の1番最後のli a(fuga2)にフォーカスが飛んでしまう。
26
26
 
27
27
  (移動順序がおかしい)
28
28
 
29
29
 
30
30
 
31
- 0. ナビゲーションメニューにフォーカスがある時にShift+Tabキーを押すと、1番初めの第2階層の1番最後のli aにフォーカスした後は第2階層の1番最後の前のli aにフォーカスし次に第1階層のli aにフォーカスしてメニューボタンに移動しなければいけないのにそうはならず、1番最後の前のli aにフォーカスした後メニューボタンにフォーカスしてしまう。
31
+ 0. ナビゲーションメニューにフォーカスがある時にShift+Tabキーを押すと、1番初めの第2階層の1番最後のli a(fuga2)にフォーカスした後は第2階層の1番最後の前のli a(fuga1)にフォーカスし次に第1階層のli a(hoge1)にフォーカスしてメニューボタンに移動しなければいけないのにそうはならず、1番最後の前のli a(fuga2)にフォーカスした後メニューボタンにフォーカスが飛んでしまう。
32
32
 
33
33
  (移動順序がおかしい)
34
34
 
35
35
 
36
36
 
37
- 0. 画面が1152px以上の時(初回表示時及びリロードした時)、1番初めの第2階層にフォーカスがある時にShift+Tabキーを押すと次の要素に移動せず、サイト名にフォーカスが飛んでしまう。
37
+ 0. 画面が1152px以上の時(初回表示時及びリロードした時)、1番初めの第2階層(hoge1 > fuga1 or fuga2)にフォーカスがある時にShift+Tabキーを押すと次の要素に移動せず、サイト名(h1 a)にフォーカスが飛んでしまう。
38
38
 
39
39
  (移動順序がおかしい)
40
40
 

13

コード追記

2018/04/26 10:32

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -523,3 +523,519 @@
523
523
 
524
524
 
525
525
  ```
526
+
527
+
528
+
529
+ 全体のコード
530
+
531
+ ```html
532
+
533
+ <!DOCTYPE html>
534
+
535
+ <html lang="ja">
536
+
537
+ <head>
538
+
539
+ <meta charset="UTF-8" />
540
+
541
+ <meta name="viewport" content="width=device-width">
542
+
543
+ <title>test</title>
544
+
545
+ <style type="text/css">
546
+
547
+ .wrap {
548
+
549
+ max-width: 1170px;
550
+
551
+ margin: 0 auto;
552
+
553
+ padding: 3%;
554
+
555
+ }
556
+
557
+
558
+
559
+ .btn {
560
+
561
+ display: none;
562
+
563
+ }
564
+
565
+
566
+
567
+ nav ul {
568
+
569
+ list-style: none;
570
+
571
+ margin-left: 190px;
572
+
573
+ padding: 0;
574
+
575
+ }
576
+
577
+
578
+
579
+ #navigation ul ul {
580
+
581
+ margin: 10px 0 0;
582
+
583
+ }
584
+
585
+
586
+
587
+ #navigation ul ul li {
588
+
589
+ float: none;
590
+
591
+ }
592
+
593
+ #navigation li {
594
+
595
+ float: left;
596
+
597
+ margin-left: 5%;
598
+
599
+ width: 12%;
600
+
601
+ }
602
+
603
+
604
+
605
+ #main {
606
+
607
+ clear: both;
608
+
609
+ margin-top: 180px
610
+
611
+ }
612
+
613
+
614
+
615
+ /*-- smaller than 1165px --*/
616
+
617
+ @media screen and (max-width: 1165px) {
618
+
619
+
620
+
621
+ .btn {
622
+
623
+ display: block;
624
+
625
+ width: 30%;
626
+
627
+ text-align: right;
628
+
629
+ }
630
+
631
+
632
+
633
+ #navigation {
634
+
635
+ position: absolute;
636
+
637
+ top: -8px;
638
+
639
+ right: -1px;
640
+
641
+ width: 44%;
642
+
643
+ padding: 25px 0 20px;
644
+
645
+ }
646
+
647
+
648
+
649
+ #navigation ul {
650
+
651
+ margin: 15px 0 0;
652
+
653
+ }
654
+
655
+
656
+
657
+ #navigation ul li {
658
+
659
+ float: none;
660
+
661
+ }
662
+
663
+
664
+
665
+ #navigation ul ul {
666
+
667
+ display: block;
668
+
669
+ padding-left: 1.12em;
670
+
671
+ }
672
+
673
+
674
+
675
+ #navigation ul ul li {
676
+
677
+ margin: 0;
678
+
679
+ }
680
+
681
+
682
+
683
+
684
+
685
+ [data-nav-visible] {
686
+
687
+ position: relative;
688
+
689
+ }
690
+
691
+
692
+
693
+ [data-nav-visible="true"] {
694
+
695
+ top: 0;
696
+
697
+ left: -23%;
698
+
699
+ }
700
+
701
+
702
+
703
+ [data-nav-visible="true"] #navigation {
704
+
705
+ display: block;
706
+
707
+ -webkit-transform: translate(100%);
708
+
709
+ transform: translate(100%);
710
+
711
+ }
712
+
713
+
714
+
715
+ [data-nav-visible="false"] {
716
+
717
+ top: 0;
718
+
719
+ left: 0;
720
+
721
+ }
722
+
723
+
724
+
725
+ [data-nav-visible="false"] #navigation {
726
+
727
+ display: none;
728
+
729
+ }
730
+
731
+
732
+
733
+
734
+
735
+ }
736
+
737
+
738
+
739
+ </style>
740
+
741
+
742
+
743
+ </head>
744
+
745
+
746
+
747
+ <body class="hamburger-page">
748
+
749
+ <div class="wrap">
750
+
751
+ <h1 class="logo"><a href="/">Site Name</a></h1>
752
+
753
+ <!-- ドロワーメニューボタン -->
754
+
755
+ <p class="btn"><a href="#navigation" aria-expanded="true">&#x2630;</a></p>
756
+
757
+ <!-- ナビゲーションメニュー -->
758
+
759
+ <nav id="navigation" role="navigation">
760
+
761
+ <ul>
762
+
763
+ <li><a href="#">hoge1</a>
764
+
765
+ <ul aria-label="submenu">
766
+
767
+ <li><a href="#">fuga1</a></li>
768
+
769
+ <li><a href="#">fuga2</a></li>
770
+
771
+ </ul>
772
+
773
+ </li>
774
+
775
+ <li><a href="#">hoge2</a>
776
+
777
+ <ul aria-label="submenu">
778
+
779
+ <li><a href="#">fuga1</a></li>
780
+
781
+ </ul>
782
+
783
+ </li>
784
+
785
+ <li><a href="#">hoge3</a></li>
786
+
787
+ <li><a href="#">hoge4</a>
788
+
789
+ <ul aria-label="submenu">
790
+
791
+ <li><a href="#">fuga1</a></li>
792
+
793
+ <li><a href="#">fuga2</a></li>
794
+
795
+ <li><a href="#">fuga3</a></li>
796
+
797
+ </ul>
798
+
799
+ </li>
800
+
801
+ </ul>
802
+
803
+ </nav>
804
+
805
+ <!-- メインコンテンツ -->
806
+
807
+ <main id="main">
808
+
809
+ <p>メイン<a href="#">リンク</a></p>
810
+
811
+ </main>
812
+
813
+ </div>
814
+
815
+
816
+
817
+
818
+
819
+ <script src="http://code.jquery.com/jquery-latest.min.js"></script>
820
+
821
+ <script>
822
+
823
+
824
+
825
+ $('[href="#navigation"]').attr({
826
+
827
+ 'aria-expanded': 'false'
828
+
829
+ });
830
+
831
+
832
+
833
+ $('.wrap').attr({
834
+
835
+ 'data-nav-visible': 'false'
836
+
837
+ });
838
+
839
+
840
+
841
+
842
+
843
+
844
+
845
+ var openMenu = function() {
846
+
847
+ $('.wrap').attr({
848
+
849
+ 'data-nav-visible': 'true'
850
+
851
+ });
852
+
853
+ $('[href="#navigation"]').attr({
854
+
855
+ 'aria-expanded': 'true'
856
+
857
+ })
858
+
859
+ $('[href="#navigation"]').text('\u00D7');
860
+
861
+ return false;
862
+
863
+ }
864
+
865
+
866
+
867
+
868
+
869
+ var closeMenu = function() {
870
+
871
+ $('.wrap').attr({
872
+
873
+ 'data-nav-visible': 'false'
874
+
875
+ });
876
+
877
+ $('[href="#navigation"]').attr({
878
+
879
+ 'aria-expanded': 'false'
880
+
881
+ });
882
+
883
+ $('[href="#navigation"]').text('\u2630');
884
+
885
+ return false;
886
+
887
+ }
888
+
889
+
890
+
891
+
892
+
893
+ $('[href="#navigation"]').on('click', function(e) {
894
+
895
+ e.preventDefault();
896
+
897
+ $(this).attr('aria-expanded') == 'true' ? closeMenu() : openMenu();
898
+
899
+ });
900
+
901
+
902
+
903
+ $(window).on('load resize', function(){
904
+
905
+ if ($(window).width() <= 1151) { //ウインドウサイズが1151px以下ならば
906
+
907
+
908
+
909
+ $('#navigation li:last a').on('keydown', function(e) {
910
+
911
+ if (e.keyCode === 9) {
912
+
913
+ if (!e.shiftKey) {
914
+
915
+ e.preventDefault();
916
+
917
+ $('[href="#navigation"]').focus();
918
+
919
+ }
920
+
921
+ }
922
+
923
+ });
924
+
925
+
926
+
927
+ // At start of navigation block, refocus close button on SHIFT+TAB
928
+
929
+
930
+
931
+ $('#navigation li:first a').on('keydown', function(e) {
932
+
933
+ if (e.keyCode === 9) {
934
+
935
+ if (e.shiftKey) {
936
+
937
+ e.preventDefault();
938
+
939
+ $('[href="#navigation"]').focus();
940
+
941
+ }
942
+
943
+ }
944
+
945
+ });
946
+
947
+
948
+
949
+ // If the menu is visible, always TAB into it from the menu button
950
+
951
+
952
+
953
+
954
+
955
+ $('[aria-expanded]').on('keydown', function(e) {
956
+
957
+ if (e.keyCode === 9) {
958
+
959
+ if ($(this).attr('aria-expanded') == 'true') {
960
+
961
+ if (!e.shiftKey) {
962
+
963
+ e.preventDefault();
964
+
965
+ $('#navigation li:first a').focus();
966
+
967
+ } else {
968
+
969
+ if (e.shiftKey) {
970
+
971
+ e.preventDefault();
972
+
973
+ $('#main').focus();
974
+
975
+ }
976
+
977
+ }
978
+
979
+ }
980
+
981
+ }
982
+
983
+ });
984
+
985
+
986
+
987
+ } else {
988
+
989
+
990
+
991
+ $('#navigation li:last a').on('keydown', function(e) {
992
+
993
+ if (e.keyCode === 9) {
994
+
995
+ if (!e.shiftKey) {
996
+
997
+ $(this).blur();
998
+
999
+ }
1000
+
1001
+ }
1002
+
1003
+ });
1004
+
1005
+
1006
+
1007
+
1008
+
1009
+ $('#navigation li:first a').on('keydown', function(e) {
1010
+
1011
+ if (e.keyCode === 9) {
1012
+
1013
+ if (e.shiftKey) {
1014
+
1015
+ e.preventDefault();
1016
+
1017
+ $('.logo a').focus();
1018
+
1019
+ }
1020
+
1021
+ }
1022
+
1023
+ });
1024
+
1025
+
1026
+
1027
+
1028
+
1029
+ }
1030
+
1031
+ });
1032
+
1033
+
1034
+
1035
+ </script>
1036
+
1037
+ </body>
1038
+
1039
+ </html>
1040
+
1041
+ ```

12

説明修正

2018/04/26 10:19

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- フォーカス制御時と解除時のフォーカス順がおかしいので正しくなるようにしたいです。
1
+ キーボード操作時のフォーカス制御時と解除時のフォーカス順がおかしいので正しくなるようにしたいです。
test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  ウインドウサイズが1151px以下の時は、ドロワーメニューになるので
4
4
 
5
- フォーカスがメニューボタンとナビゲーションメニュー内だけの移動にし、
5
+ キーボード移動(Tabキー又はShift+Tab)時のフォーカスがメニューボタンとナビゲーションメニュー内だけの移動にし、
6
6
 
7
7
  Tabキーを押したときの移動順序は、メニューボタン→ナビゲーションメニュー(第1階層→第2階層→第1階層)→メニューボタン→ナビゲーションと回る。
8
8
 

11

修正

2018/04/26 09:19

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -120,10 +120,6 @@
120
120
 
121
121
  ```JavaScript
122
122
 
123
- // Set up attributes etc
124
-
125
-
126
-
127
123
  $('[href="#navigation"]').attr({
128
124
 
129
125
  'aria-expanded': 'false'
@@ -142,10 +138,6 @@
142
138
 
143
139
 
144
140
 
145
- // Basic open menu function
146
-
147
-
148
-
149
141
  var openMenu = function() {
150
142
 
151
143
  $('.wrap').attr({
@@ -168,10 +160,6 @@
168
160
 
169
161
 
170
162
 
171
- // Basic close menu function
172
-
173
-
174
-
175
163
  var closeMenu = function() {
176
164
 
177
165
  $('.wrap').attr({
@@ -194,10 +182,6 @@
194
182
 
195
183
 
196
184
 
197
- // Run clicks on the navigation button
198
-
199
-
200
-
201
185
  $('[href="#navigation"]').on('click', function(e) {
202
186
 
203
187
  e.preventDefault();
@@ -232,10 +216,6 @@
232
216
 
233
217
 
234
218
 
235
- // At start of navigation block, refocus close button on SHIFT+TAB
236
-
237
-
238
-
239
219
  $('#navigation li:first a').on('keydown', function(e) {
240
220
 
241
221
  if (e.keyCode === 9) {
@@ -254,10 +234,6 @@
254
234
 
255
235
 
256
236
 
257
- // If the menu is visible, always TAB into it from the menu button
258
-
259
-
260
-
261
237
 
262
238
 
263
239
  $('[aria-expanded]').on('keydown', function(e) {

10

記述追記

2018/04/26 05:02

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -54,7 +54,7 @@
54
54
 
55
55
  <!-- ドロワーメニューボタン -->
56
56
 
57
- <p class="btn"><a href="#navigation" aria-expanded="true"></a></p>
57
+ <p class="btn"><a href="#navigation" aria-expanded="true">&#x2630;</a></p>
58
58
 
59
59
  <!-- ナビゲーションメニュー -->
60
60
 
@@ -120,20 +120,100 @@
120
120
 
121
121
  ```JavaScript
122
122
 
123
+ // Set up attributes etc
124
+
125
+
126
+
127
+ $('[href="#navigation"]').attr({
128
+
129
+ 'aria-expanded': 'false'
130
+
131
+ });
132
+
133
+
134
+
135
+ $('.wrap').attr({
136
+
137
+ 'data-nav-visible': 'false'
138
+
139
+ });
140
+
141
+
142
+
143
+
144
+
145
+ // Basic open menu function
146
+
147
+
148
+
149
+ var openMenu = function() {
150
+
151
+ $('.wrap').attr({
152
+
153
+ 'data-nav-visible': 'true'
154
+
155
+ });
156
+
157
+ $('[href="#navigation"]').attr({
158
+
159
+ 'aria-expanded': 'true'
160
+
161
+ })
162
+
163
+ $('[href="#navigation"]').text('\u00D7');
164
+
165
+ return false;
166
+
167
+ }
168
+
169
+
170
+
171
+ // Basic close menu function
172
+
173
+
174
+
175
+ var closeMenu = function() {
176
+
177
+ $('.wrap').attr({
178
+
179
+ 'data-nav-visible': 'false'
180
+
181
+ });
182
+
183
+ $('[href="#navigation"]').attr({
184
+
185
+ 'aria-expanded': 'false'
186
+
187
+ });
188
+
189
+ $('[href="#navigation"]').text('\u2630');
190
+
191
+ return false;
192
+
193
+ }
194
+
195
+
196
+
197
+ // Run clicks on the navigation button
198
+
199
+
200
+
201
+ $('[href="#navigation"]').on('click', function(e) {
202
+
203
+ e.preventDefault();
204
+
205
+ $(this).attr('aria-expanded') == 'true' ? closeMenu() : openMenu();
206
+
207
+ });
208
+
209
+
210
+
123
211
  $(window).on('load resize', function(){
124
212
 
125
213
  if ($(window).width() <= 1151) { //ウインドウサイズが1151px以下ならば
126
214
 
127
215
 
128
216
 
129
- $('#navigation').attr({
130
-
131
- 'aria-hidden': 'true'
132
-
133
- });
134
-
135
-
136
-
137
217
  $('#navigation li:last a').on('keydown', function(e) {
138
218
 
139
219
  if (e.keyCode === 9) {
@@ -216,10 +296,6 @@
216
296
 
217
297
 
218
298
 
219
- $('#navigation').removeAttr('aria-hidden', 'true');
220
-
221
-
222
-
223
299
  $('#navigation li:last a').on('keydown', function(e) {
224
300
 
225
301
  if (e.keyCode === 9) {
@@ -236,6 +312,8 @@
236
312
 
237
313
 
238
314
 
315
+
316
+
239
317
  $('#navigation li:first a').on('keydown', function(e) {
240
318
 
241
319
  if (e.keyCode === 9) {
@@ -254,6 +332,8 @@
254
332
 
255
333
 
256
334
 
335
+
336
+
257
337
  }
258
338
 
259
339
  });
@@ -332,9 +412,9 @@
332
412
 
333
413
 
334
414
 
335
- /*-- smaller than 1151px --*/
415
+ /*-- smaller than 1165px --*/
336
-
416
+
337
- @media screen and (max-width: 1151px) {
417
+ @media screen and (max-width: 1165px) {
338
418
 
339
419
 
340
420
 
@@ -342,11 +422,39 @@
342
422
 
343
423
  display: block;
344
424
 
425
+ width: 30%;
426
+
427
+ text-align: right;
428
+
345
- }
429
+ }
430
+
431
+
432
+
346
-
433
+ #navigation {
434
+
347
-
435
+ position: absolute;
436
+
348
-
437
+ top: -8px;
438
+
439
+ right: -1px;
440
+
441
+ width: 44%;
442
+
443
+ padding: 25px 0 20px;
444
+
445
+ }
446
+
447
+
448
+
349
- #navigation li {
449
+ #navigation ul {
450
+
451
+ margin: 15px 0 0;
452
+
453
+ }
454
+
455
+
456
+
457
+ #navigation ul li {
350
458
 
351
459
  float: none;
352
460
 
@@ -372,7 +480,69 @@
372
480
 
373
481
 
374
482
 
483
+ [data-nav-visible] {
484
+
485
+ position: relative;
486
+
375
- }
487
+ }
488
+
489
+
490
+
491
+ [data-nav-visible="true"] {
492
+
493
+ top: 0;
494
+
495
+ left: -23%;
496
+
497
+ }
498
+
499
+
500
+
501
+ [role="navigation"] {
502
+
503
+ -webkit-transition: all 1s ease 0s;
504
+
505
+ transition: all 1s ease 0s;
506
+
507
+ }
508
+
509
+
510
+
511
+ [data-nav-visible="true"] #navigation {
512
+
513
+ display: block;
514
+
515
+ -webkit-transform: translate(100%);
516
+
517
+ transform: translate(100%);
518
+
519
+ }
520
+
521
+
522
+
523
+ [data-nav-visible="false"] {
524
+
525
+ top: 0;
526
+
527
+ left: 0;
528
+
529
+ }
530
+
531
+
532
+
533
+ [data-nav-visible="false"] #navigation {
534
+
535
+ display: none;
536
+
537
+ }
538
+
539
+
540
+
541
+
542
+
543
+ }
544
+
545
+
376
546
 
377
547
 
378
548
 

9

2018/04/26 04:59

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -377,33 +377,3 @@
377
377
 
378
378
 
379
379
  ```
380
-
381
- ###試したがうまくいかなかったけれど可能ならばこちらで実装したい事
382
-
383
- 1151px以下の時だけフォーカスの制御をしたいので、1151px以下の時以外はイベントを発生させない(else以下の記述が不要な)下記の記述を試みましたが、1151px以下のサイズから1152px以上にリサイズした時フォーカスが第2階層の一番最後のli aで止まってしまいうまくいきませんでした。
384
-
385
- **こちらのような1151px以下の時以外はイベントを発生させない実装方法が可能でしたらこちらをご教示いただけると嬉しいです。**
386
-
387
-
388
-
389
- var timer = false;
390
-
391
- $(window).on('load resize', function() {
392
-
393
- if (timer !== false) {
394
-
395
- clearTimeout(timer);
396
-
397
- }
398
-
399
- timer = setTimeout(function() {
400
-
401
- if ($(window).width() <= 1165) {
402
-
403
- // 下のelseより上の記述
404
-
405
-     }
406
-
407
- }, 100);
408
-
409
- });

8

追記

2018/04/25 13:50

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -377,3 +377,33 @@
377
377
 
378
378
 
379
379
  ```
380
+
381
+ ###試したがうまくいかなかったけれど可能ならばこちらで実装したい事
382
+
383
+ 1151px以下の時だけフォーカスの制御をしたいので、1151px以下の時以外はイベントを発生させない(else以下の記述が不要な)下記の記述を試みましたが、1151px以下のサイズから1152px以上にリサイズした時フォーカスが第2階層の一番最後のli aで止まってしまいうまくいきませんでした。
384
+
385
+ **こちらのような1151px以下の時以外はイベントを発生させない実装方法が可能でしたらこちらをご教示いただけると嬉しいです。**
386
+
387
+
388
+
389
+ var timer = false;
390
+
391
+ $(window).on('load resize', function() {
392
+
393
+ if (timer !== false) {
394
+
395
+ clearTimeout(timer);
396
+
397
+ }
398
+
399
+ timer = setTimeout(function() {
400
+
401
+ if ($(window).width() <= 1165) {
402
+
403
+ // 下のelseより上の記述
404
+
405
+     }
406
+
407
+ }, 100);
408
+
409
+ });

7

説明修正

2018/04/25 11:32

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -42,7 +42,7 @@
42
42
 
43
43
  0. ~~1152px以上にリサイズした時(リロード時は問題ない)にフォーカスが第2階層(サブメニュー)に当たらない。~~
44
44
 
45
- これはドロップダウンのJSが原因だとわかりました。
45
+ これはドロップダウンメニューのJSが原因だという事がわかりました。
46
46
 
47
47
 
48
48
 

6

説明追加

2018/04/25 06:54

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -40,23 +40,25 @@
40
40
 
41
41
 
42
42
 
43
- 0. 1152px以上にリサイズした時(リロード時は問題ない)にフォーカスが第2階層(サブメニュー)に当たらない。
43
+ 0. ~~1152px以上にリサイズした時(リロード時は問題ない)にフォーカスが第2階層(サブメニュー)に当たらない。~~
44
+
45
+ これはドロップダウンのJSが原因だとわかりました。
44
46
 
45
47
 
46
48
 
47
49
  ```HTML
48
50
 
49
- <!-- サイト名 -->
51
+ <div class="wrap">
50
52
 
51
53
  <h1 class="logo"><a href="/">Site Name</a></h1>
52
54
 
53
55
  <!-- ドロワーメニューボタン -->
54
56
 
55
- <p><a href="#navigation" aria-expanded="true"></a></p>
57
+ <p class="btn"><a href="#navigation" aria-expanded="true"></a></p>
56
58
 
57
59
  <!-- ナビゲーションメニュー -->
58
60
 
59
- <nav id="navigation">
61
+ <nav id="navigation" role="navigation">
60
62
 
61
63
  <ul>
62
64
 
@@ -106,6 +108,14 @@
106
108
 
107
109
  <main id="main">
108
110
 
111
+ <p>メイン<a href="#">リンク</a></p>
112
+
113
+ </main>
114
+
115
+ </div>
116
+
117
+
118
+
109
119
  ```
110
120
 
111
121
  ```JavaScript
@@ -251,3 +261,119 @@
251
261
 
252
262
 
253
263
  ```
264
+
265
+ ```CSS
266
+
267
+ .wrap {
268
+
269
+ max-width: 1170px;
270
+
271
+ margin: 0 auto;
272
+
273
+ padding: 3%;
274
+
275
+ }
276
+
277
+
278
+
279
+ .btn {
280
+
281
+ display: none;
282
+
283
+ }
284
+
285
+
286
+
287
+ nav ul {
288
+
289
+ list-style: none;
290
+
291
+ margin-left: 190px;
292
+
293
+ padding: 0;
294
+
295
+ }
296
+
297
+
298
+
299
+ #navigation ul ul {
300
+
301
+ margin: 10px 0 0;
302
+
303
+ }
304
+
305
+
306
+
307
+ #navigation ul ul li {
308
+
309
+ float: none;
310
+
311
+ }
312
+
313
+ #navigation li {
314
+
315
+ float: left;
316
+
317
+ margin-left: 5%;
318
+
319
+ width: 12%;
320
+
321
+ }
322
+
323
+
324
+
325
+ #main {
326
+
327
+ clear: both;
328
+
329
+ margin-top: 180px
330
+
331
+ }
332
+
333
+
334
+
335
+ /*-- smaller than 1151px --*/
336
+
337
+ @media screen and (max-width: 1151px) {
338
+
339
+
340
+
341
+ .btn {
342
+
343
+ display: block;
344
+
345
+ }
346
+
347
+
348
+
349
+ #navigation li {
350
+
351
+ float: none;
352
+
353
+ }
354
+
355
+
356
+
357
+ #navigation ul ul {
358
+
359
+ display: block;
360
+
361
+ padding-left: 1.12em;
362
+
363
+ }
364
+
365
+
366
+
367
+ #navigation ul ul li {
368
+
369
+ margin: 0;
370
+
371
+ }
372
+
373
+
374
+
375
+ }
376
+
377
+
378
+
379
+ ```

5

説明の修正

2018/04/25 06:52

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -4,13 +4,13 @@
4
4
 
5
5
  フォーカスがメニューボタンとナビゲーションメニュー内だけの移動にし、
6
6
 
7
- Tabキーを押したときの移動順序は、メニューボタン→ナビゲーションメニュー(親要素子要素)→メニューボタン
7
+ Tabキーを押したときの移動順序は、メニューボタン→ナビゲーションメニュー(第1階層第2階層→第1階層)→メニューボタン→ナビゲーションと回る。
8
8
 
9
9
  ナビゲーションメニューにフォーカスがある時にShift+Tabキーを押した時の移動順序は、
10
10
 
11
- ナビゲーションメニュー(子要素→親要素)→メニューボタンになるようにする。
11
+ ナビゲーションメニューの第1階層にフォーカスがある場合、次の要素の第2階層第1階層→メニューボタンで止まるようにする。
12
-
12
+
13
- 1152px以上の時には普通に横並びのメニューになるのでフォーカス範囲の指定を解除する。
13
+ 1152px以上の時には普通に横並びのメニューになるのでフォーカス範囲制御を解除する。
14
14
 
15
15
 
16
16
 
@@ -22,22 +22,40 @@
22
22
 
23
23
  ###発生している問題
24
24
 
25
- 0. メニユーが開いた時(aria-expanded="true")、初めのliの子要素番最後のliにフォーカスしてしまう。(移動順序がおかしい)
25
+ 0. メニユーが開いた時(aria-expanded="true")、1番初めの第1階層のli aにフォーカスしなければいけないに、1番初め第2階層の1番最後のli aにフォーカスが飛んでしまう。
26
+
26
-
27
+ (移動順序がおかしい)
28
+
29
+
30
+
27
- 0. ナビゲーションメニューにフォーカスがある時にShift+Tabキーを押すと、初めのliの子要素の一番最後の要素にフォーカスしの前の要素にフォーカスせずメニューボタンにフォーカスしてしまう。
31
+ 0. ナビゲーションメニューにフォーカスがある時にShift+Tabキーを押すと、1番初めの第2階層の1番最後のli aにフォーカスした後は第2階層1番最後の前のli aにフォーカスし次に第1階層のli aにフォーカスしてメニューボタンに移動しなければいけないのにそうはならず、1番最後の前のli aにフォーカスした後メニューボタンにフォーカスしてしまう。
32
+
28
-
33
+ (移動順序がおかしい)
34
+
35
+
36
+
29
- 0. 画面が1152px以上の時(初回表示時及びリロードした時)、初めのliの子要素にフォーカスがある時にShift+Tabキーを押すと、サイト名にフォーカスしてしまう。
37
+ 0. 画面が1152px以上の時(初回表示時及びリロードした時)、1番初めの第2階層にフォーカスがある時にShift+Tabキーを押すと次の要素に移動せず、サイト名にフォーカスが飛んでしまう。
38
+
30
-
39
+ (移動順序がおかしい)
40
+
41
+
42
+
31
- 0. 1152px以上にリサイズした時にフォーカスがliの子要素(サブメニュー)に当たらない。
43
+ 0. 1152px以上にリサイズした時(リロード時は問題ない)にフォーカスが第2階層(サブメニュー)に当たらない。
32
44
 
33
45
 
34
46
 
35
47
  ```HTML
36
48
 
49
+ <!-- サイト名 -->
50
+
37
51
  <h1 class="logo"><a href="/">Site Name</a></h1>
38
52
 
53
+ <!-- ドロワーメニューボタン -->
54
+
39
55
  <p><a href="#navigation" aria-expanded="true">☰</a></p>
40
56
 
57
+ <!-- ナビゲーションメニュー -->
58
+
41
59
  <nav id="navigation">
42
60
 
43
61
  <ul>
@@ -84,7 +102,7 @@
84
102
 
85
103
  </nav>
86
104
 
87
-
105
+ <!-- メインコンテンツ -->
88
106
 
89
107
  <main id="main">
90
108
 

4

説明修正

2018/04/25 03:29

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -28,7 +28,7 @@
28
28
 
29
29
  0. 画面が1152px以上の時(初回表示時及びリロードした時)、初めのliの子要素にフォーカスがある時にShift+Tabキーを押すと、サイト名にフォーカスしてしまう。
30
30
 
31
- 0. 1152px以上にリサイズした時にフォーカスがliの子要素(サブメニュー)当たらない。
31
+ 0. 1152px以上にリサイズした時にフォーカスがliの子要素(サブメニュー)当たらない。
32
32
 
33
33
 
34
34
 
@@ -36,7 +36,7 @@
36
36
 
37
37
  <h1 class="logo"><a href="/">Site Name</a></h1>
38
38
 
39
- <p><a href="#navigation" aria-expanded="false">☰</a></p>
39
+ <p><a href="#navigation" aria-expanded="true">☰</a></p>
40
40
 
41
41
  <nav id="navigation">
42
42
 

3

説明修正

2018/04/24 10:08

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -16,7 +16,7 @@
16
16
 
17
17
  問題が多くてすみませんが、試行錯誤したのですがどう修正すれば意図した動作になるのかわかりません。
18
18
 
19
- ご教示よろしくお願いします
19
+ どう修正すれば問題を解消出来ますでしょうか?
20
20
 
21
21
 
22
22
 

2

説明の補足

2018/04/24 08:26

投稿

退会済みユーザー
test CHANGED
File without changes
test CHANGED
@@ -1,6 +1,8 @@
1
1
  ### 前提・実現したいこと
2
2
 
3
+ ウインドウサイズが1151px以下の時は、ドロワーメニューになるので
4
+
3
- ウインドウサイズが1151px以下の時は、フォーカスがメニューボタンとナビゲーションメニュー内だけの移動にし、
5
+ フォーカスがメニューボタンとナビゲーションメニュー内だけの移動にし、
4
6
 
5
7
  Tabキーを押したときの移動順序は、メニューボタン→ナビゲーションメニュー(親要素→子要素)→メニューボタン
6
8
 
@@ -8,7 +10,7 @@
8
10
 
9
11
  ナビゲーションメニュー(子要素→親要素)→メニューボタンになるようにする。
10
12
 
11
- 1152px以上の時にはフォーカス範囲の指定を解除する。
13
+ 1152px以上の時には普通に横並びのメニューになるのでフォーカス範囲の指定を解除する。
12
14
 
13
15
 
14
16
 

1

タイトル修正

2018/04/24 08:24

投稿

退会済みユーザー
test CHANGED
@@ -1 +1 @@
1
- ナビゲーションのフォーカス制御時と解除時のフォーカス順がおかしい
1
+ フォーカス制御時と解除時のフォーカス順がおかしいので正しくなるようにしたいです。
test CHANGED
File without changes