반응형
CSS3 미디어 쿼리는 웹의 미래에 있어서 중요한 의미를 갖습니다. Device의 종류 별로만 스타일을 다르게 줄 수 있었던 이전과는 달리 Device 각각에 맞춰서 스타일에 변화를 줄 수 있기 때문입니다. 그 배경에는 웹에 접근할 수 있는 장치의 다양성이 점점 커지는 현상과, 이렇게 다양한 장치에서의 뷰를 효과적으로 컨트롤 할 수 있느냐에 대한 고민에서 시작되었습니다.
그리고 W3C에서는 이런 고민들은 이전부터 해왔습니다. 이에 MediaQuery라는 것이 탄생한 것 같습니다. 그렇다면 미디어쿼리가 무엇이고, 어떻게 사용하는지에 대하여 알아 보겠습니다.

브라우저 호환성

IE8 이하 브라우저에서 HTML5 적용하는 방법

현재 IE를 제외하면 미디어 쿼리를 지원하지 않는 브라우저 찾기가 정말 어렵습니다. 크롬, 사파리, 파이어폭스, 오페라 등은 모두 HTML5와 CSS3를 지원하기 때문입니다.
그럼 MediaQuery 사용하려면 먼저 미디어 쿼리를 지원하지 않는 브라우저를 확인해야 하는데요. 먼저 인터넷 익스플로러(이하 IE) 6, 7, 8은 CSS3 미디어쿼리를 지원하지 않습니다. 그냥 전체를 인식해서 알고 있는 미디어 종류가 아니니 무시하는 것으로 생각합니다.
정리하자면 IE 8 이하 버전을 제외하면 대중적인 모든 브라우저가 미디어 쿼리를 지원합니다. 그렇다면 IE를 상대적으로 많이 쓰는 우리나라에서는 사용할 수 없는가? 하는 의문의 가지게 됩니다. 하지만 사용이 가능한 방법이 있습니다.
일단 HTML5문서의 새로운 마크업 태그인 header, section, article, footer 등을 IE8이하 브라우저 에서 사용가능하게 해야 합니다. 이 문제의 해결방법으로 구글에서 제공하는 자바스크립트 라이브러리를 사용하고, CSS를 "Block Element"속성으로 지정해 주면 IE8 이하 브라우저에서도 HTML5의 새로운 태그들이 사용 가능해집니다. 사용방법은 아래와 같습니다.

head 태그 안에 삽입해서 사용 하시면 됩니다.
첨부파일은 아래에 있습니다.

출처 : http://code.google.com/p/html5shiv/

<!--[if lt IE 9]><![endif]-->
html5.js
다운로드

다음으로 html5 태그를 CSS를 이용하여 "Block Element"로 만들어 줍니다.

/* HTML5 새 요소 초기화 */
article, aside, figure, figure img,
figcaption, hgroup, footer, header, 
nav, section, video, object {display:block;}

위와 같이 실행했을 경우 IE8이하 버전에서도 HTML5 태그를 사용하여 Cross Browsing 할 수 있습니다.

CSS3 선택자(selector) 사용방법

가상 선택자를 사용하면 소스를 CSS를 최소화 하고 HTML문서를 더욱 시멘틱하고 간결하게 만들 수 있습니다. 그러나 IE8 이하 버전에서는 가상선택자를 대부분 지원하지 않습니다. 그래서 사용 할 수 없었으나 자바스크립트 라이브러리를 사용한다면 IE8 이하버전에서도 사용이 가능합니다.
사용방법은 http://jquery.com에서 제공하는 jQuery라이브러리와 선택자(select) 스크립트 라이브러리를 사용하시면 됩니다.

출처 : http://selectivizr.com/

<!--[if (gte IE 6)&(lte IE 8)]><![endif]-->
selectivizr.js
다운로드

위와 같이 적용하여 만들 경우 간결하고 시멘틱한 HTML5문서를 작성할 수 있으며, 모든 브라우저에서 Cross Browsing이 가능하게 될 것 입니다.

CSS Media Query 문법

@media all and (max-width:480px) { 
	해상도 480px이하 Size 의 css 적용 적용 
}

@media all and (min-width:481px) and (max-width:1024px) { 
	해상도 481px이상 1024px이하 Size의 css 적용 
}

@media all and (min-width:1025px){ 
	해상도 1025px 이상 Size의 css 적용 
}

저희 맑은커뮤니케이션의 경우 웹퍼블리싱 작업시 위 3가지 쿼리로 CSS문서를 작성합니다.
Media Query를 사용하는 방법은 3가지(첫째: 파일로 분기하는 방법, 둘째: 파일내에 작성하는 방법, 셋째: CSS파일내에서 작업하는 방법)가 있으나 속도를 고려 했을 경우 위와 같은 방법이 최선책입니다. 위 3가지 해상도는 모바일, 태블릿, 데스크탑, 스마트TV 및 여러 Device 넘나들수 있는 최소한의 쿼리 갯수입니다. 더 상세하게 나누는 것도 가능하나, 프로젝트는 일정이라는 시간내에 퍼블리싱을 완료해야 하므로 3개의 쿼리 CSS로 구분하였습니다.

위 방법들을 다 적용 하신다면 Media Query 기본 틀을 완성하게 되는 것입니다.

