SlideShare una empresa de Scribd logo
1 de 49
웹 접근성 준수
차별 없는 웹 세상의 시작!
웹 접근성(KWCAG 2 + WAI-ARIA 1)을 고려한

UI 컴포넌트 디자인 - 캐로셀(Carousel)
Instructor


Last Winter
캐로셀 UI 컴포넌트 - 컨셉 (Concepts)
캐로셀 UI 컴포넌트 - 구조 (Structure)
캐로셀 UI 컴포넌트 - 기능 (Functionality)
캐로셀 UI 컴포넌트 - 애니메이션 (Animation)
Agenda
웹 접근성(KWCAG 2 + WAI-ARIA 1)을 고려한
캐로셀 UI 컴포넌트 - 컨셉 (Concepts)
웹 접근성을 고려한 UI 제작 가이드
캐로셀(Carousel) UI 컴포넌트 디자인
UI - Carousel
사용자 인터페이스 - 캐로셀 (공항 회전 컨베이어)


웹 접근성을 고려한 UI 제작 가이드
캐로셀(Carousel) UI 컴포넌트 디자인






http://goo.gl/tAfOid
웹 접근성을 고려한 UI 제작 가이드
캐로셀(Carousel) UI 컴포넌트 디자인
http://goo.gl/FeU6BB
웹 접근성을 고려한 UI 제작 가이드
캐로셀(Carousel) UI 컴포넌트 디자인
UX - Carousel
사용자 경험 - 캐로셀 (공항 회전 컨베이어)




http://goo.gl/5A4D90
웹 접근성을 고려한 UI 제작 가이드
캐로셀(Carousel) UI 컴포넌트 디자인
2
1



UX - Carousel
사용자 경험 - 캐로셀 (공항 회전 컨베이어)
http://goo.gl/qbjjoM
웹 접근성을 고려한 UI 제작 가이드
캐로셀(Carousel) UI 컴포넌트 디자인
UX - Carousel
사용자 경험 - 캐로셀 (공항 회전 컨베이어)




http://goo.gl/Nc3aq
웹 접근성을 고려한 UI 제작 가이드
캐로셀(Carousel) UI 컴포넌트 디자인
UX - Carousel
사용자 경험 - 캐로셀 (공항 회전 컨베이어)
http://goo.gl/WhPdST
웹 접근성을 고려한 UI 제작 가이드
캐로셀(Carousel) UI 컴포넌트 디자인






UI - Carousel
사용자 인터페이스 - 캐로셀 (공항 회전 컨베이어)
KWCAG.2 Checklist
웹 접근성 체크 리스트 - 한국 웹 콘텐츠 접근성 가이드라인 2
원칙 지침 검사 항목 체크
인식의 용이성 대체 텍스트 텍스트가 아닌 콘텐츠에 적절한 대체 텍스트가 제공되었나?
멀티미디어 대체 수단 멀티미디어 콘텐츠에 자막, 원고, 수화 중 일부가 제공되었는가?
자동 재생 배경 음악(3초 이상)을 멈출 수 있는 기능이 제공되는가?
명료성 텍스트/배경 간의 명도 대비가 충분한가?
색상 뿐만 아니라 다른 정보로 대상을 구분할 수 있는가?
명확하게 지시 사항을 제공하고 있는가?
운용의 용이성 키보드 접근성 마우스 없이 키보드로만으로도 사용이 가능한가?
포커스(초점) 상태가 화면에 표시되는가?
충분한 시간 제공 자동 변경 콘텐츠에 시간 조절 기능이 제공되는가?
자동 변경 콘텐츠에 재생/정지 기능이 제공되는가?
광 과민성 발작 예방 깜빡임이 심한(1초에 3회 이상) 콘텐츠의 발작 유무를 테스트 했는가?
쉬운 내비게이션 페이지마다 중복되는 영역을 건너 띌 수 있는 기능이 제공되는가?
콘텐츠 블록마다 제목이 제공되고 있는가?
적절하게 링크 텍스트에 대한 정보가 제공되고 있는가?
이해의 용이성 가독성 주 언어를 명시했는가?
예측 가능성 사용자 요구 사항이 없었음에도 임의로 동작하는 것이 있는가?
콘텐츠 논리성 별도의 스타일 없이도 내용을 이해할 수 있도록 논리적인가?
표를 눈으로 보지 않고도 이해할 수 있는가?
입력 양식에 대한 Label이 잘 연결되어 있는가?
입력 도움 오류 발생 시, 쉽게 오류를 이해하고 정정할 수 있는가?
견고성 문법 준수 작성된 문서의 구조/표현/동작 문서에 문제가 되는 문법 오류는 없는가?
웹 애플리케이션 접근성 신 기술 사용에 있어 하위 호환성을 고려하였는가?
http://www.w3c.or.kr/Translation/WCAG20/
KWCAG.2 Checklist
웹 접근성 체크 리스트 - 한국 웹 콘텐츠 접근성 가이드라인 2
http://bitsofco.de/the-accessibility-cheatsheet/
WAI-ARIA 1 Recommendation
애플리케이션 웹 접근성 향상 표준 권고안 - 버전 1
http://www.w3.org/TR/wai-aria/
WAI-ARIA 1 Recommendation
애플리케이션 웹 접근성 향상 표준 권고안 - 버전 1
https://developer.mozilla.org/ko/docs/Web/Accessibility/ARIA
WAI-ARIA 1 Recommendation
애플리케이션 웹 접근성 향상 표준 권고안 - 버전 1
WAI-ARIA 1 Recommendation
애플리케이션 웹 접근성 향상 표준 권고안 - 버전 1
http://dylanb.github.io/
웹 접근성(KWCAG 2 + WAI-ARIA 1)을 고려한
캐로셀 UI 컴포넌트 - 구조 (Structure)
웹 접근성을 고려한 UI 제작 가이드
캐로셀(Carousel) UI 컴포넌트 디자인
Carousel Structure
<div class="carousel">
<ul>
<li class="slide">…</li>
<li class="slide">…</li>
<li class="slide">…</li>
</ul>
</div>
웹 접근성을 고려한 UI 제작 가이드
캐로셀(Carousel) UI 컴포넌트 디자인
Carousel Structure
<div class="carousel">
<article class="slide">
<h4>…</h4>
…
</article>
<article class="slide">
<h4>…</h4>
…
</article>
<article class="slide">
<h4>…</h4>
…
</article>
</div>
웹 접근성을 고려한 UI 제작 가이드
캐로셀(Carousel) UI 컴포넌트 디자인
Carousel Label
<div class="carousel">
<h3 class=“a11y-hidden"> </h3>
<article class="slide">
<h4>…</h4>
…
</article>
…
</div>


웹 접근성을 고려한 UI 제작 가이드
캐로셀(Carousel) UI 컴포넌트 디자인
Carousel Label
<div class="carousel" role="region" aria-label=" ">
…
</div>
웹 접근성을 고려한 UI 제작 가이드
캐로셀(Carousel) UI 컴포넌트 디자인
<div class="carousel" role="region" aria-labelledby="carouselheading">
<h3 id="carouselheading" class=“a11y-hidden"> </h3>
…
</div>
Carousel Label
웹 접근성을 고려한 UI 제작 가이드
캐로셀(Carousel) UI 컴포넌트 디자인
<h3 aria-labelledby="carouselheading"> </h3>
<div class=“carousel" id="carouselheading">
<ul>
<li class="slide">
<img src="path/to/image1.jpg" alt=“ ">
</li>
<li class="slide">
<img src="path/to/image2.jpg" alt=" ">
</li>
<li class="slide">
<img src="path/to/image3.jpg" alt=“ ">
</li>
</ul>
</div>
Carousel Item Structure
웹 접근성을 고려한 UI 제작 가이드
캐로셀(Carousel) UI 컴포넌트 디자인
Carousel Item Structure
<h3 aria-labelledby="carouselheading"> </h3>
<div class=“carousel" id="carouselheading">
<ul>
<li class="slide">
<h4> </h4>
<p> 

<a href=“…"> </a>
</p>
</li>
<li class="slide">
<h4> </h4>
<p> 

