웹마스터 팁

얼마전 IE9 베타 런칭 행사에 'IE6부터 IE9까지 대응하기' 라는 주제로 발표를 다녀왔습니다. 경쟁사 브라우저들과 비교해도 손색이 없을만큼 높은 표준 준수율로 무장한 IE9 베타를 런칭하는 자리에서 낡은 브라우저 대응 방법을 소개하는 발표를 포함시켰다는 것은 어찌보면 참 아이러니한 일입니다. 국내 현실과 청중들의 욕구를 잘 헤아렸던 한국 마이크로소프트사의 배려라고 볼 수 있겠습니다. 발표자료발표영상.

IE6는 아직 살아있다.

넷어플리케이션즈의 2010년 9월 최근 통계에 따르면 아직 전세계적으로 IE6 사용자는 16% 수준의 점유율을 보이고 있습니다. 인터넷트렌드의 2010년 9월 통계에 따르면 국내 IE6 사용자는 무려 36%나 됩니다. IE7과 IE8은 국내에서 각각 30% 수준의 점유율을 보이고 있습니다. 사람들은 IE6 브라우저의 장례식을 치를만큼 낡은 브라우저가 하루속히 사라져주길 원하지만 IE6는 아직 죽지 않았습니다. 웹 개발자는 IE6, IE7, IE8, IE9 브라우저에 모두 대응해야 합니다.

IE 브라우저 버전은 4개 이지만 둘로 구분할 수 있다.

IE6, IE7, IE8, IE9 브라우저 버전은 4개이나 표준 준수율 또는 버그 발생률에 따라 단 두 가지 종류로 간단하게 구분할 수 있습니다.

IE8~9 브라우저는 HTML/CSS 표준 준수 테스트 도구인 Acid2 테스트에서 모두 만점을 받은 브라우저 들입니다. 따라서 이 두 버전의 브라우저는 다른 여느 표준계열 브라우저들(크롬, 사파리, 오페라, 파이어폭스)과 어깨를 나란히 합니다. IE8 또는 IE9 브라우저에 최적화된 웹 페이지는 다른 브라우저에서도 별 문제 없이 똑같이 잘 보입니다.

그러나 IE6~7 브라우저는 표준 준수율이 상대적으로 떨어지고 버그도 많습니다. 다행인것은 IE6 브라우저와 IE7 브라우저가 그다지 큰 차이가 없다는 점입니다. IE6 브라우저에서 발생하는 문제는 IE7 브라우저에서 동일하게 발생할 확률이 높습니다. IE7 브라우저가 조금 더 나을 뿐입니다.

결국 저는 IE8~9 브라우저에 대해서는 할 말이 많지 않습니다. IE6~7 브라우저의 문제 해결을 위해서 몇 가지 팁을 소개합니다.

IE6~7 문제해결.

  • IE6~7 브라우저도 표준에 따라 구현된 브라우저 입니다. 표준 DTD를 사용하면 표준에 따라 잘 렌더링 해줍니다. 반드시 표준 DTD를 사용하세요. DTD를 사용하지 않으면 모든 브라우저들이 IE5 버전의 브라우저를 흉내내는 Quirks Mode 상태가 되어 각기 다른 뷰를 출력합니다.
  • 사용자에게 무엇이 더 좋은지 HTML과 XHTML의 우위를 논하는 것은 무의미 합니다. 그러나 XHTML의 엄격한 문법이 개발자에게는 더 유리할 것입니다.
  • 엄격한(Strict) DTD와 호환형(Transitional) DTD 가운데 호환형 DTD를 추천합니다. 엄격함은 많은 오류를 유발할 뿐입니다.
  • 마이크로소프트의 독자적인 표현방식인 hasLayout이 존재한다는 것을 알아야 합니다. hasLayout이 없으면 문제가 발생하는 경우가 많습니다. IE6~7 브라우저에서 화면에 특정 요소가 보이지 않거나 잘못된 표현을 하면 { zoom:1 } 속성을 추가로 부여하여 해결되는 경우가 많습니다. zoom 속성은 hasLayout Trigger 이며 다른 브라우저들은 해석하지 않는 속성입니다.
  • float된 방향와 같은 방향의 margin이 존재하는 경우 IE6 브라우저는 margin을 두 배로 출력하는 빈도 높은 버그가 있습니다. float이 부여된 요소에 display:inline 속성을 부여하면 해결됩니다. float 처리된 요소는 display 속성이 block으로 바뀌는데 이 값은 절대로 덮어쓰기가 되지 않습니다. float된 요소에 inline 속성을 부여해도 여전히 block 이라는 뜻입니다. 그 밖에 float 요소는 마지막 텍스트 콘텐츠를 복사해서 출력하는 버그도 있는데 이 때에도 display:inline 속성을 부여하면 해결됩니다.
  • zoom 속성으로 문제가 해결되지 않으면 position:relative 속성을 사용해 봅니다. display:block 으로 처리한 a 요소의 클릭 영역이 제대로 잡히지 않는 문제를 해결할 수 있습니다. 마우스 커서 모양의 잘못된 출력도 바로잡아 줍니다.
  • *property:value와 같은 형식으로 속성 앞에 '*' 별표를 붙이면 IE6, IE7 브라우저만 이 속성을 해석하고 다른 브라우저는 무시합니다.
  • _property:value와 같은 형식으로 속성 앞에 '_' 언더바를 붙이면 IE6 브라우저만 이 속성을 해석하고 다른 브라우저는 무시합니다.