반응형
반응형
필자는 아직도 퍼블리싱을 할 경우 em과 px을 놓고 어떤것을 사용할지 고민할때가 많습니다. ie6에서 제공하지 않는 zoom 기능 때문에 사용자를 위해 em을 써야할지, 디자이너와 개발자의 편리함을 위해 em을 써야 할지 자주 고민을 합니다.
일반적으로 많은 사람들이 em단위를 쓰면 해상도에 따라서 크기가 달라진다고 오해하는 경우가 많습니다. 하지만 em을 쓰는 이유는 IE6과 같이 zoom기능이 없는 브라우저에서 브라우저의 글꼴 크기 옵션을 조절했을 때 동작하게 하기 위함입니다.
최근의 브라우저들이 모두 zoom 기능을 지원하고 있는 덕분에, 사실 em대신 px을 사용해도 무방합니다. em으로 취할 수 있는 이득이 거의 없기 때문이지요.
하지만 Responsive Web Design을 추구하는 작업을 하시거나, 화면 크기에 따라서 동적으로 body의 font-size를 조절하는 특수한 작업을 하실 경우에는 em을 활용하여 scaleable한 UI를 구성할 수도 있습니다. 또한 해외 웹사이트의 대부분이 em 을 사용하며, 유동성 부분 때문에 em이 표준으로 자리잡아가고 있습니다.

편리한 작업을 위한 CSS 단위별 폰트크기(px, em, %, pt)

Pixels EMs Percent Points
6px 0.375em 37.5% 5pt
7px 0.438em 43.8% 5pt
8px 0.5em 50% 6pt
9px 0.563em 56.3% 7pt
10px 0.625em 62.5% 8pt
11px 0.688em 68.8% 8pt
12px 0.75em 75% 9pt
13px 0.813em 81.3% 10pt
14px 0.875em 87.5% 11pt
15px 0.938em 93.8% 11pt
16px 1em 100% 12pt
17px 1.063em 106.3% 13pt
18px 1.125em 112.5% 14pt
19px 1.188em 118.8% 14pt
20px 1.25em 125% 15pt
21px 1.313em 131.3% 16pt
22px 1.375em 137.5% 17pt
23px 1.438em 143.8% 17pt
24px 1.5em 150% 18pt

단위별 폰트의 특징

pt :points(포인트) - 1포인트는 0.72인치
px :pixels(픽셀) - 화면 해상도에 대한 상대크기
%, em - 지정되거나 상속받은 (또는 상위 엘리먼트)에 대한 백분율 상대 크기

반응형
반응형
오디오 요소와 비디오 요소는 사운드의 재생과 동영상의 재생을 위한 요소입니다.
두 요소 모두 HTML4.01 이전에는 없었고 HTML5에 새로 추가된 요소입니다. 이전 버전의 HTML 문서에서도 사운드 파일과 비디오 파일을 재생할 수 있었습니다. 그러나 이전에는 embed요소와 object 요소를 사용했습니다. 하지만 많은 개발자와 디자이너, 퍼블리셔가 웹표준을 지향하고 공유할 수 있는 웹을 만들고자 하는 시대에 이것들을 하나의 문서가 아닌 플래시나 실버라이트, 미디어플레이어나 퀵타임 플레이어와 같은 외부 플러그인으로 작업하는 것은 장애와도 같은 것이라는 생각이 듭니다.
하지만 html5에서 제공하는 오디오 요소와 비디오 요소를 사용하면 외부의 플러그인을 사용하지 않고 내장된 플레이어로 음악이나 동영상을 감상할 수 있습니다. 이것은 멀티미디어 요소가 웹페이지의 일부분의 되는 것입니다. 이렇게 되면 웹의 기본 정신에도 부합되는 것이고 시맨틱한 웹페이지를 만드는 데 있어서 동영상도 그영역 안에 포함할 수 있게 됩니다.

비디오 재생을 위한 비디오 요소

ie9 익스플로러 firefox 파이어폭스 safari 사파리 chrome 크롬 opera 오페라
9.0 버전부터 지원 3.5 버전부터 지원 3.2 버전부터 지원 3.0 버전부터 지원 10.5 버전부터 지원
가장 기본적인 비디오 태그 사용 예와 지원하지 않는 브라우저를 위한 안내문구

위는 간단한 비디오 태그를 이용하여 비디오를 재생하기 위한 코드입니다.
오디오 태그와 별 반 차이는 없습니다.

비디오 태그에서 사용할 수 있는 속성

속성명 기능 및 역할
src 파일 경로 재생할 비디오 경로
autoplay 빈 값, autoplay 페이지가 로드되자마자 사운드를 재생할지 지정
controls 빈 값, controls 비디오를 제어할 수 잇는 컨트롤 패널 사용
preload none, auto, meta 페이지가 열리면 비디오를 미리 로드해 둠
none - 프리로드를 사용하지 않음
auto - 페이지가 모두 열리면 비디오 프리로드
meta - 페이지가 모두 열리면 비디오 메타정보만 로드
poster 이미지 URL 비디오가 로드 되기전에 보여 줄 이미지 설정
loop 반복횟수(숫자) 비디오를 몇 번 반복 재생할 것인지 설정
width 픽셀단위 숫자 비디오 스테이지의 너비
height 픽셀단위 숫자 비디오 스테이지의 높이

