Blog 본문

지식공유/웹표준기술

안녕하세요 다룸 입니다. 오늘은 "반응형웹 레이아웃"에 대해 공유드리려고 합니다.
스마트폰과 태블릿이 생활화되면서 하나의 소스로 다양한 디바이스를 한번에 지원하는 원 소스 멀티 유즈(OSMU:One Source Multi Use)에 대한 필요성이 빠르게 자리잡고 있습니다.
이에 맞추어 반응형웹 디자인 역시 빠르게 진화하고 있습니다만, 다양한 디바이스에서 모두 잘 작동하는 확립된 패턴 또한 소수입니다.
오늘은 이를 최초로 정리한 루크 로블르스키(Luke Wroblewski)의 5가지 패턴에 대해 살펴보려고 합니다.

루크 로블르스키(Luke Wroblewski)의 5가지 패턴

  • 유동형(Mostly fluid)
  • 열 드롭(Column drop)
  • 레이아웃 시프터(Layout shifter)
  • 미세 조정(Tiny tweaks)
  • 캔버스 오프(Off canvas)

유동형 (Mostly Fluid)

유동형 패턴은 가변형 그리드로 구성하여 단순히 컨텐츠의 폭을 맞추는 방법입니다.
큰 화면에서 중간 크기의 화면까지는 여백 정도만 조정되고, 이어 작은 화면이 되면 그리드가 움직이면서 컨텐츠를 수직으로 재배치 합니다.
이 패턴의 중요한 장점은 작은 화면과 큰화면 사이에 단 하나의 중단점(breakpoints)만 있으면 된다는 것입니다.

유동형 레이아웃 이미지

열 끌어놓기 (Column Drop)

화면폭이 좁아져서 더이상 컨텐츠의 정상적인 표시가 힘들 경우,
컨텐츠 영역의 확보를 위해 컬럼을 하단으로 떨궈서 열을 수직으로 쌓습니다.
이 패턴은 화면크기에 관계없이 사용하는 페이지를 작성 하는데 도움이 됩니다.

열 끌어놓기 레이아웃 이미지

배치 이동 (Layout Shifter)

이 패턴은 스크린이 크기마다 다른 형태의 레이아웃을 사용합니다.
단순히 컬럼을 다른 컬럼 아래로 이동 및 재배치하는 방식 아닌, 기기나 화면 사이즈에 따라 콘텐츠를 이동시켜 레이아웃을 변형합니다.
때문에 앞서 소개한 패턴에 비해 단조로움을 벗어날 수 있으나, 서버의 작업이 상대적으로 많이 필요하고 유지관리가 복잡할 수 있습니다.

배치 이동 레이아웃 이미지

미세 조정 (Tiny Tweaks)

미세 조정은 글꼴이나 이미지의 크기 조정 또는 콘텐츠 미세 이동 등과 같은 작은 변화만 이루어집니다.
보통 하나의 컬럼을 사용하며 브라우저의 폭이 변하더라도 레이아웃의 변화가 크지 않아서 블로그에서 많이 사용됩니다.

미세 조정 레이아웃 이미지

오프 캔버스 (off-Canvas)

오프 캔버스는 메뉴나 서브 컬럼을 화면 좌/우측에 숨겨두고 필요할때 노출하는 패턴입니다.
콘텐츠를 수직으로 쌓지 않고 사용 빈도가 낮은 콘텐츠(예: 탐색 또는 앱 메뉴)를 화면 밖에 배치하고, 화면 크기가 충분히 커지면 표시하고, 작은 화면에서는 클릭했을 때만 보여줍니다.

오프 캔버스 레이아웃 이미지
반응형웹 디자인 예제
  • 모바일에서는 세로모드(640 PSD), 가로모드(1280 PSD)로 작업합니다.
    • 가로모드(1280 PSD)에서 이미지가 고정적 이미지인지 유동적(flexible) 이미지인지 알수있게 작업합니다.
  • 태블릿(iPad)에서는 세로모드(1536 PSD),가로모드(2048 PSD)로 작업합니다.
  • PC, 모바일에서 선형 구조로 작업합니다.
반응형웹 디자인 예제 이미지
  • PC 썸네일은 모바일(640 PSD)기준 원본사이즈(리사이즈)로 사용합니다.
반응형웹 디자인 예제 마크업 이미지
반응형웹 디자인시 고려사항
  • 오브젝트의 크기는 라인 포함 4의 배수 제작 권장하며(버튼, 아이콘 등), 폰트는 2의 배수로 사용합니다.
  • 용량 최소화를 위해 기본 폰트 사용 및 기본 요소(탭, 버튼 등) CSS3 처리 권장합니다.
  • 개발 이슈가 생기는 디자인
    • 모바일에서의 선형 구조를 해치는 경우
    • 서로 다른 UX를 제공하는 경우



