2010-12-16 2 views
2

CSS 파일의 IE 6,7,8에 대해서만 일부 CSS 속성을 사용하고 싶습니다. 그것은 가능한가? 각 속성에 대해 특정 버전의 IE를 타겟팅 할 수 있습니까? 이 같은CSS 파일에서 IE8,7,6을 위해 특별히 타겟팅 된 CSS 속성을 쓸 수있는 방법이 있습니까

뭔가를해야만 :

.mystyle { 
    top:5px 
    top:-30px //only if ie6 
    top:-5px //only if ie8 
} 

는 나는 또 하나 개의 CSS 파일을 만들려면 그나마 약 <![If lt IE7]> 태그를 알고 있지만.

+0

예 http://en.wikipedia.org/wiki/CSS_filter –

답변

5

이 스크립트는 작은, 그리고 멋진 가득 : http://rafael.adm.br/css_browser_selector/

는 사용자의 브라우저에 해당하는 HTML 요소에 클래스를 넣어 것입니다. 그러면 다음과 같은 작업을 수행 할 수 있습니다.

.ie7 .mystyle { top:5px;} 
.ie8 .mystyle { top:-30px;} 

이 스크립트 용으로 새 외부 JavaScript 파일을 만들지는 않겠습니다. 그 작은 내가 보통 내 기존의 외부 자바 스크립트 파일의 상단에 추가합니다.

+0

이 문제의 해결 방법은 +1입니다! - 내 대답을 업데이트했습니다. && 자바 스크립트가 아닙니다. – lnrbob

+0

와우 나는이 솔루션을 좋아했습니다. :) @Inrbob : 나도 당신의 솔루션을 좋아했습니다. 정상적인 경우에는 js를 사용하지 않는 솔루션을 선호했을 것입니다! 하지만 불행히도 나는 많은 html 파일을 가지고 있고 나는 그것들 모두를 편집하고 싶지 않다. –

3

스타일 시트 자체에서 사용할 수있는 해킹이 많이 있지만, 일반적으로 나쁜 습관으로 간주됩니다. 여기에 an example

왜 여러 개의 스타일 시트를 사용하고 싶지 않으십니까? 당신이 할 수있는 스티븐의 게시물에서 영감을

은 (폴 아일랜드어로 html5 boilerplate에서 도난) :

<!--[if lt IE 7 ]> <html lang="en" class="ie6"> <![endif]--> 
<!--[if IE 7 ]> <html lang="en" class="ie7"> <![endif]--> 
<!--[if IE 8 ]> <html lang="en" class="ie8"> <![endif]--> 
<!--[if IE 9 ]> <html lang="en" class="ie9"> <![endif]--> 
<!--[if (gt IE 9)|!(IE)]><!--> <html lang="en"> <!--<![endif]--> 

최종 편집

설명한다. 이것을 html에 추가하면 조건 적으로 IE 무시 클래스를 설정합니다. 마지막 줄은 브라우저가 IE9 (none)보다 크거나없는 경우 클래스를 렌더링하지 않습니다.

+0

HTML5 상용구 솔루션이 마음에 들어요. 내 대답이하는 것과 매우 비슷합니다. +1에 의존하지 않기 때문에 JS. 그러나 FF3 또는 Chrome과 같은 특정 브라우저를 타겟팅하는 것과 같이 유연성이 필요한 경우 JavaScript와 같은 것을 사용해야합니다. – Stephen

+0

꽤 옳습니다! 다행스럽게도 이러한 픽스는 일반적으로 js가 비활성화되어있을 때보 다 드물고 종종 문제가 적습니다. – lnrbob

+0

그거 알아? 네가 옳아. 드물다. – Stephen

0

당신이 찾고있는 것을 얻을 수있는 IE 해킹을 사용할 수 있습니다. 그러나 그렇게하지 않는 것이 좋습니다. 장기 유지 관리가 어려워 질 것입니다.

조건부 주석 솔루션은 가장 쉽고 깨끗한 솔루션이며 MS에서 지원합니다. 당신이 그들을 사용해야합니다.

관련 문제