비디오 코덱 정리

비디오 코덱은 브라우저마다 지원하는 파일 포멧이 약간씩 다릅니다. 브라우저 지원별 코덱은 아래와 같습니다.

구분 ie9 익스플로러 firefox 파이어폭스 safari 사파리 chrome 크롬 opera 오페라
Theora(ogv, ogg) 지원 안함 지원함 지원 안함 지원함 지원함
H.264(mp4 등) 지원함 지원 안함 지원함 지원함 지원 안함
VP8(Web M) 지원함 지원함 미정 지원함 지원 안함
html5 비디오와 관련된 문제점(표준 포맷)

동영상 재생 코덱에는 H.264 코덱과 Ogg theora 코덱이 있습니다. H.264 코덱은 사파리와 크롬에서 기본적으로 지원합니다. 반면 오픈소스이며 라이센스 비용이 들어가지 않는 Ogg theora 코덱은 파이어폭스와, 오페라, 크롬에서 지원합니다. 또한 구글은 On2테크놀로지사를 인수하여 역시 오픈소스인 V8 기반의 '웹M'이라고 하는 새로운 동영상 포맷을 개발하였고 크롬이서 이를 지원한다고 하였습니다. 이러면서 구글은 동영상도 웹페이지의 일부가 되어야 한다고 주장하며 개방형 비디오를 지향한다고 말하고 있습니다. 그리하여 H.264코덱 사용을 고집하는 애플과 MS사 등 회사들간에 문제가 있어서 하나의 포맷 방식으로 통일화는 시일이 좀 걸릴 것 같습니다.

스크립트를 이용한 내장 미디어 컨트롤

자바스크립트를 이용해 'audio' 나 'video'와 같은 내장미디어를 재생시키거나 멈추게 할 수 있습니다.

기본적인 play 이벤트와 pause 이벤트를 이용한 외부 컨트롤 방법 (예제 첨부파일 참조)

//비디오 재생을 위한 play 함수
var play = function() {
	var videoTag = document.getElementsByTagName('video')[0]; //비디오 태그를 가져옴
	videoTag.play(); //videoTag 변수에 플레이 이벤트를 부여	
};
//비디오 일시 정지를 위한 pause 함수
var pause = function () {
	var videoTag = document.getElementsByTagName('video')[0]; //비디오 태그를 가져옴
	videoTag.pause(); //videoTag 변수에 일시정지 이벤트를 부여
};
video.zip
다운로드

 

document.getElementsByTagName('video')를 이용해서 HTML 마크업상에 있는 비디오 태그를 스크립트 안으로 가져옵니다. 이렇 가져온 비디오 태그는 'videoTag'라는 임의의 변수에 담고 재생 버튼이나 일시정지 버튼이 클릭될 경우 각 함수는 비디오 태그에 내장된 이벤트를 실행합니다.

HTML5 내장 미디어에서 사용할 수 있는 이벤트 핸들러
이벤트 이름 이벤트 설명
loadstart 미디어의 로딩이 시작될 때 발생하는 이벤트 입니다.
progress 미디어 다운로드 진행 상황의 부분을 주기적으로 알려주기 위해 발생하는 이벤트로 세 가지 속성을 가집니다.
  • - lengthComputable : 미디어의 전체 사이즈를 알면 'true'이고 아닐 경우는 'false'
  • - loaded : 지금까지 받은 미디어 크기의 바이트 단위 숫자
  • - total : 미디어 파일 전체 크기의 바이트 단위 숫자
suspend 미디어의 로딩이 중단되었을 때 발생하는 이벤트입니다. 미디어의 로딩이 완료되었거나 인터넷이 끊기는 등의 여러 가지 이유로 로딩이 중단되었을 때 발생합니다.
abort 재생이 중단되었을 때 발생하는 이벤트, 동영상이 재생되고 있다가 처음부터 다시 시작될 때 발생하는 이벤트 입니다.
error 에러가 발생한 경우에 발생하는 이벤트입니다.
emptied 미디어가 이미 다 로드되었거나 혹은 부분적으로 로드되었을 때 발생하는 이벤트입니다. 그리고 load() 메소드가 미디어를 다시 로드하라고 호출했을 때 발생합니다. 이는 미디어가 더 이상 로드할 것이 없어서 비어 있을 때를 의미합니다.(미디어가 완전히 없어서 빈 것과는 다릅니다.)
play 미디어를 새로 재생하거나 일시정지되어 있는 상태에서 연결하여 재생하는 이벤트입니다.
pause 재생 중인 미디어를 일시정지시키는 이벤트입니다.
loadedmetadata 미디어의 메타데이터가 모드 로드되었기 때문에 모든 속성은 앞으로 사용할 수 있는 유용한 정보를 담게 됩니다. 미디어의 메타데이터가 로드되었을 때 발생합니다.
loadeddata 미디어의 첫 번째 프레임의 로딩이 끝났을 때 발생합니다.
waiting 이미 요청된 작업(예를 들어 재생)을 잠시 보류하고 다른 작업(예를 들어 재생 위치 변경)을 먼저 끝낼 때 발생하는 이벤트입니다.
canplay 미디어가 재생되기에 충분한 데이터가 로드되었을 때 발생하는 이벤트입니다. 적어도 몇 개 정도의 프레임이 로드되어야 발생합니다.

