메뉴 보이기
Profile
이온디

2009.01.01

크로스브라우징 팁 정리

조회 수 4178 추천 수 0
이 글은 정찬명님의 나라디자인에서 '크로스브라우징 팁'을 읽고 정리한 내용을 갈무리해놓았습니다.

1) 바른 DTD 사용.
< !DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

2) 공동 선택자(*) 활용
* { margin:0; padding:0; font-size:small; font-family:돋움, Dotum, AppleGothic, sans-serif;}

공통선택자에 font 를 정의하는 이유는 body 태그에 적용한 font 속성은 form 내부의 element 와 th, td 태그에까지 이를 상속하지 않는데 반하여 공통선택자에 이것을 적용하면 모든 element 에 대한 font 를 완벽하게 통일할 수 있기 때문입니다. 또한 font 에 대표속성(예: {font:small 돋움, Dotum, AppleGothic, sans-serif})을 사용하지 않는 이유는 이를 사용하는 경우 h1~h6, th, strong 태그가 기본적으로 지니고 있는 font-weight 까지 모두 초기화(normal) 되기 때문입니다. font의 대표속성을 사용할 때 font-weight 따위를 정의하지 않으면 font-wight:normal 상태로 렌더링 됩니다.


3) 의도하지 않았던 여백이 발생하는 경우는 보통 inline 형태의 element 문제 또는 IE 의 버그 때문 입니다. inline 형태의 element 는 항상 line-height 를 지니고 있습니다. 따라서 의도하지 않았던 여백이 발생하는 경우 일단 inline element 의 line-height 문제가 아닌지 먼저 확인해 보아야 합니다. line-height 도 화면에서 분명히 면적을 차지하고 있습니다. 안타깝게도 line-height 속성을 CSS 에서 따로 정의하지 않았다면 웹 브라우저 제품마다 line-heght 를 다르게 렌더링 할 것입니다. 이 때문에 어떤 브라우저에서는 의도한 대로 나타나지만 어떤 브라우저에서는 박스와 박스 사이에 여백이 생길 수도 있는 것입니다. 또 다른 문제는 잘 알려진 IE 버그로서 block 된 li 에 발생하는 알 수 없는 여백의 문제 입니다. 이럴 때에는 해당 li 가 화면에서 차지하는 면적을 제거하기 위하여 li {float:left; clear:both} 를 적용하고 float 된 li 의 면적이 부모 element 에게는 유효하게 전달되도록 ul {overflow-hidden} 을 적용해 보시기 바랍니다.

4) 화면 레이아웃을 결정할 때 position 속성을 사용하거나 또는 float 을 사용하라고 배웠을 것입니다. {position:absolute} 상태일 때에는 화면에서 면적을 차지하지 않는다는 것을 잘 알고 계실껍니다. 그리고 {position:absolute} 상태일 때에는 그다지 렌더링 관련 버그를 만나는 경우가 없을 것입니다. 하지만 float 의 경우 IE 에서는 버그가 있으므로 FF, OP 브라우저와의 차이가 발견되면 일단 IE 를 믿지 마시기 바랍니다. 이것에 대한 문제해결은 float 이 화면에서 면적을 차지하지 않는다는 사실과 IE 에서는 이와 관련된 버그가 있다는 사실을 인지하는 것으로부터 시작됩니다. 자주 발견되는 IE 의 렌더링 오류는 float 된 요소와 float 되지 않은 요소가 만나는 방법입니다. float 은 원래 주변의 inline 요소만 흐르도록 하는것이 맞지만 IE 는 block 된 이웃 요소도 float 의 영향을 받습니다.
IE 처럼 렌더링 시키려면 b 상자에도 float 속성을 넣어주면 됩니다. float 된 element 는 float 되지 않은이웃 element 와 서로 간섭하지 않지만 float 된 이웃 element 끼리는 서로의 면적을 인식하게 되기 때문입니다. 추가적으로 IE 6.x는 float된 요소에 적용된 margin을 두 배로 출력하는 버그가 있습니다. 따라서 float을 사용할때 margin을 함께 사용하지 않는것도 중요한 팁 입니다.
Profile
0
Lv

0개의 댓글

에디터
번호 제목 날짜 조회 수
공지 [웹표준] 코딩 배울 수 있는 사이트 모음(HTML/CSS/JS/IMG/PHP) 2018.01.03 99
공지 [jQuery] jQuery를 배울수 있는 동네들입니다. 2013.08.09 19176
공지 [미분류] 관련 링크 2010.05.23 33743
80 리다이렉트 방식에 대해서..... 2009.01.04 3605
79 DIV와 Table for Layout 에 대한 코딩 이야기 2 2009.01.03 4201
크로스브라우징 팁 정리 2 2009.01.01 4178
77 Rounded Corners 2008.12.31 3403
76 이미지 없이 CSS로 둥근 모서리 구현하기(1) 2008.12.31 3198
75 Rounded corners without images 1 2008.12.31 3202
74 [DIV] 이미지 없이 CSS로 둥근 모서리 구현하기 1 2008.12.31 12379
73 CSS 강좌 2일차 : display : inline(혹은 block, none) 2008.12.27 9006
72 구글 인덱스 코드 2008.12.25 3022
71 Table to DIV 5 2008.12.25 3580
70 [Script] 입력폼에 배경 넣기 2008.12.22 4461
69 [Script] onload="allblur()" 2007.11.10 4677
68 [Script] 레이어를 이용한 서브 메뉴 2007.09.10 6106
67 [미분류] 태터에 제로보드 넣기 & Next, Prev 버튼 감추기 (by SkyRejoice) 2007.08.27 11303
66 [HTML5] pre 태그랑 xmp 태그의 차이점 1 2007.08.20 9668
65 [Script] 스위칭 탭 2007.08.19 3913
64 [Script] 최소/최대화 버튼 없는 군더더기 없는 새창 띄우기 2007.04.22 6164
63 [Script] PNG 알파 필터 사용하기 1 2007.04.21 10392
62 [Script] DIV 레이어 토글 1 2007.04.21 7834
61 [PHP] 사이트 테마 기능 구현하기 1 2007.04.18 5552