우선, 면책 조항. 아래에 제시된 솔루션을 옹호하지는 않습니다. 내가 작성하는 브라우저 별 CSS는 IE (특히 IE6) 전용이지만, 그렇지 않은 경우가 있습니다.
이제 해결책입니다. 당신은 그것을 우아하게 요청하여 얼마나 우아한 지 모르겠지만 Gecko 플랫폼만을 목표로 할 것입니다.
이 트릭은 JavaScript가 활성화 된 경우에만 작동 하며 Firefox 및 기타 모든 Gecko 기반 제품에서 내부적으로 많이 사용되는 Mozilla 바인딩 ( XBL )을 사용합니다. 비교를 위해 이것은 IE의 동작 CSS 속성과 비슷하지만 훨씬 강력합니다.
내 솔루션에는 세 가지 파일이 있습니다.
- ff.html : 스타일을 지정할 파일
- ff.xml : Gecko 바인딩을 포함하는 파일
- ff.css : Firefox 특정 스타일
ff.html
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
body {
-moz-binding: url(ff.xml#load-mozilla-css);
}
</style>
</head>
<body>
<h1>This should be red in FF</h1>
</body>
</html>
ff.xml
<?xml version="1.0"?>
<bindings xmlns="http://www.mozilla.org/xbl">
<binding id="load-mozilla-css">
<implementation>
<constructor>
<![CDATA[
var link = document.createElement("link");
link.setAttribute("rel", "stylesheet");
link.setAttribute("type", "text/css");
link.setAttribute("href", "ff.css");
document.getElementsByTagName("head")[0]
.appendChild(link);
]]>
</constructor>
</implementation>
</binding>
</bindings>
ff.css
h1 {
color: red;
}
업데이트 :
위의 솔루션은 그렇게 좋지 않습니다. 새 LINK 요소를 추가하는 대신 BODY 요소에 해당 "firefox"클래스를 추가 하는 것이 좋습니다. 그리고 위의 JS를 다음으로 바꾸면 가능합니다.
this.className += " firefox";
이 솔루션은 Dean Edwards의 moz-behaviors에서 영감을 얻었습니다 .