인용자료 : HTML5 & CSS3(송종식)

반응형
반응형

국내 스마트폰 가입자 2500만 시대. 비장애인에게 스마트폰용 웹 앱은 그림의 떡입니다. 스마트폰에서 제공하는 음성 안내 기능을 켜도 메뉴를 제대로 읽어주지 않거나 아예 건너뛰기 때문입니다. 적잖은 스마트폰용 앱이 이와 처지가 다르지 않습니다. 이에 국가인권위에 장애인의 웹사용에 대한 불편 때문에 신고가 아주 많다고 합니다. 그렇기 때문에 웹 접근성은 권고 사항이 아니라 웹접근성은 의무 입니다.

그래서 '모바일 애프리케이션 웹접근성 지침'에 대하여 행안부에서 재정을 만들었습니다. 접근성이란 말은 시·청각·지적장애인이나 저시력자, 고령자 같은 정보 접근 취약계층에게도 동등한 이용 환경을 보장하자는 것이 그 개념입니다. 이는 웹 뿐 아니라 모바일 세상에도 똑같이 적용됩니다. 예를 들어 스마트러닝 한다고 달랑 동영상만 서비스하면 웹접근성과 모바일접근성에 위배 됩니다. 또 스마트러닝의 장점인 슬라이딩효과 사용 해야 된다고 강조를 하는데요 버튼으로 되어야 됩니다. 장애인이 손가락으로 드래그 하여 사용 하는것 문제가 있다는 것 입니다.

그러면 '모바일 애프리케이션 웹접근성 지침'에 대하여 보겠습니다. 이번 지침은 이런 접근성 원칙을 모바일 웹, 앱까지 확장했다는 점에서 의미가 있습니다. 행안부는 공공기관이나 지자체, 학교 등이 앞으로 웹, 앱 제작시 이 지침을 따르도록 했습니다. 2015년까지는 개인용 웹페이지를 뺀 민간 영역의 모든 웹사이트도 법에 따라야 하는 만큼, 이번 지침을 웹, 앱 개발시 적용하면 도움이 될것입니다. 모바일 애플리케이션 접근성 지침’은 앱 개발시 꼭 지켜야 할 ‘준수사항’ 7개와, 되도록 지켜야 할 ‘권고사항’ 8개로 구성돼 있습니다.

모바일 앱 접근성 준수사항

지침 내용 비고
대체 텍스트 이미지 등 텍스트 아닌 콘텐츠의 정보나 의미를 동등하게 인식할 수 있도록 대체 텍스트 제공 시각장애인 등
초점 모든 객체에 초점(focus)을 적용하고, 초점이 순차적으로 이동될 수 있도록 제공 시각·지체장애인 등
운영체제 접근성 기능 지원 각 모바일 운영체제에서 장애인을 위해 제공하는 기능과 호환될 수 있도록 서비스 제공 모든 장애인
누르기 동작 지원 슬라이드, 드래그앤드롭 등의 복잡한 동작을 단순한 방법으로 이용할 수 있도록 제공 시각·지체장애인 등
색에 무관한 인식 색각이상자도 정보를 동등하게 접근할 수 있도록 무늬, 패턴 등을 함께 제공 색각 이상자 등
명도 대비 저시력자, 고령자 등을 위해 전경과 배경을 구분할 수 있도록 고대비를 제공 저시력인 등
자막 및 수화 등의 제공 동영상에 대한 내용을 동등하게 인식할 수 있도록 자막, 원고 또는 수화를 제공 청각장애인 등

모바일 앱 접근성 권고사항

지침 내용 비고
기본 사용자 인터페이스 컴포넌트 모바일 운영체제에서 제공하는 기본적인 사용자 인터페이스 컴포넌트를 최대한 활용 모든 장애인
컨트롤간 충분한 간격 사용자 의도와 다른 컨트롤을 누르지 않도록 컨트롤간 충분한 간격을 배치 지체·지적장애인 등
알림 기능 한 가지 방법이 아닌 진동, 시각, 소리 등 다양한 방법으로 사용자에게 알림 기능을 제공 시각·청각장애인 등
누르기 동작 지원 슬라이드, 드래그앤드롭 등의 복잡한 동작을 단순한 방법으로 이용할 수 있도록 제공 시각·지체장애인 등
범용 폰트 이용 사용자의 선호에 따라 폰트의 크기의 조절, 확대 등이 가능하도록 기능 제공 저시력인 등
사용자 인터페이스의 일관성 인터페이스 요소를 사용자가 다시 학습하지 않아도 되도록 일관성 있는 배치 지적·시각 장애인 등
깜빡거림의 사용 제한 광과민성 발작을 일으킬 수 있는 콘텐츠를 제공하지 않음 광과민성 발작 증세
배경음 사용 금지 음성에 의존하는 시각장애인 등을 위해 자동으로 재생되는 배경음을 사용하지 않음 시각장애인 등
장애인 사용자 평가 장애인의 이용 보장을 위해 장애인 사용자를 대상으로 사용자 평가 수행 모든 장애인

퍼블리싱 페이지 "모바일 앱 접근성 지침" 테스트

모바일 퍼블리싱한 페이지를 얼마나 문법과, 지침에 맞게 테스트 할 수 있는 사이트 입니다.