<a href=“…"> </a>
</p>
</li>
웹 접근성을 고려한 UI 제작 가이드
캐로셀(Carousel) UI 컴포넌트 디자인
Carousel Styling
.carousel, .slide {
    width: 480px;
    padding: 0;
    margin: 0;
}
.carousel {
    position: relative;
}
.carousel ul {
    margin: 0;
    padding: 0;
}
.slide {
    height: 360px;
    background-size: cover;
    position: relative;
    margin-bottom: 1em;
웹 접근성을 고려한 UI 제작 가이드
캐로셀(Carousel) UI 컴포넌트 디자인
Carousel Styling
.a11y-hidden {
    overflow: hidden;
    position: absolute;
    clip:     rect(0,0,0,0); /* IE 6,7 */
    clip:     rect(0 0 0 0);
    width:    1px;
    height:   1px;
    margin:   -1px;
    border:   0;
    padding:  0;
}
.a11y-hidden.focusable:focus {
    overflow: visible;
    position: static;
    clip:     auto;
    width:    auto;
    height:   auto;
    margin:   0;
}
http://goo.gl/tpWk8
웹 접근성(KWCAG 2 + WAI-ARIA 1)을 고려한
캐로셀 UI 컴포넌트 - 기능 (Functionality)
웹 접근성을 고려한 UI 제작 가이드
캐로셀(Carousel) UI 컴포넌트 디자인
Displaying carousel items


.active .slide,
[aria-hidden="true"] {
  display: none;
  position: absolute;
  top: 0;
  left: 0;
  border: none;
}
 
.slide.current {
  display: block;
  z-index: 500;
}
<h3 aria-labelledby="carouselheading"> </h3>
<div class=“carousel active" id="carouselheading">
<ul>
<li class="slide">
...
</li>
<li class="slide">
...
</li>
<li class="slide">
...
</li>
<ul>
</div>
웹 접근성을 고려한 UI 제작 가이드
캐로셀(Carousel) UI 컴포넌트 디자인
Displaying carousel items


// 컨트롤 요소 생성
var ctrls = document.createElement('ul');
// 컨트롤 요소에 식별 클래스 속성 추가
ctrls.setAttribute('class', 'controls');
// 컨트롤 요소에 버튼 템플릿 추가
ctrls.innerHTML = [
  '<li>',
    '<button type="button" class="btn-prev">',
      '<img src="img/chevron-left.png" alt="이전 슬라이드 보기">',
    '</button>',
  '</li>',
  '<li>',
    '<button type="button" class="btn-next">',
      '<img src="img/chevron-right.png" alt="다음 슬라이드 보기">',
    '</button>',
  '</li>'
].join('');
// 컨트롤 버튼 요소에 이벤트 핸들러 연결
ctrls.querySelector('.prev').addEventListener('click', prevSlide);
ctrls.querySelector('.next').addEventListener('click', nextSlide);
// 캐러셀에 컨트롤 요소 추가
carousel.appendChild(ctrls);


웹 접근성을 고려한 UI 제작 가이드
캐로셀(Carousel) UI 컴포넌트 디자인
Displaying carousel items


.btn-prev, .btn-next {
    position: absolute;
    z-index: 700;
    top: 50%;
    margin-top: -2.5em;
    border: 0;
    /* 접근성: 배경/전경 명도 대비 */
    background: rgba(255, 255, 255, .6);
    line-height: 1;
    padding: 2em .5em;
    transition: padding .4s ease-out;
}
/* 접근성: 버튼 영역 확장 */
.btn-next:hover, .btn-next:focus, .btn-prev:hover, .btn-prev:focus {
    padding-left: 2em; padding-right: 2em;
}
.btn-prev {
    left: 0; border-radius: 0 .25em .25em 0;
}
.btn-next {
    right: 0; border-radius: .25em 0 0 .25em;
}


웹 접근성을 고려한 UI 제작 가이드
캐로셀(Carousel) UI 컴포넌트 디자인
Displaying carousel items


ctrls.querySelector('.prev').addEventListener('click', function(){
    announceSlide = true; // 식별자 설정: true
    prevSlide();
});
 
ctrls.querySelector('.next').addEventListener('click', function(){
    announceSlide = true;
    nextSlide();
});
 
…
 
function setSlides(new_current, focus, transition) {
    …
    slides[index].removeAttribute('aria-live');
    // 설정된 식별자 값이 true이면 실행
    if (announceSlide) {
        slides[new_current].setAttribute('aria-live', 'polite');
        // 식별자 설정 값을 false로 변경
        announceSlide = false;
    }
    …
}
웹 접근성을 고려한 UI 제작 가이드
캐로셀(Carousel) UI 컴포넌트 디자인
Displaying carousel items


ctrls.querySelector('.prev').addEventListener('click', function(){
    announceSlide = true; // 식별자 설정: true
    prevSlide();
});
 
ctrls.querySelector('.next').addEventListener('click', function(){
    announceSlide = true;
    nextSlide();
});
 
…
 
function setSlides(new_current, focus, transition) {
    …
    slides[index].removeAttribute('aria-live');
    // 설정된 식별자 값이 true이면 실행
    if (announceSlide) {
        slides[new_current].setAttribute('aria-live', 'polite');
        // 식별자 설정 값을 false로 변경
        announceSlide = false;
    }
    …
}
웹 접근성을 고려한 UI 제작 가이드
캐로셀(Carousel) UI 컴포넌트 디자인
Indicating carousel items


<ul class="slidenav">
<li>
<button class="current" data-slide="0">
<span class="a11y-hidden"> </span> 1
<span class="a11y-hidden"> </span>
<span class="a11y-hidden"> </span>
</button>
</li>
<li>
<button data-slide=“1">
<span class="a11y-hidden"> </span> 2</button>
<span class="a11y-hidden"> </span>
</button>
</li> …
</ul>
웹 접근성을 고려한 UI 제작 가이드
캐로셀(Carousel) UI 컴포넌트 디자인
Indicating carousel items


.slidenav button {
    height: 2em;
    width: 2em;
    border: 2px solid #036;
    line-height: 1em;
    font-weight: bold;
    background-color: #036;
    color: #fff;
}
.slidenav button.current {
    border-radius: .5em;
    background-color: #fff;
    color: #333;
}
.slidenav button:hover, .slidenav button:focus {
    border: 2px dashed #fff;
}
.slidenav button.current:hover, .slidenav button.current:focus {
    border: 2px dashed #036;
}


웹 접근성을 고려한 UI 제작 가이드
캐로셀(Carousel) UI 컴포넌트 디자인
Focusing carousel items


function setSlides(new_current, setFocus) {
    var length = slides.length;
    setFocus = typeof (setFocusHere !== 'undefined') ? setFocusHere : false;
    new_current = parseInt(new_current, 10);
 
    // 슬라이드 콘텐츠에 class 속성 설정
    slide[index].setAttribute('class', 'slide');
    slides[new_current].setAttribute('class', 'current slide');
    // 인디케이터 버튼에 class 속성 설정
    buttons[index].setAttribute('class', '');
    buttons[new_current].setAttribute('class', 'current');
    // setFocus 값이 true이면 코드 실행
    if (setFocus) {
        // 다음 슬라이드에 tabindex 속성 값 -1 설정
        // (일반적인 탭 포커싱이 아닌, 스크립팅 포커싱 처리)
        // 포커스 설정
웹 접근성을 고려한 UI 제작 가이드
캐로셀(Carousel) UI 컴포넌트 디자인
Focusing carousel items


function setSlides(new_current, setFocus) {
    var length = slides.length;
    setFocus = typeof (setFocusHere !== 'undefined') ? setFocusHere : false;
    new_current = parseInt(new_current, 10);
 
    // 슬라이드 콘텐츠에 class 속성 설정
    slide[index].setAttribute('class', 'slide');
    slides[new_current].setAttribute('class', 'current slide');
    // 인디케이터 버튼에 class 속성 설정
    buttons[index].setAttribute('class', '');
    buttons[new_current].setAttribute('class', 'current');
    // setFocus 값이 true이면 코드 실행
    if (setFocus) {
        // 다음 슬라이드에 tabindex 속성 값 -1 설정
        // (일반적인 탭 포커싱이 아닌, 스크립팅 포커싱 처리)
        // 포커스 설정
        slides[new_current].setAttribute('tabindex', '-1');
        slides[new_current].focus();
    }
    // index 값 new_current로 변경
    index = new_current;
}
 


웹 접근성을 고려한 UI 제작 가이드
캐로셀(Carousel) UI 컴포넌트 디자인
Focusing carousel items


slidenav.addEventListener('click', function(event) {
    var target = event.target;
    // localName - 소문자 요소 이름 반환 // IE 9+
    if (target.localName == 'button') {
        setSlides(target.getAttribute('data-slide'), true);
    }
}, true);
웹 접근성을 고려한 UI 제작 가이드
캐로셀(Carousel) UI 컴포넌트 디자인
Focusing carousel items


slidenav.addEventListener('click', function(event) {
    var target = event.target;
    // localName - 소문자 요소 이름 반환 // IE 9+
    if (target.localName == 'button') {
        setSlides(target.getAttribute('data-slide'), true);
    }
}, true);
웹 접근성(KWCAG 2 + WAI-ARIA 1)을 고려한
캐로셀 UI 컴포넌트 - 애니메이션 (Animation)
웹 접근성을 고려한 UI 제작 가이드
캐로셀(Carousel) UI 컴포넌트 디자인
Animating carousel items


<button data-action="stop">
<span class="a11y-hidden"> </span>
</button>
<button data-action="start">
<span class="a11y-hidden"> </span>▶
</button>
http://goo.gl/xhqO1N
웹 접근성을 고려한 UI 제작 가이드
캐로셀(Carousel) UI 컴포넌트 디자인
Animating carousel items


// 캐로셀 UI 컴포넌트에 마우스가 올라가면 애니메이션 보류
carousel.addEventListener('mouseenter', suspendAnimation);
// 캐로셀 UI 컴포넌트에 마우스가 나가면 애니메이션 시작
carousel.addEventListener('mouseleave', startAnimation);
// 캐로셀 UI 컴포넌트에 포커스 인 상태에서 이벤트 대상 객체가
// slide 클래스 속성 설정 값을 가지고 있지 않을 경우, 애니메이션 보류
carousel.addEventListener('focusin', function(event) {
    if (!hasClass(event.target, 'slide')) { suspendAnimation(); }
});
// 캐로셀 UI 컴포넌트에 포커스 아웃 상태에서 이벤트 대상 객체가
// slide 클래스 속성 설정 값을 가지고 있지 않을 경우, 애니메이션 시작
carousel.addEventListener('focusout', function(event) {
    if (!hasClass(event.target, 'slide')) {
        startAnimation();
    }
});








http://goo.gl/MutcE
웹 접근성을 고려한 UI 제작 가이드
캐로셀(Carousel) UI 컴포넌트 디자인
Animating carousel items


// 화면에 감춰진 이전, 다음 슬라이드 콘텐츠는 스크린 리더에서 읽지 않도록 

// aria-hidden 값을 true로 설정
slides[new_next].setAttribute('next slide'

+ ( (transition == 'next') ? ' in-transition' : '' ));
slides[new_next].setAttribute('aria-hidden', 'true');
 
slides[new_prev].setAttribute('prev slide'

+ ( (transition == 'prev') ? ' in-transition' : '') );
slides[new_prev].setAttribute('aria-hidden', 'true');
 
// 현재 화면에 보여지는 슬라이드 콘텐츠는 스크린 리더에서 읽을 수 있도록 

// aria-hidden 값을 false로 설정
slides[new_current].setAttribute('current slide');
slides[new_current].removeAttribute('aria-hidden');
웹 접근성을 고려한 UI 제작 가이드
캐로셀(Carousel) UI 컴포넌트 디자인
Animating carousel items


// 화면에 감춰진 이전, 다음 슬라이드 콘텐츠는 스크린 리더에서 읽지 않도록 

// aria-hidden 값을 true로 설정
slides[new_next].setAttribute('next slide'

+ ( (transition == 'next') ? ' in-transition' : '' ));
slides[new_next].setAttribute('aria-hidden', 'true');
 
slides[new_prev].setAttribute('prev slide'

+ ( (transition == 'prev') ? ' in-transition' : '') );
slides[new_prev].setAttribute('aria-hidden', 'true');
 
// 현재 화면에 보여지는 슬라이드 콘텐츠는 스크린 리더에서 읽을 수 있도록 

// aria-hidden 값을 false로 설정
slides[new_current].setAttribute('current slide');
slides[new_current].removeAttribute('aria-hidden');
웹 접근성을 고려한 UI 제작 가이드
캐로셀(Carousel) UI 컴포넌트 디자인
https://goo.gl/YsfRLh
웹 접근성을 고려한 UI 제작 가이드
캐로셀(Carousel) UI 컴포넌트 디자인
http://www.w3.org/WAI/tutorials/carousels/
Thank you!



Más contenido relacionado

La actualidad más candente

The UX Design 101- For Engaging Mobile Apps
The UX Design 101- For Engaging Mobile AppsThe UX Design 101- For Engaging Mobile Apps
The UX Design 101- For Engaging Mobile AppsSuyati Technologies
 
i/o extended: Intro to <UX> Design
i/o extended: Intro to <UX> Design  i/o extended: Intro to <UX> Design
i/o extended: Intro to <UX> Design GDGKuwaitGoogleDevel
 
RightBrain 컨설팅그룹 UX 세미나 - UXer 성장단계
RightBrain 컨설팅그룹 UX 세미나 - UXer 성장단계RightBrain 컨설팅그룹 UX 세미나 - UXer 성장단계
RightBrain 컨설팅그룹 UX 세미나 - UXer 성장단계RightBrain inc.
 
UI UX DESIGN.pptx
UI UX DESIGN.pptxUI UX DESIGN.pptx
UI UX DESIGN.pptxRiniyaMary
 
UI and UX Design for Startups - Matin Maleki
UI and UX Design for Startups - Matin MalekiUI and UX Design for Startups - Matin Maleki
UI and UX Design for Startups - Matin MalekiMatin Maleki
 
UI & UX Design for Startups
UI & UX Design for StartupsUI & UX Design for Startups
UI & UX Design for StartupsRichard Fang
 
UX 아카데미 오픈프로젝트 [ 올리브영 - UX/UI 개선]
UX 아카데미 오픈프로젝트 [ 올리브영 - UX/UI 개선]UX 아카데미 오픈프로젝트 [ 올리브영 - UX/UI 개선]
UX 아카데미 오픈프로젝트 [ 올리브영 - UX/UI 개선]RightBrain inc.
 
UI/UX Workshop - Hackvision
UI/UX Workshop - HackvisionUI/UX Workshop - Hackvision
UI/UX Workshop - HackvisionProttay Karim
 
UX 101: A quick & dirty introduction to user experience strategy & design
UX 101: A quick & dirty introduction to user experience strategy & designUX 101: A quick & dirty introduction to user experience strategy & design
UX 101: A quick & dirty introduction to user experience strategy & designMorgan McKeagney
 
Web UI Design Patterns 2014
Web UI Design Patterns 2014Web UI Design Patterns 2014
Web UI Design Patterns 2014Lewis Lin 🦊
 
Studia UXD Katowice - Wykład końcowy
Studia UXD Katowice - Wykład końcowyStudia UXD Katowice - Wykład końcowy
Studia UXD Katowice - Wykład końcowyTomasz Skórski
 
UX & UI Design: Differentiate through design
UX & UI Design: Differentiate through designUX & UI Design: Differentiate through design
UX & UI Design: Differentiate through designMoodLabs
 
What is UX, in 10 Slides
What is UX, in 10 SlidesWhat is UX, in 10 Slides
What is UX, in 10 SlidesJordan Julien
 

La actualidad más candente (20)

The UX Design 101- For Engaging Mobile Apps
The UX Design 101- For Engaging Mobile AppsThe UX Design 101- For Engaging Mobile Apps
The UX Design 101- For Engaging Mobile Apps
 
i/o extended: Intro to <UX> Design
i/o extended: Intro to <UX> Design  i/o extended: Intro to <UX> Design
i/o extended: Intro to <UX> Design
 
UX/UI design
UX/UI designUX/UI design
UX/UI design
 
RightBrain 컨설팅그룹 UX 세미나 - UXer 성장단계
RightBrain 컨설팅그룹 UX 세미나 - UXer 성장단계RightBrain 컨설팅그룹 UX 세미나 - UXer 성장단계
RightBrain 컨설팅그룹 UX 세미나 - UXer 성장단계
 
UI UX DESIGN.pptx
UI UX DESIGN.pptxUI UX DESIGN.pptx
UI UX DESIGN.pptx
 
UI and UX Design for Startups - Matin Maleki
UI and UX Design for Startups - Matin MalekiUI and UX Design for Startups - Matin Maleki
UI and UX Design for Startups - Matin Maleki
 
UX Best Practices
UX Best PracticesUX Best Practices
UX Best Practices
 
Ux design process
Ux design processUx design process
Ux design process
 
UI & UX Design for Startups
UI & UX Design for StartupsUI & UX Design for Startups
UI & UX Design for Startups
 
UX 아카데미 오픈프로젝트 [ 올리브영 - UX/UI 개선]
UX 아카데미 오픈프로젝트 [ 올리브영 - UX/UI 개선]UX 아카데미 오픈프로젝트 [ 올리브영 - UX/UI 개선]
UX 아카데미 오픈프로젝트 [ 올리브영 - UX/UI 개선]
 
UX is not UI!
UX is not UI!UX is not UI!
UX is not UI!
 
UI/UX Workshop - Hackvision
UI/UX Workshop - HackvisionUI/UX Workshop - Hackvision
UI/UX Workshop - Hackvision
 
Don’t make me think
Don’t make me thinkDon’t make me think
Don’t make me think
 
UX 101: A quick & dirty introduction to user experience strategy & design
UX 101: A quick & dirty introduction to user experience strategy & designUX 101: A quick & dirty introduction to user experience strategy & design
UX 101: A quick & dirty introduction to user experience strategy & design
 
一般企業におけるWebアクセシビリティの進め方
一般企業におけるWebアクセシビリティの進め方一般企業におけるWebアクセシビリティの進め方
一般企業におけるWebアクセシビリティの進め方
 
Web UI Design Patterns 2014
Web UI Design Patterns 2014Web UI Design Patterns 2014
Web UI Design Patterns 2014
 
Studia UXD Katowice - Wykład końcowy
Studia UXD Katowice - Wykład końcowyStudia UXD Katowice - Wykład końcowy
Studia UXD Katowice - Wykład końcowy
 
UI UX Design Presentation
UI UX Design Presentation UI UX Design Presentation
UI UX Design Presentation
 
UX & UI Design: Differentiate through design
UX & UI Design: Differentiate through designUX & UI Design: Differentiate through design
UX & UI Design: Differentiate through design
 
What is UX, in 10 Slides
What is UX, in 10 SlidesWhat is UX, in 10 Slides
What is UX, in 10 Slides
 

Destacado

자주 사용되는 UI 패턴(컴포넌트) 과 UI 레이아웃
자주 사용되는 UI 패턴(컴포넌트) 과 UI 레이아웃자주 사용되는 UI 패턴(컴포넌트) 과 UI 레이아웃
자주 사용되는 UI 패턴(컴포넌트) 과 UI 레이아웃Dongsik Yang
 
D가 알고 있는 걸 y도 알게 된다면 - 안드로메다에서 온 디자이너 이야기
D가 알고 있는 걸 y도 알게 된다면 - 안드로메다에서 온 디자이너 이야기D가 알고 있는 걸 y도 알게 된다면 - 안드로메다에서 온 디자이너 이야기
D가 알고 있는 걸 y도 알게 된다면 - 안드로메다에서 온 디자이너 이야기yamoo9
 
[7/27 접근성세미나] 디자이너는 손놓고 있어도 되나요?
[7/27 접근성세미나] 디자이너는 손놓고 있어도 되나요?[7/27 접근성세미나] 디자이너는 손놓고 있어도 되나요?
[7/27 접근성세미나] 디자이너는 손놓고 있어도 되나요?Nts Nuli
 
Improve CSS IR & Sprites Image Techniques for Accessibility
Improve CSS IR & Sprites Image Techniques for AccessibilityImprove CSS IR & Sprites Image Techniques for Accessibility
Improve CSS IR & Sprites Image Techniques for Accessibilityyamoo9
 
스마트워커를 위한 에버노트 활용
스마트워커를 위한 에버노트 활용스마트워커를 위한 에버노트 활용
스마트워커를 위한 에버노트 활용yamoo9
 
재사용UI 컴포넌트설계
재사용UI 컴포넌트설계재사용UI 컴포넌트설계
재사용UI 컴포넌트설계지수 윤
 
혁신적인 웹컴포넌트 라이브러리 - Polymer
혁신적인 웹컴포넌트 라이브러리 - Polymer혁신적인 웹컴포넌트 라이브러리 - Polymer
혁신적인 웹컴포넌트 라이브러리 - PolymerJae Sung Park
 
SEF 2017 — 디자이너, 디자인에 코딩을 더하다
SEF  2017 — 디자이너, 디자인에 코딩을 더하다SEF  2017 — 디자이너, 디자인에 코딩을 더하다
SEF 2017 — 디자이너, 디자인에 코딩을 더하다yamoo9
 
[2014널리세미나] 사용자 측면에서의 한국형 웹 콘텐츠 지침
[2014널리세미나] 사용자 측면에서의 한국형 웹 콘텐츠 지침[2014널리세미나] 사용자 측면에서의 한국형 웹 콘텐츠 지침
[2014널리세미나] 사용자 측면에서의 한국형 웹 콘텐츠 지침Nts Nuli
 
SNS 마케팅으로 기업 가치 높이기
SNS 마케팅으로 기업 가치 높이기SNS 마케팅으로 기업 가치 높이기
SNS 마케팅으로 기업 가치 높이기Juny Lee
 
2015 SINVAS USER CONFERENCE - SW 분리발주에의한 요구사항 및 분석설계방안
2015 SINVAS USER CONFERENCE - SW 분리발주에의한 요구사항 및 분석설계방안2015 SINVAS USER CONFERENCE - SW 분리발주에의한 요구사항 및 분석설계방안
2015 SINVAS USER CONFERENCE - SW 분리발주에의한 요구사항 및 분석설계방안Suji Lee
 
KTH, H3 2012 - 발표자료 - 모두의 도구로 프로토타이핑하라!
KTH, H3 2012 - 발표자료 - 모두의 도구로 프로토타이핑하라!KTH, H3 2012 - 발표자료 - 모두의 도구로 프로토타이핑하라!
KTH, H3 2012 - 발표자료 - 모두의 도구로 프로토타이핑하라!yamoo9
 
웹표준화,대한민국 의식개선프로젝트 02 웹디자이너란?
웹표준화,대한민국 의식개선프로젝트 02 웹디자이너란?웹표준화,대한민국 의식개선프로젝트 02 웹디자이너란?
웹표준화,대한민국 의식개선프로젝트 02 웹디자이너란?yamoo9
 
웹표준화,대한민국 의식개선프로젝트-03 웹표준,접근성이란?
웹표준화,대한민국 의식개선프로젝트-03 웹표준,접근성이란?웹표준화,대한민국 의식개선프로젝트-03 웹표준,접근성이란?
웹표준화,대한민국 의식개선프로젝트-03 웹표준,접근성이란?yamoo9
 
질병관리본부 특강 - 모바일 “고해상도 디스플레이” 시대를 준비하다
질병관리본부 특강 - 모바일 “고해상도 디스플레이”  시대를 준비하다질병관리본부 특강 - 모바일 “고해상도 디스플레이”  시대를 준비하다
질병관리본부 특강 - 모바일 “고해상도 디스플레이” 시대를 준비하다yamoo9
 
Responsive Web Design (RWD) vs Adaptive Web Design (AWD)
Responsive Web Design (RWD) vs Adaptive Web Design (AWD)Responsive Web Design (RWD) vs Adaptive Web Design (AWD)
Responsive Web Design (RWD) vs Adaptive Web Design (AWD)Jamshaid (Jam) Hashmi
 
도서 11번가 앱(모바일 웹) 사용성 모델 분석
도서 11번가 앱(모바일 웹) 사용성 모델 분석도서 11번가 앱(모바일 웹) 사용성 모델 분석
도서 11번가 앱(모바일 웹) 사용성 모델 분석yamoo9
 
머티리얼 디자인(material design)
머티리얼 디자인(material design)머티리얼 디자인(material design)
머티리얼 디자인(material design)Woncheol Lee
 
제 3회 DGMIT UI&UX 컨퍼런스 : UI의 기초와 창의적인 UI디자인 사례
 제 3회 DGMIT UI&UX 컨퍼런스 : UI의 기초와 창의적인 UI디자인 사례 제 3회 DGMIT UI&UX 컨퍼런스 : UI의 기초와 창의적인 UI디자인 사례
제 3회 DGMIT UI&UX 컨퍼런스 : UI의 기초와 창의적인 UI디자인 사례dgmit2009
 

Destacado (20)

자주 사용되는 UI 패턴(컴포넌트) 과 UI 레이아웃
자주 사용되는 UI 패턴(컴포넌트) 과 UI 레이아웃자주 사용되는 UI 패턴(컴포넌트) 과 UI 레이아웃
자주 사용되는 UI 패턴(컴포넌트) 과 UI 레이아웃
 
D가 알고 있는 걸 y도 알게 된다면 - 안드로메다에서 온 디자이너 이야기
D가 알고 있는 걸 y도 알게 된다면 - 안드로메다에서 온 디자이너 이야기D가 알고 있는 걸 y도 알게 된다면 - 안드로메다에서 온 디자이너 이야기
D가 알고 있는 걸 y도 알게 된다면 - 안드로메다에서 온 디자이너 이야기
 
[7/27 접근성세미나] 디자이너는 손놓고 있어도 되나요?
[7/27 접근성세미나] 디자이너는 손놓고 있어도 되나요?[7/27 접근성세미나] 디자이너는 손놓고 있어도 되나요?
[7/27 접근성세미나] 디자이너는 손놓고 있어도 되나요?
 
Improve CSS IR & Sprites Image Techniques for Accessibility
Improve CSS IR & Sprites Image Techniques for AccessibilityImprove CSS IR & Sprites Image Techniques for Accessibility
Improve CSS IR & Sprites Image Techniques for Accessibility
 
스마트워커를 위한 에버노트 활용
스마트워커를 위한 에버노트 활용스마트워커를 위한 에버노트 활용
스마트워커를 위한 에버노트 활용
 
재사용UI 컴포넌트설계
재사용UI 컴포넌트설계재사용UI 컴포넌트설계
재사용UI 컴포넌트설계
 
혁신적인 웹컴포넌트 라이브러리 - Polymer
혁신적인 웹컴포넌트 라이브러리 - Polymer혁신적인 웹컴포넌트 라이브러리 - Polymer
혁신적인 웹컴포넌트 라이브러리 - Polymer
 
SEF 2017 — 디자이너, 디자인에 코딩을 더하다
SEF  2017 — 디자이너, 디자인에 코딩을 더하다SEF  2017 — 디자이너, 디자인에 코딩을 더하다
SEF 2017 — 디자이너, 디자인에 코딩을 더하다
 
[2014널리세미나] 사용자 측면에서의 한국형 웹 콘텐츠 지침
[2014널리세미나] 사용자 측면에서의 한국형 웹 콘텐츠 지침[2014널리세미나] 사용자 측면에서의 한국형 웹 콘텐츠 지침
[2014널리세미나] 사용자 측면에서의 한국형 웹 콘텐츠 지침
 
SNS 마케팅으로 기업 가치 높이기
SNS 마케팅으로 기업 가치 높이기SNS 마케팅으로 기업 가치 높이기
SNS 마케팅으로 기업 가치 높이기
 
2015 SINVAS USER CONFERENCE - SW 분리발주에의한 요구사항 및 분석설계방안
2015 SINVAS USER CONFERENCE - SW 분리발주에의한 요구사항 및 분석설계방안2015 SINVAS USER CONFERENCE - SW 분리발주에의한 요구사항 및 분석설계방안
2015 SINVAS USER CONFERENCE - SW 분리발주에의한 요구사항 및 분석설계방안
 
KTH, H3 2012 - 발표자료 - 모두의 도구로 프로토타이핑하라!
KTH, H3 2012 - 발표자료 - 모두의 도구로 프로토타이핑하라!KTH, H3 2012 - 발표자료 - 모두의 도구로 프로토타이핑하라!
KTH, H3 2012 - 발표자료 - 모두의 도구로 프로토타이핑하라!
 
웹표준화,대한민국 의식개선프로젝트 02 웹디자이너란?
웹표준화,대한민국 의식개선프로젝트 02 웹디자이너란?웹표준화,대한민국 의식개선프로젝트 02 웹디자이너란?
웹표준화,대한민국 의식개선프로젝트 02 웹디자이너란?
 
웹표준화,대한민국 의식개선프로젝트-03 웹표준,접근성이란?
웹표준화,대한민국 의식개선프로젝트-03 웹표준,접근성이란?웹표준화,대한민국 의식개선프로젝트-03 웹표준,접근성이란?
웹표준화,대한민국 의식개선프로젝트-03 웹표준,접근성이란?
 
질병관리본부 특강 - 모바일 “고해상도 디스플레이” 시대를 준비하다
질병관리본부 특강 - 모바일 “고해상도 디스플레이”  시대를 준비하다질병관리본부 특강 - 모바일 “고해상도 디스플레이”  시대를 준비하다
질병관리본부 특강 - 모바일 “고해상도 디스플레이” 시대를 준비하다
 
Responsive Web Design (RWD) vs Adaptive Web Design (AWD)
Responsive Web Design (RWD) vs Adaptive Web Design (AWD)Responsive Web Design (RWD) vs Adaptive Web Design (AWD)
Responsive Web Design (RWD) vs Adaptive Web Design (AWD)
 
도서 11번가 앱(모바일 웹) 사용성 모델 분석
도서 11번가 앱(모바일 웹) 사용성 모델 분석도서 11번가 앱(모바일 웹) 사용성 모델 분석
도서 11번가 앱(모바일 웹) 사용성 모델 분석
 
머티리얼 디자인(material design)
머티리얼 디자인(material design)머티리얼 디자인(material design)
머티리얼 디자인(material design)
 
제 3회 DGMIT UI&UX 컨퍼런스 : UI의 기초와 창의적인 UI디자인 사례
 제 3회 DGMIT UI&UX 컨퍼런스 : UI의 기초와 창의적인 UI디자인 사례 제 3회 DGMIT UI&UX 컨퍼런스 : UI의 기초와 창의적인 UI디자인 사례
제 3회 DGMIT UI&UX 컨퍼런스 : UI의 기초와 창의적인 UI디자인 사례
 
Ux design process
Ux design processUx design process
Ux design process
 

Similar a 웹 접근성을 고려한 UI 컴포넌트 디자인 - 캐로셀(carousel) 편

Dreamweaver CS5.5 를 이용한 jQueryMobile 개발
Dreamweaver CS5.5 를 이용한 jQueryMobile 개발Dreamweaver CS5.5 를 이용한 jQueryMobile 개발
Dreamweaver CS5.5 를 이용한 jQueryMobile 개발JongKwang Kim
 
컴포넌트 관점에서 개발하기
컴포넌트 관점에서 개발하기컴포넌트 관점에서 개발하기
컴포넌트 관점에서 개발하기우영 주
 
코드스쿼드 마스터즈세미나 - UI개발자가돼보자
코드스쿼드 마스터즈세미나 - UI개발자가돼보자코드스쿼드 마스터즈세미나 - UI개발자가돼보자
코드스쿼드 마스터즈세미나 - UI개발자가돼보자지수 윤
 
iOS 앱 개발 강의 자료 #2
iOS 앱 개발 강의 자료 #2iOS 앱 개발 강의 자료 #2
iOS 앱 개발 강의 자료 #2Jeong-Hoon Mo
 
자바스크립트 프레임워크 살펴보기
자바스크립트 프레임워크 살펴보기자바스크립트 프레임워크 살펴보기
자바스크립트 프레임워크 살펴보기Jeado Ko
 
XE 레이아웃 제작 실무 노하우 1 - XECon2014 by 고진화
XE 레이아웃 제작 실무 노하우 1 - XECon2014 by 고진화XE 레이아웃 제작 실무 노하우 1 - XECon2014 by 고진화
XE 레이아웃 제작 실무 노하우 1 - XECon2014 by 고진화Jinhwa Ko
 
Java script 강의자료_ed13
Java script 강의자료_ed13Java script 강의자료_ed13
Java script 강의자료_ed13hungrok
 
Web develop UI/UX Tool 'SBUx'
Web develop UI/UX Tool 'SBUx'Web develop UI/UX Tool 'SBUx'
Web develop UI/UX Tool 'SBUx'ssuser4e0be8
 
Bootstrap에 대해서 정기철
Bootstrap에 대해서 정기철Bootstrap에 대해서 정기철
Bootstrap에 대해서 정기철Kichul Jung
 
Angular Popular Tools
Angular Popular ToolsAngular Popular Tools
Angular Popular ToolsSangHun Lee
 
[2014널리세미나] 접근성과 사용성, 기획자가 챙겨야 하는 이유
[2014널리세미나] 접근성과 사용성, 기획자가 챙겨야 하는 이유[2014널리세미나] 접근성과 사용성, 기획자가 챙겨야 하는 이유
[2014널리세미나] 접근성과 사용성, 기획자가 챙겨야 하는 이유Nts Nuli
 
Progressive Web Apps
Progressive Web AppsProgressive Web Apps
Progressive Web Appsjungkees
 
WEB/UI Trend Report 2013
WEB/UI Trend Report 2013WEB/UI Trend Report 2013
WEB/UI Trend Report 2013Dongsik Yang
 
Appview 소개
Appview 소개Appview 소개
Appview 소개logeo
 
모바일 코딩의 종류
모바일 코딩의 종류모바일 코딩의 종류
모바일 코딩의 종류승제 이
 
제11회 한시련 정보접근성 동향 세미나 발표자료(에스크레인 손학) v1.2 20150417(제본본)
제11회 한시련 정보접근성 동향 세미나 발표자료(에스크레인 손학) v1.2 20150417(제본본)제11회 한시련 정보접근성 동향 세미나 발표자료(에스크레인 손학) v1.2 20150417(제본본)
제11회 한시련 정보접근성 동향 세미나 발표자료(에스크레인 손학) v1.2 20150417(제본본)Hark ( Daniel ) SOHN
 
Deep dive into Modern frameworks - HTML5 Forum 2018
Deep dive into Modern frameworks - HTML5 Forum 2018Deep dive into Modern frameworks - HTML5 Forum 2018
Deep dive into Modern frameworks - HTML5 Forum 2018Kenneth Ceyer
 

Similar a 웹 접근성을 고려한 UI 컴포넌트 디자인 - 캐로셀(carousel) 편 (20)

Dreamweaver CS5.5 를 이용한 jQueryMobile 개발
Dreamweaver CS5.5 를 이용한 jQueryMobile 개발Dreamweaver CS5.5 를 이용한 jQueryMobile 개발
Dreamweaver CS5.5 를 이용한 jQueryMobile 개발
 
컴포넌트 관점에서 개발하기
컴포넌트 관점에서 개발하기컴포넌트 관점에서 개발하기
컴포넌트 관점에서 개발하기
 
WAI-ARIA
WAI-ARIAWAI-ARIA
WAI-ARIA
 
코드스쿼드 마스터즈세미나 - UI개발자가돼보자
코드스쿼드 마스터즈세미나 - UI개발자가돼보자코드스쿼드 마스터즈세미나 - UI개발자가돼보자
코드스쿼드 마스터즈세미나 - UI개발자가돼보자
 
iOS 앱 개발 강의 자료 #2
iOS 앱 개발 강의 자료 #2iOS 앱 개발 강의 자료 #2
iOS 앱 개발 강의 자료 #2
 
자바스크립트 프레임워크 살펴보기
자바스크립트 프레임워크 살펴보기자바스크립트 프레임워크 살펴보기
자바스크립트 프레임워크 살펴보기
 
react-ko.pdf
react-ko.pdfreact-ko.pdf
react-ko.pdf
 
XE 레이아웃 제작 실무 노하우 1 - XECon2014 by 고진화
XE 레이아웃 제작 실무 노하우 1 - XECon2014 by 고진화XE 레이아웃 제작 실무 노하우 1 - XECon2014 by 고진화
XE 레이아웃 제작 실무 노하우 1 - XECon2014 by 고진화
 
Java script 강의자료_ed13
Java script 강의자료_ed13Java script 강의자료_ed13
Java script 강의자료_ed13
 
Angularcdk
AngularcdkAngularcdk
Angularcdk
 
Web develop UI/UX Tool 'SBUx'
Web develop UI/UX Tool 'SBUx'Web develop UI/UX Tool 'SBUx'
Web develop UI/UX Tool 'SBUx'
 
Bootstrap에 대해서 정기철
Bootstrap에 대해서 정기철Bootstrap에 대해서 정기철
Bootstrap에 대해서 정기철
 
Angular Popular Tools
Angular Popular ToolsAngular Popular Tools
Angular Popular Tools
 
[2014널리세미나] 접근성과 사용성, 기획자가 챙겨야 하는 이유
[2014널리세미나] 접근성과 사용성, 기획자가 챙겨야 하는 이유[2014널리세미나] 접근성과 사용성, 기획자가 챙겨야 하는 이유
[2014널리세미나] 접근성과 사용성, 기획자가 챙겨야 하는 이유
 
Progressive Web Apps
Progressive Web AppsProgressive Web Apps
Progressive Web Apps
 
WEB/UI Trend Report 2013
WEB/UI Trend Report 2013WEB/UI Trend Report 2013
WEB/UI Trend Report 2013
 
Appview 소개
Appview 소개Appview 소개
Appview 소개
 
모바일 코딩의 종류
모바일 코딩의 종류모바일 코딩의 종류
모바일 코딩의 종류
 
제11회 한시련 정보접근성 동향 세미나 발표자료(에스크레인 손학) v1.2 20150417(제본본)
제11회 한시련 정보접근성 동향 세미나 발표자료(에스크레인 손학) v1.2 20150417(제본본)제11회 한시련 정보접근성 동향 세미나 발표자료(에스크레인 손학) v1.2 20150417(제본본)
제11회 한시련 정보접근성 동향 세미나 발표자료(에스크레인 손학) v1.2 20150417(제본본)
 
Deep dive into Modern frameworks - HTML5 Forum 2018
Deep dive into Modern frameworks - HTML5 Forum 2018Deep dive into Modern frameworks - HTML5 Forum 2018
Deep dive into Modern frameworks - HTML5 Forum 2018
 

Más de yamoo9

일관된 컬러 매니지먼트 - Consistent Color Management
일관된 컬러 매니지먼트 - Consistent Color Management일관된 컬러 매니지먼트 - Consistent Color Management
일관된 컬러 매니지먼트 - Consistent Color Managementyamoo9
 
KTH 자기소개, 지훈 PD
KTH 자기소개, 지훈 PDKTH 자기소개, 지훈 PD
KTH 자기소개, 지훈 PDyamoo9
 
KTH Easing Markup DAY01
KTH Easing Markup DAY01KTH Easing Markup DAY01
KTH Easing Markup DAY01yamoo9
 
DIK accessible technique
DIK accessible techniqueDIK accessible technique
DIK accessible techniqueyamoo9
 
다이내믹 스타일시트 언어 Less framework 활용 by yamoo9
다이내믹 스타일시트 언어 Less framework 활용 by yamoo9다이내믹 스타일시트 언어 Less framework 활용 by yamoo9
다이내믹 스타일시트 언어 Less framework 활용 by yamoo9yamoo9
 
Mac seminar - 2012
Mac seminar - 2012Mac seminar - 2012
Mac seminar - 2012yamoo9
 
웹표준화,대한민국 의식개선프로젝트 04 웹의 탄생과 미래
웹표준화,대한민국 의식개선프로젝트 04 웹의 탄생과 미래웹표준화,대한민국 의식개선프로젝트 04 웹의 탄생과 미래
웹표준화,대한민국 의식개선프로젝트 04 웹의 탄생과 미래yamoo9
 
Webinar mobile presentation_2010
Webinar mobile presentation_2010Webinar mobile presentation_2010
Webinar mobile presentation_2010yamoo9
 
Webinar Kuler Presentation 2010
Webinar Kuler Presentation 2010Webinar Kuler Presentation 2010
Webinar Kuler Presentation 2010yamoo9
 

Más de yamoo9 (9)

일관된 컬러 매니지먼트 - Consistent Color Management
일관된 컬러 매니지먼트 - Consistent Color Management일관된 컬러 매니지먼트 - Consistent Color Management
일관된 컬러 매니지먼트 - Consistent Color Management
 
KTH 자기소개, 지훈 PD
KTH 자기소개, 지훈 PDKTH 자기소개, 지훈 PD
KTH 자기소개, 지훈 PD
 
KTH Easing Markup DAY01
KTH Easing Markup DAY01KTH Easing Markup DAY01
KTH Easing Markup DAY01
 
DIK accessible technique
DIK accessible techniqueDIK accessible technique
DIK accessible technique
 
다이내믹 스타일시트 언어 Less framework 활용 by yamoo9
다이내믹 스타일시트 언어 Less framework 활용 by yamoo9다이내믹 스타일시트 언어 Less framework 활용 by yamoo9
다이내믹 스타일시트 언어 Less framework 활용 by yamoo9
 
Mac seminar - 2012
Mac seminar - 2012Mac seminar - 2012
Mac seminar - 2012
 
웹표준화,대한민국 의식개선프로젝트 04 웹의 탄생과 미래
웹표준화,대한민국 의식개선프로젝트 04 웹의 탄생과 미래웹표준화,대한민국 의식개선프로젝트 04 웹의 탄생과 미래
웹표준화,대한민국 의식개선프로젝트 04 웹의 탄생과 미래
 
Webinar mobile presentation_2010
Webinar mobile presentation_2010Webinar mobile presentation_2010
Webinar mobile presentation_2010
 
Webinar Kuler Presentation 2010
Webinar Kuler Presentation 2010Webinar Kuler Presentation 2010
Webinar Kuler Presentation 2010
 

웹 접근성을 고려한 UI 컴포넌트 디자인 - 캐로셀(carousel) 편

  • 1. 웹 접근성 준수 차별 없는 웹 세상의 시작! 웹 접근성(KWCAG 2 + WAI-ARIA 1)을 고려한
 UI 컴포넌트 디자인 - 캐로셀(Carousel)
  • 4. 캐로셀 UI 컴포넌트 - 컨셉 (Concepts) 캐로셀 UI 컴포넌트 - 구조 (Structure) 캐로셀 UI 컴포넌트 - 기능 (Functionality) 캐로셀 UI 컴포넌트 - 애니메이션 (Animation) Agenda
  • 5. 웹 접근성(KWCAG 2 + WAI-ARIA 1)을 고려한 캐로셀 UI 컴포넌트 - 컨셉 (Concepts)
  • 6. 웹 접근성을 고려한 UI 제작 가이드 캐로셀(Carousel) UI 컴포넌트 디자인 UI - Carousel 사용자 인터페이스 - 캐로셀 (공항 회전 컨베이어) 

  • 7. 웹 접근성을 고려한 UI 제작 가이드 캐로셀(Carousel) UI 컴포넌트 디자인 
 
 
 http://goo.gl/tAfOid
  • 8. 웹 접근성을 고려한 UI 제작 가이드 캐로셀(Carousel) UI 컴포넌트 디자인 http://goo.gl/FeU6BB
  • 9. 웹 접근성을 고려한 UI 제작 가이드 캐로셀(Carousel) UI 컴포넌트 디자인 UX - Carousel 사용자 경험 - 캐로셀 (공항 회전 컨베이어) 
 
 http://goo.gl/5A4D90
  • 10. 웹 접근성을 고려한 UI 제작 가이드 캐로셀(Carousel) UI 컴포넌트 디자인 2 1 

 UX - Carousel 사용자 경험 - 캐로셀 (공항 회전 컨베이어) http://goo.gl/qbjjoM
  • 11. 웹 접근성을 고려한 UI 제작 가이드 캐로셀(Carousel) UI 컴포넌트 디자인 UX - Carousel 사용자 경험 - 캐로셀 (공항 회전 컨베이어) 
 
 http://goo.gl/Nc3aq
  • 12. 웹 접근성을 고려한 UI 제작 가이드 캐로셀(Carousel) UI 컴포넌트 디자인 UX - Carousel 사용자 경험 - 캐로셀 (공항 회전 컨베이어) http://goo.gl/WhPdST
  • 13. 웹 접근성을 고려한 UI 제작 가이드 캐로셀(Carousel) UI 컴포넌트 디자인 
 
 
 UI - Carousel 사용자 인터페이스 - 캐로셀 (공항 회전 컨베이어)
  • 14. KWCAG.2 Checklist 웹 접근성 체크 리스트 - 한국 웹 콘텐츠 접근성 가이드라인 2 원칙 지침 검사 항목 체크 인식의 용이성 대체 텍스트 텍스트가 아닌 콘텐츠에 적절한 대체 텍스트가 제공되었나? 멀티미디어 대체 수단 멀티미디어 콘텐츠에 자막, 원고, 수화 중 일부가 제공되었는가? 자동 재생 배경 음악(3초 이상)을 멈출 수 있는 기능이 제공되는가? 명료성 텍스트/배경 간의 명도 대비가 충분한가? 색상 뿐만 아니라 다른 정보로 대상을 구분할 수 있는가? 명확하게 지시 사항을 제공하고 있는가? 운용의 용이성 키보드 접근성 마우스 없이 키보드로만으로도 사용이 가능한가? 포커스(초점) 상태가 화면에 표시되는가? 충분한 시간 제공 자동 변경 콘텐츠에 시간 조절 기능이 제공되는가? 자동 변경 콘텐츠에 재생/정지 기능이 제공되는가? 광 과민성 발작 예방 깜빡임이 심한(1초에 3회 이상) 콘텐츠의 발작 유무를 테스트 했는가? 쉬운 내비게이션 페이지마다 중복되는 영역을 건너 띌 수 있는 기능이 제공되는가? 콘텐츠 블록마다 제목이 제공되고 있는가? 적절하게 링크 텍스트에 대한 정보가 제공되고 있는가? 이해의 용이성 가독성 주 언어를 명시했는가? 예측 가능성 사용자 요구 사항이 없었음에도 임의로 동작하는 것이 있는가? 콘텐츠 논리성 별도의 스타일 없이도 내용을 이해할 수 있도록 논리적인가? 표를 눈으로 보지 않고도 이해할 수 있는가? 입력 양식에 대한 Label이 잘 연결되어 있는가? 입력 도움 오류 발생 시, 쉽게 오류를 이해하고 정정할 수 있는가? 견고성 문법 준수 작성된 문서의 구조/표현/동작 문서에 문제가 되는 문법 오류는 없는가? 웹 애플리케이션 접근성 신 기술 사용에 있어 하위 호환성을 고려하였는가? http://www.w3c.or.kr/Translation/WCAG20/
  • 15. KWCAG.2 Checklist 웹 접근성 체크 리스트 - 한국 웹 콘텐츠 접근성 가이드라인 2 http://bitsofco.de/the-accessibility-cheatsheet/
  • 16. WAI-ARIA 1 Recommendation 애플리케이션 웹 접근성 향상 표준 권고안 - 버전 1 http://www.w3.org/TR/wai-aria/
  • 17. WAI-ARIA 1 Recommendation 애플리케이션 웹 접근성 향상 표준 권고안 - 버전 1 https://developer.mozilla.org/ko/docs/Web/Accessibility/ARIA
  • 18. WAI-ARIA 1 Recommendation 애플리케이션 웹 접근성 향상 표준 권고안 - 버전 1
  • 19. WAI-ARIA 1 Recommendation 애플리케이션 웹 접근성 향상 표준 권고안 - 버전 1 http://dylanb.github.io/
  • 20. 웹 접근성(KWCAG 2 + WAI-ARIA 1)을 고려한 캐로셀 UI 컴포넌트 - 구조 (Structure)
  • 21. 웹 접근성을 고려한 UI 제작 가이드 캐로셀(Carousel) UI 컴포넌트 디자인 Carousel Structure <div class="carousel"> <ul> <li class="slide">…</li> <li class="slide">…</li> <li class="slide">…</li> </ul> </div>
  • 22. 웹 접근성을 고려한 UI 제작 가이드 캐로셀(Carousel) UI 컴포넌트 디자인 Carousel Structure <div class="carousel"> <article class="slide"> <h4>…</h4> … </article> <article class="slide"> <h4>…</h4> … </article> <article class="slide"> <h4>…</h4> … </article> </div>
  • 23. 웹 접근성을 고려한 UI 제작 가이드 캐로셀(Carousel) UI 컴포넌트 디자인 Carousel Label <div class="carousel"> <h3 class=“a11y-hidden"> </h3> <article class="slide"> <h4>…</h4> … </article> … </div> 

  • 24. 웹 접근성을 고려한 UI 제작 가이드 캐로셀(Carousel) UI 컴포넌트 디자인 Carousel Label <div class="carousel" role="region" aria-label=" "> … </div>
  • 25. 웹 접근성을 고려한 UI 제작 가이드 캐로셀(Carousel) UI 컴포넌트 디자인 <div class="carousel" role="region" aria-labelledby="carouselheading"> <h3 id="carouselheading" class=“a11y-hidden"> </h3> … </div> Carousel Label
  • 26. 웹 접근성을 고려한 UI 제작 가이드 캐로셀(Carousel) UI 컴포넌트 디자인 <h3 aria-labelledby="carouselheading"> </h3> <div class=“carousel" id="carouselheading"> <ul> <li class="slide"> <img src="path/to/image1.jpg" alt=“ "> </li> <li class="slide"> <img src="path/to/image2.jpg" alt=" "> </li> <li class="slide"> <img src="path/to/image3.jpg" alt=“ "> </li> </ul> </div> Carousel Item Structure
  • 27. 웹 접근성을 고려한 UI 제작 가이드 캐로셀(Carousel) UI 컴포넌트 디자인 Carousel Item Structure <h3 aria-labelledby="carouselheading"> </h3> <div class=“carousel" id="carouselheading"> <ul> <li class="slide"> <h4> </h4> <p> 
 <a href=“…"> </a> </p> </li> <li class="slide"> <h4> </h4> <p> 
 <a href=“…"> </a> </p> </li>
  • 28. 웹 접근성을 고려한 UI 제작 가이드 캐로셀(Carousel) UI 컴포넌트 디자인 Carousel Styling .carousel, .slide {     width: 480px;     padding: 0;     margin: 0; } .carousel {     position: relative; } .carousel ul {     margin: 0;     padding: 0; } .slide {     height: 360px;     background-size: cover;     position: relative;     margin-bottom: 1em;
  • 29. 웹 접근성을 고려한 UI 제작 가이드 캐로셀(Carousel) UI 컴포넌트 디자인 Carousel Styling .a11y-hidden {     overflow: hidden;     position: absolute;     clip:     rect(0,0,0,0); /* IE 6,7 */     clip:     rect(0 0 0 0);     width:    1px;     height:   1px;     margin:   -1px;     border:   0;     padding:  0; } .a11y-hidden.focusable:focus {     overflow: visible;     position: static;     clip:     auto;     width:    auto;     height:   auto;     margin:   0; } http://goo.gl/tpWk8
  • 30. 웹 접근성(KWCAG 2 + WAI-ARIA 1)을 고려한 캐로셀 UI 컴포넌트 - 기능 (Functionality)
  • 31. 웹 접근성을 고려한 UI 제작 가이드 캐로셀(Carousel) UI 컴포넌트 디자인 Displaying carousel items 
 .active .slide, [aria-hidden="true"] {   display: none;   position: absolute;   top: 0;   left: 0;   border: none; }   .slide.current {   display: block;   z-index: 500; } <h3 aria-labelledby="carouselheading"> </h3> <div class=“carousel active" id="carouselheading"> <ul> <li class="slide"> ... </li> <li class="slide"> ... </li> <li class="slide"> ... </li> <ul> </div>
  • 32. 웹 접근성을 고려한 UI 제작 가이드 캐로셀(Carousel) UI 컴포넌트 디자인 Displaying carousel items 
 // 컨트롤 요소 생성 var ctrls = document.createElement('ul'); // 컨트롤 요소에 식별 클래스 속성 추가 ctrls.setAttribute('class', 'controls'); // 컨트롤 요소에 버튼 템플릿 추가 ctrls.innerHTML = [   '<li>',     '<button type="button" class="btn-prev">',       '<img src="img/chevron-left.png" alt="이전 슬라이드 보기">',     '</button>',   '</li>',   '<li>',     '<button type="button" class="btn-next">',       '<img src="img/chevron-right.png" alt="다음 슬라이드 보기">',     '</button>',   '</li>' ].join(''); // 컨트롤 버튼 요소에 이벤트 핸들러 연결 ctrls.querySelector('.prev').addEventListener('click', prevSlide); ctrls.querySelector('.next').addEventListener('click', nextSlide); // 캐러셀에 컨트롤 요소 추가 carousel.appendChild(ctrls); 

  • 33. 웹 접근성을 고려한 UI 제작 가이드 캐로셀(Carousel) UI 컴포넌트 디자인 Displaying carousel items 
 .btn-prev, .btn-next {     position: absolute;     z-index: 700;     top: 50%;     margin-top: -2.5em;     border: 0;     /* 접근성: 배경/전경 명도 대비 */     background: rgba(255, 255, 255, .6);     line-height: 1;     padding: 2em .5em;     transition: padding .4s ease-out; } /* 접근성: 버튼 영역 확장 */ .btn-next:hover, .btn-next:focus, .btn-prev:hover, .btn-prev:focus {     padding-left: 2em; padding-right: 2em; } .btn-prev {     left: 0; border-radius: 0 .25em .25em 0; } .btn-next {     right: 0; border-radius: .25em 0 0 .25em; } 

  • 34. 웹 접근성을 고려한 UI 제작 가이드 캐로셀(Carousel) UI 컴포넌트 디자인 Displaying carousel items 
 ctrls.querySelector('.prev').addEventListener('click', function(){     announceSlide = true; // 식별자 설정: true     prevSlide(); });   ctrls.querySelector('.next').addEventListener('click', function(){     announceSlide = true;     nextSlide(); });   …   function setSlides(new_current, focus, transition) {     …     slides[index].removeAttribute('aria-live');     // 설정된 식별자 값이 true이면 실행     if (announceSlide) {         slides[new_current].setAttribute('aria-live', 'polite');         // 식별자 설정 값을 false로 변경         announceSlide = false;     }     … }
  • 35. 웹 접근성을 고려한 UI 제작 가이드 캐로셀(Carousel) UI 컴포넌트 디자인 Displaying carousel items 
 ctrls.querySelector('.prev').addEventListener('click', function(){     announceSlide = true; // 식별자 설정: true     prevSlide(); });   ctrls.querySelector('.next').addEventListener('click', function(){     announceSlide = true;     nextSlide(); });   …   function setSlides(new_current, focus, transition) {     …     slides[index].removeAttribute('aria-live');     // 설정된 식별자 값이 true이면 실행     if (announceSlide) {         slides[new_current].setAttribute('aria-live', 'polite');         // 식별자 설정 값을 false로 변경         announceSlide = false;     }     … }
  • 36. 웹 접근성을 고려한 UI 제작 가이드 캐로셀(Carousel) UI 컴포넌트 디자인 Indicating carousel items 
 <ul class="slidenav"> <li> <button class="current" data-slide="0"> <span class="a11y-hidden"> </span> 1 <span class="a11y-hidden"> </span> <span class="a11y-hidden"> </span> </button> </li> <li> <button data-slide=“1"> <span class="a11y-hidden"> </span> 2</button> <span class="a11y-hidden"> </span> </button> </li> … </ul>
  • 37. 웹 접근성을 고려한 UI 제작 가이드 캐로셀(Carousel) UI 컴포넌트 디자인 Indicating carousel items 
 .slidenav button {     height: 2em;     width: 2em;     border: 2px solid #036;     line-height: 1em;     font-weight: bold;     background-color: #036;     color: #fff; } .slidenav button.current {     border-radius: .5em;     background-color: #fff;     color: #333; } .slidenav button:hover, .slidenav button:focus {     border: 2px dashed #fff; } .slidenav button.current:hover, .slidenav button.current:focus {     border: 2px dashed #036; } 

  • 38. 웹 접근성을 고려한 UI 제작 가이드 캐로셀(Carousel) UI 컴포넌트 디자인 Focusing carousel items 
 function setSlides(new_current, setFocus) {     var length = slides.length;     setFocus = typeof (setFocusHere !== 'undefined') ? setFocusHere : false;     new_current = parseInt(new_current, 10);       // 슬라이드 콘텐츠에 class 속성 설정     slide[index].setAttribute('class', 'slide');     slides[new_current].setAttribute('class', 'current slide');     // 인디케이터 버튼에 class 속성 설정     buttons[index].setAttribute('class', '');     buttons[new_current].setAttribute('class', 'current');     // setFocus 값이 true이면 코드 실행     if (setFocus) {         // 다음 슬라이드에 tabindex 속성 값 -1 설정         // (일반적인 탭 포커싱이 아닌, 스크립팅 포커싱 처리)         // 포커스 설정
  • 39. 웹 접근성을 고려한 UI 제작 가이드 캐로셀(Carousel) UI 컴포넌트 디자인 Focusing carousel items 
 function setSlides(new_current, setFocus) {     var length = slides.length;     setFocus = typeof (setFocusHere !== 'undefined') ? setFocusHere : false;     new_current = parseInt(new_current, 10);       // 슬라이드 콘텐츠에 class 속성 설정     slide[index].setAttribute('class', 'slide');     slides[new_current].setAttribute('class', 'current slide');     // 인디케이터 버튼에 class 속성 설정     buttons[index].setAttribute('class', '');     buttons[new_current].setAttribute('class', 'current');     // setFocus 값이 true이면 코드 실행     if (setFocus) {         // 다음 슬라이드에 tabindex 속성 값 -1 설정         // (일반적인 탭 포커싱이 아닌, 스크립팅 포커싱 처리)         // 포커스 설정         slides[new_current].setAttribute('tabindex', '-1');         slides[new_current].focus();     }     // index 값 new_current로 변경     index = new_current; }   

  • 40. 웹 접근성을 고려한 UI 제작 가이드 캐로셀(Carousel) UI 컴포넌트 디자인 Focusing carousel items 
 slidenav.addEventListener('click', function(event) {     var target = event.target;     // localName - 소문자 요소 이름 반환 // IE 9+     if (target.localName == 'button') {         setSlides(target.getAttribute('data-slide'), true);     } }, true);
  • 41. 웹 접근성을 고려한 UI 제작 가이드 캐로셀(Carousel) UI 컴포넌트 디자인 Focusing carousel items 
 slidenav.addEventListener('click', function(event) {     var target = event.target;     // localName - 소문자 요소 이름 반환 // IE 9+     if (target.localName == 'button') {         setSlides(target.getAttribute('data-slide'), true);     } }, true);
  • 42. 웹 접근성(KWCAG 2 + WAI-ARIA 1)을 고려한 캐로셀 UI 컴포넌트 - 애니메이션 (Animation)
  • 43. 웹 접근성을 고려한 UI 제작 가이드 캐로셀(Carousel) UI 컴포넌트 디자인 Animating carousel items 
 <button data-action="stop"> <span class="a11y-hidden"> </span> </button> <button data-action="start"> <span class="a11y-hidden"> </span>▶ </button> http://goo.gl/xhqO1N
  • 44. 웹 접근성을 고려한 UI 제작 가이드 캐로셀(Carousel) UI 컴포넌트 디자인 Animating carousel items 
 // 캐로셀 UI 컴포넌트에 마우스가 올라가면 애니메이션 보류 carousel.addEventListener('mouseenter', suspendAnimation); // 캐로셀 UI 컴포넌트에 마우스가 나가면 애니메이션 시작 carousel.addEventListener('mouseleave', startAnimation); // 캐로셀 UI 컴포넌트에 포커스 인 상태에서 이벤트 대상 객체가 // slide 클래스 속성 설정 값을 가지고 있지 않을 경우, 애니메이션 보류 carousel.addEventListener('focusin', function(event) {     if (!hasClass(event.target, 'slide')) { suspendAnimation(); } }); // 캐로셀 UI 컴포넌트에 포커스 아웃 상태에서 이벤트 대상 객체가 // slide 클래스 속성 설정 값을 가지고 있지 않을 경우, 애니메이션 시작 carousel.addEventListener('focusout', function(event) {     if (!hasClass(event.target, 'slide')) {         startAnimation();     } }); 
 
 
 
 http://goo.gl/MutcE
  • 45. 웹 접근성을 고려한 UI 제작 가이드 캐로셀(Carousel) UI 컴포넌트 디자인 Animating carousel items 
 // 화면에 감춰진 이전, 다음 슬라이드 콘텐츠는 스크린 리더에서 읽지 않도록 
 // aria-hidden 값을 true로 설정 slides[new_next].setAttribute('next slide'
 + ( (transition == 'next') ? ' in-transition' : '' )); slides[new_next].setAttribute('aria-hidden', 'true');   slides[new_prev].setAttribute('prev slide'
 + ( (transition == 'prev') ? ' in-transition' : '') ); slides[new_prev].setAttribute('aria-hidden', 'true');   // 현재 화면에 보여지는 슬라이드 콘텐츠는 스크린 리더에서 읽을 수 있도록 
 // aria-hidden 값을 false로 설정 slides[new_current].setAttribute('current slide'); slides[new_current].removeAttribute('aria-hidden');
  • 46. 웹 접근성을 고려한 UI 제작 가이드 캐로셀(Carousel) UI 컴포넌트 디자인 Animating carousel items 
 // 화면에 감춰진 이전, 다음 슬라이드 콘텐츠는 스크린 리더에서 읽지 않도록 
 // aria-hidden 값을 true로 설정 slides[new_next].setAttribute('next slide'
 + ( (transition == 'next') ? ' in-transition' : '' )); slides[new_next].setAttribute('aria-hidden', 'true');   slides[new_prev].setAttribute('prev slide'
 + ( (transition == 'prev') ? ' in-transition' : '') ); slides[new_prev].setAttribute('aria-hidden', 'true');   // 현재 화면에 보여지는 슬라이드 콘텐츠는 스크린 리더에서 읽을 수 있도록 
 // aria-hidden 값을 false로 설정 slides[new_current].setAttribute('current slide'); slides[new_current].removeAttribute('aria-hidden');
  • 47. 웹 접근성을 고려한 UI 제작 가이드 캐로셀(Carousel) UI 컴포넌트 디자인 https://goo.gl/YsfRLh
  • 48. 웹 접근성을 고려한 UI 제작 가이드 캐로셀(Carousel) UI 컴포넌트 디자인 http://www.w3.org/WAI/tutorials/carousels/