IE6~9 브라우저에서 CSS3 사용하기.

낡은 브라우저 때문에 신기술을 사용할 수 없다는 생각은 극복할 수 있습니다. 마이크로소프트에서 이미 오래전에 브라우저에 탑재했던 기술이 CSS3 표준으로 채택(word-wrap, text-overflow, @font-face)이 되기도 했고 CSS3와 유사한 기술(filter)이 이미 IE6~8 브라우저에 구현되어 있기도 합니다. 우리는 신기술을 사용하거나 또는 모방하면서 브라우저 호환성도 유지할 수 있습니다.

IE6~9 브라우저에서 사용하거나 모방할 수 있는 CSS3에 대한 설명은 HTML5 오픈 컨퍼런스에서 발표했던 CSS3 소개 자료로 대신합니다.

요점 정리.

  1. 현존하는 하위 버전 브라우저에 대한 호환성을 지원해야 합니다.
  2. 신 기술의 사용을 두려워 할 필요가 없습니다. 좋은 도구를 선택한 사용자에게 향상된 경험을 전달해야 합니다. 
  3. 낡은 브라우저 비난하기 보다는 새 브라우저를 추천 합시다.

다소 지루하고 딱딱한 발표였음에도 불구하고 관심을 가지고 들어주셔서 고맙습니다. IE10 런칭 행사에서는 더 이상 낡은 브라우저 이야기는 나오지 않았으면 하는 바램입니다. 아마 한국 마이크로소프트도 그런 기대를 가지고 있을 것입니다.

제목 글쓴이 날짜
"서버에 요청중..." 메세지 없애기 [3] SeoSeungHyun 2011.01.11
레이아웃수정시 참고할 zbXe레이아웃스킨의 css와 layout 상관관계(1.0.0 기본스킨) [21] file 갯가 2008.04.08
IE6부터 IE9까지 대응하기. [7] 정찬명 2010.10.13
탈퇴회원 아이디 재사용 막는 법 [5] 한꼬마 2011.01.18
XE 기본 서식 - 검정 바탕용 : p, div, br 없는 기본 서식입니다. [5] file LutZ 2010.07.01
홈페이지 브라우저 크기 고정시키기 코아 코스튬 2011.01.30
XE 속도 0.0001초라도 올리는 소소한 팁들 (추가) [5] 소렌트. 2010.11.16
좋은 PHP 강좌 사이트들 [1] HolyJohn 2010.12.29
?=down [4] L-Goon 2009.01.19
(게시물, 서명) 원하는 곳에 서명 출력하기 [10] file Simulz 2007.10.08
'대표도메인'연결후 '로그인'이 안될때,,(먹통) moonlight994 2011.01.24
회원확장정보 변수 (출처:sMaker) [5] 시니시즘 2010.07.19
로그인 폼에 관리자는 [Admin] 나타나게 하기 [4] file 오스카 2009.10.10
두개 이상의 홈페이지 운영 - Virtual host 설정 [1] 이성헌 2005.12.15
좋은 레이아웃 찿으시는 분들 선우님이 새로 또 하나의 좋은 레이아웃을 만드 셨네요... [2] 유샤인 2011.01.21
[ 도움요청 ] 게시판 리스트에서 작성한 사람만 작성한 리스트가 보이는 방법 ?? 잘살아서복수!! 2011.01.20
XE에서 레이아웃이나 기타의 페이지에 include 사용에 대한 오해??? [3] DuRi 2011.01.18
앞으로 공용선택자 사용은 그만.... [5] ForHanbi 2010.11.23
XE 업데이트 이후 발생하는 문제들에 대한 대응책 정리 [18] file Gekkou 2009.11.19
텍스타일 블로그 메인페이지 만들기 [1] designm 2011.01.13