http://v.mobileok.kr/ - 한국형 MobileOk TEST
http://validator.w3.org/mobile/ - W3C MobileOk TEST
반응형
반응형
오디오 요소와 비디오 요소는 사운드의 재생과 동영상의 재생을 위한 요소입니다.
두 요소 모두 HTML4.01 이전에는 없었고 HTML5에 새로 추가된 요소입니다. 이전 버전의 HTML 문서에서도 사운드 파일과 비디오 파일을 재생할 수 있었습니다. 그러나 이전에는 embed요소와 object 요소를 사용했습니다. 하지만 많은 개발자와 디자이너, 퍼블리셔가 웹표준을 지향하고 공유할 수 있는 웹을 만들고자 하는 시대에 이것들을 하나의 문서가 아닌 플래시나 실버라이트, 미디어플레이어나 퀵타임 플레이어와 같은 외부 플러그인으로 작업하는 것은 장애와도 같은 것이라는 생각이 듭니다.
하지만 html5에서 제공하는 오디오 요소와 비디오 요소를 사용하면 외부의 플러그인을 사용하지 않고 내장된 플레이어로 음악이나 동영상을 감상할 수 있습니다. 이것은 멀티미디어 요소가 웹페이지의 일부분의 되는 것입니다. 이렇게 되면 웹의 기본 정신에도 부합되는 것이고 시맨틱한 웹페이지를 만드는 데 있어서 동영상도 그영역 안에 포함할 수 있게 됩니다.

사운드 재생을 위한 오디오 요소

ie9 익스플로러 firefox 파이어폭스 safari 사파리 chrome 크롬 opera 오페라
9.0 버전부터 지원 3.5 버전부터 지원 3.2 버전부터 지원 3.0 버전부터 지원 10.5 버전부터 지원
가장 기본적인 오디오 요소 사용 예

가장 간단한 사용 방법입니다. 이렇게 하면 사운드를 재생하기 위한 플레이어가 올라와 있는 상태가 됩니다. 하지만 아무런 소리도 들리지 않을 것입니다. wav파일을 가지고 테스트 해보시면 됩니다.

페이지가 열리면 자동으로 사운드 재생

autoplay 속성을 추가해 주면 플레이어는 보이지 않지만 페이지가 로드되자마자 사운드가 재생됩니다.

오디오 태그를 지원하지 않는 브라우저의 경우 에러 문구 출력

오디오 요소가 지원되지 않는 브라우저에서는 소리가 재생되지 않지만 안내문구가 보이게 됩니다.

오디오 태그를 지원하지 않는 브라우저는 embed 태그로 대체 사운드 재생
	

위와 같이 작성할 경우 오디오 태그를 지원하는 브라우저에서는 오디오 태그를 통해서 사운드를 재생하고, 오디오 태그를 지원하지 않는 구 브라우저는 embed 태그를 통해서 사운드를 재생할 수 있습니다.

컨트롤 패널 보이기
	

위와 같이 확장 태그를 붙이면 플레이어 컨트롤 패널을 표시할 수 있습니다. controls 속성만 추가하면 플레이어의 모습을 확인할 수 있습니다.

오디오 요소에서 사용할 수 있는 속성

속성명 기능 및 역할
src 파일 경로 재생할 사운드 파일의 경로를 지정
autoplay 빈 값, autoplay 페이지가 로드되자마자 사운드를 재생할지 지정
controls 빈 값, controls 플레이어를 표시
loop 재생횟수(숫자) 사운드를 반복 재생할 횟수를 지정, 기본값은 1
preload none, auto, meta 페이지가 열리면 미리 로드해 둠
none - 프리로드를 사용하지 않음
auto - 페이지가 모드 열리면 비디로를 프리로드
meta - 페이지가 모두 열리면 비디오 메타정보만 로드

오디오 코덱 정리

오디오 코덱은 브라우저마다 지원하는 파일 포멧이 약간씩 다릅니다. 브라우저 지원별 코덱은 아래와 같습니다.

구분 ie9 익스플로러 firefox 파이어폭스 safari 사파리 chrome 크롬 opera 오페라
vorbis(oga, ogg) 지원 안함 지원함 지원 안함 지원함 지원함
wav, wma 지원함 지원함 지원함 지원 안함 지원함
mp3 지원함 지원 안함 지원함 지원함 지원 안함
AAC 지원함 지원 안함 지원함 지원함 지원 안함
반응형
반응형
퍼블리싱을 할 때 CSS hack을 사용하는 것은 좋은 방법이라고 할 수 없습니다.
Cross Browsing을 위해 hack을 사용하기 전에 좀더 주의하고 각 브라우저의 특성을 파악하여 설계하시면 CSS핵을 사용하지 않고도 해결할 수 있는 경우가 많습니다.
하지만 퍼블리싱을 하다보면 어쩔 수 없이 CSS hack을 사용 해야하는 경우가 있습니다.
그렇기에 맑은커뮤니케이션에서는 업무의 효율을 위해 아래와 같이 CSS hack을 정리하였습니다. 2013-10-01 재정
IE 적용 Hack

- IE 6 hack (underscore hack)

프로퍼티의 가장 앞부분에 언더스코어(_)를 붙이면 IE6에서만 적용이 됩니다.

#header {
	_width:100px;
}

- IE 6 hack (star hack)