지금까지 반응형웹의 대표적인 5가지 레이아웃과 

반응형웹 디자인시 고려해야할 사항에 대해 살펴봤습니다.
다음 시간에는 "반응형웹 이슈"에 대해 공유드리도록 하겠습니다.
감사합니다.



by. UI개발팀 bliss


'지식공유 > 웹표준기술' 카테고리의 다른 글

웹폰트 (Web Font)  (172) 2016.10.31
flexbox  (3) 2016.09.30
반응형 웹 4/4  (0) 2016.09.09
반응형 웹 3/4  (0) 2016.08.26
반응형 웹 1/4  (0) 2016.07.29
Posted by darum

전체 댓글

Blog 본문

지식공유/웹표준기술

안녕하세요 다룸 입니다. 반응형 웹에 대한 아래 4가지 주제로 공유드리려고 합니다.
  1. 반응형 웹 이란?
  2. 반응형웹 레이아웃
  3. 반응형웹 이슈.
  4. CSS @media queries (미디어 쿼리)를 이용한 반응형웹 적용
오늘 첫번째 "반응형 웹이란?" 주제로 정리하여 공유드립니다.

반응형 웹이란?

반응형 웹 디자인이란 가변 그리드, 가변 이미지, 미디어 쿼리를 이용해 하나의 소스 (One Code) 로 제작된 콘텐츠가 다양한 크기의 모바일 기기에 맞춰 해상도와 화면이 동적으로 변하는 기술을 말합니다.
이를 통해 사용자는 어떤 크기의 디스플레이에서 사이트를 방문하든 보다 높은 차원의 사용성 경험을 제공 받을 수 있습니다.
-출처 : Ethan Marcotte, Responsive Web Design.

반응형웹 특징

  1. 하나의 콘텐츠에 오직 하나의 HTML 소스만 있다.
  2. 특정 장치에 최적화된 여러벌의 HTML이 있으면 반응형이라고 부르지 않습니다.
  3. 특정 장치에 최적화된 페이지로 연결되는 별도의 URL이 있으면 반응형이라고 부르지 않습니다.

반응형웹 목적

  • 반응형 웹의 기본, 사용자에게 남는 공간 없이 한눈에 많은 정보를 노출하며 더 자세한 컨텐츠를 제공해 줄 수 있습니다.
  • 향후 출시 될 어떠한 Screen Device에 유연한 대응이 가능하고 효율적입니다.
  • 적용대상
    • 태블릿 PC
    • 고해상도 Mobile 단말기 (해상도 세로 size 640 이상) 의 Landscape mode

