FDS12_Markup_Summary

Tab menu | jQeury

공지사항 및 자료실 : Tab Menu

image

  1. Contents의 논리적 순서

    (1) 공지사항 탭

    (2) 공지사항 목록

    (3) 더보기

    (4) 자료실 탭

    (5) 자료실 목록

    (6) 더보기

  2. Semantic Markup

image

2-1. tab, list 분리

image

  1. Markup
<section class="notice board-act">
    <h2 id="notice" class="tab notice-heading" tabindex="0">공지사항</h2>
    <ul class="board-list notice-list">
        <li class="icon-dot-circled">
            <a href="#">HTML의 모든 것을 알려주마 샘플 활용법</a>
            <time datetime="2019-04-09T11:18:27">2019.04.09</time>
        </li>
        <li class="icon-dot-circled">
            <a href="#">W3C 사이트 리뉴얼 및 공지사항</a>
            <time datetime="2019-04-09T11:18:27">2019.04.09</time>
        </li>
        <li class="icon-dot-circled">
            <a href="#">KWCAG 2.1 소식</a>
            <time datetime="2019-04-09T11:18:27">2019.04.09</time>
        </li>
        <li class="icon-dot-circled">
            <a href="#">서버 점검으로 인한 사이트 이용안내 입니다.</a>
            <time datetime="2019-04-09T11:18:27">2019.04.09</time>
        </li>
        <li class="icon-dot-circled">
            <a href="#">여러분들이 생각하는 웹 접근성에 대해 이야기를 나누어 봅시다.</a>
            <time datetime="2019-04-09T11:18:27">2019.04.09</time>
        </li>
    </ul>
    <a href="#" class="icon-plus board-more notice-more" title="공지사항" aria-labelledby="notice">더보기</a>
</section>
<section class="pds">
    <h2 id="pds" class="tab pds-heading" tabindex="0">자료실</h2>
    <ul class="board-list pds-list">
        <li class="icon-dot-circled">
            <a href="#">디자인 사이트 링크 모음</a>
            <time datetime="2019-04-09T11:18:27">2019.04.09</time>
        </li>
        <li class="icon-dot-circled">
            <a href="#">웹 접근성 관련 자료 모음</a>
            <time datetime="2019-04-09T11:18:27">2019.04.09</time>
        </li>
        <li class="icon-dot-circled">
            <a href="#">예제 샘플 응용해보기</a>
            <time datetime="2019-04-09T11:18:27">2019.04.09</time>
        </li>
        <li class="icon-dot-circled">
            <a href="#">웹 접근성 향상을위한 국가 표준 기술 가이드라인</a>
            <time datetime="2019-04-09T11:18:27">2019.04.09</time>
        </li>
        <li class="icon-dot-circled">
            <a href="#">로얄티 프리 이미지 자료</a>
            <time datetime="2019-04-09T11:18:27">2019.04.09</time>
        </li>
    </ul>
    <a href="#" class="icon-plus board-more pds-more" title="자료실" aria-labelledby="pds">더보기</a>
</section>

Aria-label

: <h2>에 id=”notice”, 밑에 <a>에 title=”공지사항” 외에도 aria-labelledby=”notice”로

.tab (비활성화 / 활성화 디자인)

.tab {
    padding: 5px 10px;
    display: inline-block;
    font-size: 1.4rem;
    border:1px solid #aaa;
    background: #ccc linear-gradient(#ccc, #eee);
    color: #666;
    border-radius: 7px 7px 0 0;
    margin-bottom: 5px;
}
.board-act .tab{
    background: #fff;
    border: 1px solid #ed552f;
    color: #ed552f;
    border-bottom: #fff;
}

image

image

text-overflow : ellipsis

.board-list a{
    display: inline-block;
    width: 280px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
image

크기를 넘어가는 text 말줄임표로 처리함!


Script의 defer / async 속성 : HTML5 추가

image

main.js

  1. menu의 mouseover event
var item = $('.menu-item');
// 메인 메뉴의 하위 메뉴 제어를 위한 스크립트
// keyboard Focus도 받을 수 있게
item.on('mouseover focusin', function(){
    item.removeClass('menu-act');
    $(this).addClass('menu-act');
});
  1. Sub-menu의 mouseover event
var itemSubLink = $('.sub-menu a');
// 서브 메뉴의 icon을 제어
itemSubLink.attr('class', 'icon-dot-circled');
// 서브메뉴 mouseover, mouseout
itemSubLink.on('mouseover', function(){
    $(this).attr('class', 'icon-ok');
    $(this).addClass('sub-menu-act');
});

itemSubLink.on('mouseout', function(){
    $(this).attr('class', 'icon-dot-circled');
    $(this).removeClass('sub-menu-act');
});

  1. Board의 click event : tab menu & Keyevent
var tab = $('.tab');
var section = $('.notice, .pds');
// 탭 content 제어를 위한 스크립트
tab.on('click keyup', function(e){
    // 13 : enterm 32: space
    if(e.keyCode === 13 || e.type === 'click' || e.keyCode === 32){
        section.removeClass('board-act');
        $(this).parent().addClass('board-act');
    }
});

(1) 모든 section에 board-act 빼고, click event 발생한 (h2)의 parent(section)에만 board-act

(2) parent의 siblings에 removeClass 할 수도 있음

<h2>에 적용해도 손가락


예제별 ARIA Example