셀렉트 앞에 *html을 붙이면 IE6에서만 적용이 됩니다.

*html #header {
	width:100px;
}

- IE 6 hack (해시 hack)

속성앞에 #삽입 IE6이하 버전에서만 적용이 됩니다.

#header {
	#width:100px;
}

- IE 6 hack (!important hack)

IE6버전에서는 한규칙안에 여러 개의 속성을 사용할수없으므로 첫번째 선언을 무시하고 두번째 선언을 적용 !important속성이 우선시되어 두번째 선언을 적용하게 됩니다. 나머지 브라우저에선 첫번째 속성이 적용됩니다.

#header {
	position:fixed !importent;
	position:static;
}

- IE 7 hack (star hack)

셀렉트 앞에 *+html body 또는 *:first-child+html 을 붙이면 IE7 or Opera 에서 적용이 됩니다.

*+html body #header {width:100px;} /* IE7, OPERA 적용 */ 
*:first-child+html #header {width:100px;} /* IE7 적용 */

- IE 7 hack (star hack)

프로퍼티의 가장 앞부분에 언더스코어(*)를 붙이면 IE7에서만 적용이 됩니다.

#header {
	*width:100px;
}

- IE 6, 7 hack (dot hack)

프로퍼티의 가장 앞부분에 닷(.)를 붙이면 IE6, 7에서만 적용이 됩니다.

#header {
	.width:100px;
}

- IE 7, 8, 9 hack (선택자 핵)

셀렉트 앞에 html>body를 붙이면 IE7, 8, 9 에서 적용이 됩니다.

html>body #header {
	width:100px;
}

- IE 8 hack (속성 핵)

프로퍼티의 속성값 앞부분에 (/*\**/)를 붙이면 IE8에서만 적용이 됩니다.

#header {
	width:/*\**/100px;
}

- IE 8, IE9, IE8+9 hack (속성 핵)

프로퍼티의 속성값 뒷부분에 \0/IE8 를 붙이면 IE8 에서 적용이 됩니다.
프로퍼티의 속성값 뒷부분에 \0/IE9 를 붙이면 IE9에서 적용이 됩니다.
프로퍼티의 속성값 뒷부분에 \0/IE8+9 를 붙이면 IE8과 IE9 모두 적용이 됩니다.

#header{
	width:100px \0/IE8;  /* IE8적용 */
	width:150px \0/IE9;  /* IE9적용 */ 
	height:50px  \0/IE8+9;  /* IE8+9적용 */
}	

- IE 9+10 hack (속성 핵)

셀렉트 앞에 @media screen and (min-width:0\0){} 를 감싸면 적용이 됩니다.

@media screen and (min-width:0\0){
	#header {
		width:100px;
	}
}

- IE 10 hack (속성 핵)

셀렉트 앞에 @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {} 를 감싸면 적용이 됩니다.

@media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {
	#header{
		width:100px;
	}
}
FireFox 적용 Hack

- FireFox hack

셀렉트 앞에 @-moz-document url-prefix() {}를 감싸면 적용이 됩니다.

@-moz-document url-prefix() {
	#header {
		width:100px;
	}
}
Chorme 적용 Hack

- Chorme hack

셀렉트 앞에 @media screen and (-webkit-min-device-pixel-ratio:0){}를 감싸면 적용이 됩니다.

@media screen and (-webkit-min-device-pixel-ratio:0) {
	#header {
		width:100px;
	}
}
Safari 적용 Hack

- Safari hack

프로퍼티의 속성값 앞에 html[xmlns*=""] body:last-child {}를 감싸면 적용이 됩니다.

html[xmlns*=""] body:last-child #header {
	width:100px;
}
Opera 적용 Hack

- Opera hack

프로퍼티의 속성값 앞에 body:first-of-type #header {}를 감싸면 적용이 됩니다.

body:first-of-type #header {
	width:100px;
}
반응형
반응형

 