반응형웹 기획시 고려사항

  • pc화면에 최적화된 PC카페탑(http://top.cafe.daum.net/), Mobile에 최적화된 카페탑(http://m.cafe.daum.net/) 처럼 많은 컨텐츠를 좀더 효율적으로 보여주기 위해선 반응형 웹이 꼭 답은 아닙니다.
    • 처음에 문제 없도록 구성을 했더라도 운영하면서 추가되는 콘텐츠나 기능변화로 인해 반응형 웹이 장점이라고 말하는 모든 해상도에 대응은 물 건너 가는 수도 있습니다.
  • 반응형 웹 구성시 복잡한 정보구조의 형태를 어떠한 서비스도 가능하지만, 서비스 목적성과 일관성, 연속성을 가지고 있어야 합니다.
  • 이미지 사이즈 규정: 확대/축소, 행/열 조정
  • Touch(클릭)에 대한 고려 : 어떤 화면 사이즈에도 터치를 고려해야 합니다.

반응형 웹 적용방법

반응형 웹 적용방법(1) : CSS @media queries (미디어 쿼리)
미디어 타입(media type)은 단말기의 종류에 따라 각각 다른 스타일시트를 적용하게 하는 기능이며 CSS 2.1 부터 추가되었습니다
하지만 실제로 많이 사용되지 않았는데, 미디어 타입 만으로는 해당 기기의 특성을 정확히 파악하여 알맞은 스타일을 적용시키기 어려웠던 문제점이 있었기 때문입니다.
CSS 3에는 미디어 타입을 개선하여, 더 구체적인 조건에서 필요한 스타일을 정확하게 적용할 수 있도록 확장하였는데, 이를 미디어 쿼리(media query)라고 하며, CSS 3에 Media Query 라는 명세가 있고 최신 브라우저들(IE9 이상, Chrome, Safari, Firefox, Opera)과 아이폰용 모바일 사파리 브라우저도 이를 지원하고 있지만, 아직 국내 점유율이 상당한 IE8을 포함하여, 그 이하 버전은 지원이 안되고 있습니다.
미디어쿼리 사용예
  • 외부 CSS 파일을 조건에 다라 불러오는 방법
    < link rel="stylesheet" media="screen and (min-width: 640px)" href="example1.css">
    < link rel="stylesheet" media="screen and (min-width: 1024px)" href="example2.css">
    
    <!-- 화면 너비가 640px 이상이면 example1.css 를 로드, 1024px 이상이면 example2.css 도 같이 로드함 -->
  • style 태그를 이용하는 방법
    < style type="text/css" media="screen and (min-width: 640px)">
    body { background-color: #000 }
    < /style >
     
    < style type="text/css" media="screen and (min-width: 1024px)">
    body { background-color: #fff }
    < /style >
     
    <!-- 화면 너비가 640px 이상이면 배경색이 검정, 1024px 이상이면 배경색이 흰색으로 캐스캐이딩 됨 -->
  • css파일내에서 사용하는 방법
    @charset "utf-8";
     
    /* 1. 공통 (Reset, Common) */
     
    /* 2. 모바일 (뷰포트너비 640px 미만) */
    .sample {background-color:black}
     
    /* 3. 패블릿 가로모드/태블릿 (뷰포트 너비 640px 이상) */
    @media all and (min-width:640px) {
        .sample {background-color:red}
    }
     
    /* 4. PC (해상도 1024px 이상) */
    @media all and (min-width:1024px) {
        .sample {background-color:green}
    }
    적용사이트 :
반응형 웹 적용방법(2) : UA체크를 통한 CSS 분기
  • 브라우저의 UA(userAgent)값에 따라 CSS파일을 분기 처리하여 내려줍니다.
    • userAgent 문자열은 홈페이지를 만들때, 접속하는 사용자의 웹 브라우저 종류, 버전, 또는 모바일 장비에서 접속 했는지 등을 알고자 할 때 분석되는 문자열입니다.
  • PC브라우져 창크기를 변화해도 화면이 반응하지 않으며 해당기기에 최적화된 화면만 확인 할 수 있다
    • IE 6~8 을 위한 JS라이브러리가 별도로 필요하지 않음
  • UA분기를 이용한 모바일과 테블릿 환경에서 미디어쿼리를 다시 사용할 수 있어서 테블릿의 가로와 세로를 다르게 구현하거나 패블릿에서 테블릿의 화면을 보이게 처리할 수 도 있다
반응형 웹 적용방법(3) : 기타 반응형 웹 기법
  • 유동형 그리드 (fluid grids)
    • 반응형 웹 이전부터 사용되어 온, 그리드 시스템과 달리 EM 등이 제안하는 유동형 그리드는 고정된 PX가 아닌 em이나 %를 사용합니다.
    • Tiny Tweaks 방식으로 예시) 검색결과 화면
  • 유동형 이미지 (fluid/flexible images)
    • 유동형 그리드와 마찬가지로, 고정된 PX가 아닌 em과 %를 이용하여 접근하는 방법으로, 특히 이 경우 max-width를 사용하고, 이를 처리하지 못하는 ie6~ie7의 경우 jabascript를 사용합니다.
  • javascript를 통한 반응형 레이아웃 (responsive layouts) 대응
    • 스크린 사이즈 단계별 스타일을 하나의 CSS내에 class로 분리 구성하고 javascript를 사용하여 브라우져의 뷰포트 사이즈를 체크하여 최상위 요소에 해당 class명을 변경하여 CSS를 캐스케이딩합니다.



지금까지 "반응형 웹이란?"에 대해 살펴봤습니다.
이후 반응형웹 레이아웃에 대해 공유드리도록 하겠습니다.
기대 많이 해주세요~ 감사합니다.



by. UI개발팀 jude


'지식공유 > 웹표준기술' 카테고리의 다른 글

웹폰트 (Web Font)  (172) 2016.10.31
flexbox  (3) 2016.09.30
반응형 웹 4/4  (0) 2016.09.09
반응형 웹 3/4  (0) 2016.08.26
반응형 웹 2/4  (0) 2016.08.12
Posted by darum

전체 댓글

Blog 본문

접근성

HTML5 요소의 의미와 WAI-ARIA Landmark Role 의미가 겹칠 경우, 과연 어떻게 의미를 부여해야 할까요?




이슈

<nav role="navgitaion"> 상황을 보면 <nav> 라는 의미있는 요소와 WAI-ARIA 에서는 navigation이라는 Landmark Role이 선언되어 있습니다. 혹시 동일한 의미를 두 번 반복 사용하면 문제는 없을까요?


정의를 비교해 보면 다음과 같습니다.


<nav> Element

 

The nav element represents a section of a page that links to other pages or to parts within the page: a section with navigation links.


다른 페이지 또는 동일 페이지의 다른 부분으로 이어주는 섹션, 즉 내비게이션 링크로 구성된 섹션을 나타냅니다.

role="navigation" Landmark Role 

 

A collection of navigational elements (usually links) for navigating the document or related documents.


문서 또는 관련된 문서를 탐색 하기 위한 탐색 요소 (보통 링크)의 컬렉션입니다. 

 

보시다시피, 의미(특성)가 일치하여 겹친다는 것을  확인할 수 있습니다. 

이럴 경우를 대비하여, WAI-ARIA 명세에서는 Conflicts with Host Language Semantics 섹션을 마련하여 안내하고 있는데요? 

  • * WAI-ARIA의 상태와 속성이 WAI-ARIA 의미가 내포된 동일한 호스트 언어(여기서는 HTML특성과 일치할 경우, 특히 WAI-ARIA 기능을 이용하는 것이 문제가 될 수 있다.
  • * 강한 기본 의미(Strong Native Semantics)를 가지는 호스트 언어는 WAI-ARIA로 Override(무효화) 할 수 없는 문서 기능을 할 수 있다.


 "요소의 의미와 WAI-ARIA 의미가 일치하여 겹칠 시 WAI-ARIA를 사용하면 문제가 될 수 있다."는 것을 알 수 있습니다.


WAI-ARIA 정의를 제거한 <nav>요소 자체만으로 의미가 부여되므로 별도의 WAI-ARIA 정의를 하지 않아도 됩니다.



예제

Element + Landmark Role

Element
<header id= "daumHead" role= "banner" >
<article id= "mArticle" role= "main" >
<footer id= "daumFoot" role= "contentinfo" >
<nav role= "navigation" >
<article id= "daumContent" role= "main" >
<footer id= "daumFoot" role= "contentinfo" >
<header id= "daumHead" >
<article id= "mArticle" >
<footer id= "daumFoot" >

<nav>

<main id= "daumContent">
<footer id= "daumFoot"> 

 

참고 자료

자세한 W3C 명세 내용은 하기 사항을 참고바랍니다.

 

HTML5 + WAI-ARIA Conflicts with Host Language Semantics 내용 요약

 WAI-ARIA의 roles, 상태 및 속성은 이러한 의미를 이용할 수 없는 네이티브 호스트 언어 요소, 그리고 일반적으로 자체적으로 네이티브 의미가 없는 요소를 사용하는 경우 의미 정보를 추가하기 위한 것이다. 또한 유사하지만 동일하지 않은 의미를 가진 요소에 사용될 수 있다. 

접근성 API로 닿게 하는 방법을 정의 하는 WAI-ARIA 시멘틱를 항상 사용해야 한다. 

단, 아래 이슈로 인해 WAI-ARIA의 상태와 속성이 WAI-ARIA 의미가 내포된 동일한 호스트 언어 특성과 일치할 경우 제외 한다.
(WAI-ARIA 기능을 이용하는 것이 문제가 될 수 있다.) 

  • * WAI-ARIA 기능, 호스트 언어의 기능을 모두 제공시 그 값이 동기화(Sync)를 유지하지 않는 경우, 사용자 에이전트와 보조 기술은 사용할 값을 알 수 없다.

    • -- 의미 겹침을 위해 호스트 언어를 명시적으로 선언해야 한다.
      ※ User Agent는 WAI-ARIA 특성을 무시하고 대신 같은 암시적 의미를 가진 호스트 언어의 속성을 사용해야 한다.
  • * 강한 기본 의미를 가진 요소는 절대적인 WAI-ARIA의 의미 기능을 할 수 있다.

    • -- 호스트 언어 경우 WAI-ARIA로 덮어 쓸 수 없는 문서 기능을 할 수 있다.
  • * 적합성 검사기는 오류 또는 경고 신호 있을 수 있다.
  • * 이 경우 의미가 WAI-ARIA로 변경 한 경우의 처리는 불확실하다. 

 

※ 위 내용은 WAI-ARIA 및 HTML5 명세를 토대로 요약 정리된 문서입니다. 

참고



by. 접근성파트 bless

Posted by darum

전체 댓글