브라우저마다 다르게 출력하는 차이를 극복하기 위한 기술.
IE브라우저의 경우 가장 마음대로 표현하는 브라우저인데, DTD를 선언해주면 많은 부분이 해소된다. 다음은 가장 많이 사용하는 XHTML 호환성 모드이다.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
다른 DTD의 선언은 DTD 종류와 설명을 참조하길 바란다.
전체 엘리먼트에 미리 지정된 값을 부여함으로서 차이점 최소화하는 방법이다. 전체를 선택하는 선택자 "*"을 이용하여 다음을 지정해주자.
* { margin:0; padding:0; font-size:small; font-family:돋움, Dotum, AppleGothic, sans-serif; }
여백에 대해서 모두 0으로 맞추어주는 것은 기본이고, font-size나 font-family는 선택사항이다.
IE 브라우져를 위한 코드를 삽입하기 위해서는 아래와 같은 조건 절을 이용하여, 크로스 브라우징을 구현할 수 있습니다.
<!--[if IE 6]>
According to the conditional comment this is Internet Explorer 6<br />
<![endif]-->
<!--[if IE 7]>
According to the conditional comment this is Internet Explorer 7<br />
<![endif]-->
다음과 같은 코드로 CSS에서 브라우저 간의 차이를 극복할 수 있다.
.txtTitle
{
/*모든 브라우저(따라서 IE를 제외한 모든 브라우져 용으로 가장 윗쪽에 설정)*/
height: 15px;
/*IE 전용(IE7에서 이 문장을 만나면 재설정해준다.
IE를 제외한 다른 브라우져에서는 무시한다.) */
#height: 15px;
/* IE6.0 과 이전버젼용(IE6에서 이 문장을 만나면 재설정 해준다.
IE7을 포함한 다른 브라우져에서는 무시한다.) */
_height: 21px;
}
IE에서는 브라우저 버전마다 적용되는 기능과 그렇지 않은 기능이 있으므로 구분해야한다.
/*title의 모든 자식 중에서 h3 요소 선택(손자, 증손자 모두 적용)*/
.title h3 {height: 21px; }
/* title의 바로 하위 자식의 h3요소 선택(손자, 증손자 제외)(IE6 미지원) */
.title > h3 {min-height: 21px; }
IE브라우저에서 다르게 보이는 현상으로 골머리가 아플때는, 일단 hasLayout 속성을 주도록 해보자. IE계열 브라우저에서는 hasLayout라는 것을 두었는데 이 값을 true로 설정되도록 하면 많은 문제를 해결 할 수 있다고 한다.
hasLayout으로 해결 가능한 문제들
float
버그 width, height
등의 기본속성이 다르게 적용되는 박스
hasLayout를 가지게 하는 방법
position
: absolute float
: left|right display
: inline-block width
: ‘auto’ 이외의 값 (IE6 표준 모드 inline요소 제외)height
: ‘auto’ 이외의 값 (IE6 표준 모드 inline요소 제외)zoom
: ‘normal’ 이외의 값 (IE 전용) writing-mode
: tb-rl (IE 전용) overflow
: hidden|scroll|auto (IE7 전용) overflow-x|-y
: hidden|scroll|auto (IE7 전용) position
: fixed (IE7 전용)min-width
, max-width
, min-height
, max-height (IE7 전용)
위의 방법이 다른 브라우저에서 해석되지 않도록 하기 위해서 Conditional Comment를 이용하는 것을 권장한다.