블루웨이브 홈페이지 개편 배경(http://www.bluewaves.co.kr)

N스크린은 디바이스 간 연동으로 컨텐츠를 다양하게 볼 수 있는 개념으로 스마트폰 대중화화 더불어 각광을 받기 시작했고, 태블릿PC 사용자들이 늘어남에 따라 더욱 주목을 받기 시작했습니다. 전문가들은 N스크린 시대의 도래는 진정한 콘텐츠의 시대의 도래를 의미한다고 말하며 콘텐츠 시대의 도래는 콘텐츠가 시스템에 종속되는 것이 아니라 콘텐츠를 위해 나머지 시스템이 존재하는 콘텐츠 중심의 생태계 재편으로 연결될 것이라고 말하고 있습니다.
그렇다면 지금 업체들의 가장 큰 고민은 N-screen에 대응하는 것입니다. 즉 컨텐츠를 하나를 만들어서 다양한 형태의 화면사이즈, 모바일폰, 태블릿, TV 에 대응이 되어야 한다는 것입니다. 웹기술의 엄청난 강점인 Cross platfom 이나 Cross device 대응은 이제 기본입니다.
이제는 한번 만든 컨텐츠를 다양한 크기의 화면에 어떻게 대응 될것이냐가 정말 중요한 토픽입니다. 그런데 이런 문제를 해결해 주는 거의 유일한 기술이 바로 웹기술(MediaQuery)이라는 점이 우리 웹퍼블리셔의 전망을 밝게 해주어 필자는 퍼블리셔로서 자긍심을 더욱더 가지게 합니다.
현재 아이패드, 갤럽시 탭과 같은 태블릿이 나오면서 기존의 앱개발자들은 화면 해상도 대응하는 것에 지금 비상이 걸렸습니다.
그런데 우리 웹기술(html5 Media Query)에는 이미 이런 내용들이 모두 준비되어 있습니다.
그리하여 우리나라에는 아직 많이 사용되지 않은 Media Query를 사용하여 N-Screen을 보여 드리고자 이렇게 개편하게 되었습니다.

Media Query를 이용한 Responsive Web Design 구현

웹서비스 사업자들의 고민은 스마트폰만이 아닙니다. Connected Device들이 다양해지면서 대응해야 할 전략과 개발 리소스는 급증있고 이에 대표적인 Device가 Smart Pad입니다. Blaze의 최근 보고서에 의하면 iPad의 경우 97%의 사이트가 PC Web으로 대응을 하고 있지만, Honey Comb이 탑재되어 있는 XOOM은 32%의 사이트가 Mobile Web으로 대응을 하고 있는 것으로 알려져 있습니다. 앞으로 이런 단편화 현상은 더욱 심화될 것입니다.
이런 고민을 해결하고자 최근 많이 도입되고 있는 것이 바로 'Responsive Web Design(반응형 웹)' 입니다. Responsive Web Design은 Screen Size, Orientation 등 divice 환경에 반응하여 최적화된 웹페이지를 제공하는 것을 말합니다.
그리하여 새로운 기술을 보여드리고자 탄생하게 된것이 블루웨이브 반응형 웹사이트입니다.

블루웨이브 Responsive Web(반응형웹) Media Query 표현기법

그렇다면 간단하게 블루웨이브 반응형웹 사이트의 표현기법에 대해 알아보겠습니다.
HTML5는 차세대 웹표준스펙적용을 선행적으로 수행하였고 CSS3는 Media Query를 사용하여 유연한 레이아웃을 적용할 수 있도록 구성하였습니다.
그렇다면 미디어쿼리 문법에 대하여 보겠습니다.

@media all and (max-width:480px) {
	해상도 480px이하 Size 의 css 적용 적용
}
@media all and (min-width:481px) and (max-width:1024px) {
	해상도 481px이상 1024px이하 Size의 css 적용
}
@media all and (min-width:1025px){
	해상도 1025px 이상 Size의 css 적용
}

블루웨이브 반응형 웹사이트는 크게 Mibile Device 해상도를 고려한 위 첫번째 미디어쿼리를 적용하였고, Tablet Device 해상도를 고려한 위 두번째 미디어쿼리를 적용, DeskTop 해상도를 고려한 위 세번째 미디어쿼리를 적용하여 작업하였습니다.

앞으로 Media Query의 미래

현재 시점에서 Responsive Web(반응형웹)의 효용성에 대해 논란도 존재합니다.
하지만 Responsive Web(반응형웹)은 특정 Framework을 지칭하는 것이 아니고 방법론입니다.
Responsive Web은 단편화가 심화되고 있는 Web 환경을 대응할 수 있는 좋은 해결책이라고 생각합니다. 그리고 앞으로 2년후에는 많은 사이트들이 Responsive Web(반응형웹)으로 만들어진 사이트들이 트렌드가 될 것같은 생각도 듭니다. 마지막으로 효용성을 고려한 최근에 나온 Responsive Web으로 만들어진 해외 사이트 두개를 아래와 같이 보여드리며 글을 마치겠습니다.

반응형
반응형

(주)맑은커뮤니케이션 웹퍼블리싱팀에서는 이번에 html5에서 새롭게 추가된 시멘틱태그를 소개하려고 합니다.

이전 버전의 html은 구조를 상세하게 나타내기에는 부족함이 있었습니다. div를 이용해서 구조를 나누고 스타일로 의미를 부여함으로 사용했었죠.

html5에서 추가된 시멘틱 태그는 태그를 통해서 의미를 전달 태그입니다. 랜더링했을 때 눈에 보이는 부분은 없지만 소스를 보면 코드가 한눈에 쏙~

이것는 본인이 작성하지 않는 코드라도 한눈에 알 수있으니 차후의 유지보수를 함에있어서도 편리해질 거라고 생각합니다.

지금부터 어떤 태그들이 추가가 되었는지 살펴보려고 합니다.^^

section

문서 내에서 같은 의미의 구역(제목으로 시작하는 컨텐츠)을 나눌 때 사용합니다.

  • - 섹션의 제목으로 사용되는 제목컨텐츠는 상하구조를 갖지않으며 섹션내 사용된 제목컨텐츠는 레이아웃에 영향을 주지않습니다.
  • - 신문기사와 같은 배포형은 section이 아닌 article을 사용합니다.
  • - section에 스타일이나 스크립트를 지정하려고 한다면 div를 사용하는 것이 좋습니다.

육대주

지구 위의 여섯 대륙

아시아

  • 한국
  • 일본
  • 중국

한국

  • 서울
  • 부산
  • 광주

유럽

  • 프랑스
  • 이탈리아
  • 독일

article

문서내의 독립적인 글. 블로그 글이나 뉴스 본문 등을 구성하는 섹션을 나타냅니다.

  • - article 안에서 header, footer와 같은 하나의 페이지형식으로 구현할 수도 있으며 페이지 안에서 article요소가 여러번 반복되어도 상관이 없습니다.
  • - 인용구, 광고, 네비게이션 용도로 사용할 수 있지만, 단순한 삽입구를 위해 사용하는 것은 적합하지 않습니다.
  • - article 요소가 중첩될 경우, 중첩된 article 요소는 서로 상호관련이 있어야 합니다. 예를 들어, 블로그 글을 나타내는 article 요소 내부에 블로그 방문자 댓글이나 의견을 article 요소로 넣을 수 있습니다.

My blog

The Very First Rule of Life

...

If there's a microphone anywhere near you, assume it's hot and sending whatever you're saying to the world. Seriously.

...

aside

섹션의 내용과 관련이 없지는 않지만 분리되어도 문제 없는 섹션으로 주로 사이드바 형태로 표현됩니다.

  • - aside태그는 본문 내용에 대한 추가적인 설명을 할때 사용하는 태그로 본문과 별도로 추가적인 언급을 위해서 사용합니다.

header

머릿말 태그. 소개, 또는 문서에 대한 탐색 요소의 그룹을 지정합니다.

웹퍼블리싱 - (주)맑은커뮤니케이션

위치는 홍대입구역에서 10분 거리입니다

footer

페이지 하단부의 저작권 정보나 서비스 제공자 정보 등을 제공하는 부분을 의미합니다.

Copyright 2011 by bluewave. All Rights Reserved.

menu

페이지 내 기능을 하는 버튼/링크의 모음(대표적으로는 툴바)을 나타냅니다.

  • - type은 context, toolbar, list 3가지의 type이 있고 기본값은 list.

	
  • nav

    외부 페이지로 연결되는 링크의 모음을 나타냅니다.

    
    
    반응형
    반응형

    syntaxhighlight 입력 서식

    html 코드 입력 서식

     
    
     
    

    css 코드 입력 서식

     
    
     
    

    javascript코드 입력 서식

     
    
     
    

    highlight 사용

     
    
     
    
    • 순서 없는 리스트 첫번째
    • 순서 없는 리스트
    • 순서 없는 리스트 마지막
    1. 순서 있는 리스트 첫번째
    2. 순서 있는 리스트
    3. 순서 있는 리스트 마지막

    위와 같이 brush:; 다음 부분에 마치 css를 작성하듯 이어서 highlight:[line 1,line 2,line n...]을 입력하면 하이라이트를 줄 수 있습니다.

    블로그 본문 작성 가이드

    블로그 상단 로고부분이 h1, 블로그 제목이 h2이므로

     
    

    h3부터 블로그 내의 본문 제목입니다.

    포스팅 본문 내용을 작성하실 때 p와 br을 시맨틱하게 잘 섞어가며 작성하시면 됩니다

    더 시멘틱하게

    위 처럼 h4에 inline style로 padding 등 스타일을 직접 주어서 내용을 꾸밀 수 있습니다.
    br 을 통해 띄는 것 보다 더 심플하고 시맨틱 하겠죠?

    syntax highlighter의 단점은 보시는 바와 같이 <br />을 제대로 입력해도 self closing /(슬래쉬)가 사라진다는 점 입니다.
    이 문제는 귀찮아도 &lt;와 &gt;로 꺽쇠를 대체해서 엔터티를 직접 작성해주는 방법밖에 없습니다.
    <br> → 실제로 에디터에서 html모드로 <br />이라고 입력한 화면
    <br /> → 에디터에서 html모드로 &lt;br /&gt;이라고 입력한 화면

    지원 브라우저 아이콘 가이드

    ie6 ie7 ie8 ie9 firefox chrome safari opera

    아래 코드를 html 글쓰기 에디터에서 붙여넣으면 위와 같은 아이콘들이 나타납니다.
    블로그 포스트들의 통일성을 위해 ie6, ie7, ie8, ie9, firefox, chrome, safari, opera 순으로 넣어주시는 것을 권장합니다.
    정렬 순서의 근거는 브라우저 점유율 순이며, ie는 버전 순서대로 정렬되어 있습니다.

     
    ie6
    ie7
    ie8
    ie9
    firefox
    chrome
    safari
    opera
    
    반응형
    반응형

    biew는 no.1 웹에이전시 (주)맑은커뮤니케이션 UI Developer 그룹에서 운영하는 Front End 전문 블로그입니다.
    Malgun Communication interaction environment web 이라는 뜻을 가지고 있는 biew는 많은 사람들과 함께 유익한 Front End 정보들을 공유하기 위해 만들어졌습니다.

    공유 정신을 바탕으로 하기에 블로그 내의 모든 내용은 CC BY 3.0 라이센스를 적용하여 규약에 따라 자유로이 이용하실 수 있습니다.

    저희 Malgun Communication UI Developer 그룹은  수 많은 대기업 사이트와 관공서 사이트 작업을 통한 실무 노하우들을 가감없이 공유할 예정입니다.

    부족한 점이 많겠지만  함께 토의하고 이야기 나누며 정보를 얻을 수 있는 좋은 공유의 장이 되었으면 좋겠습니다.

    반응형

    + Recent posts