11.5 Importing Browser- or Operating System-Specific Style Sheets
NN 4, IE 4
11.5.1 Problem
You want to load
separate external style sheet files for users on different kinds of
computers.
11.5.2 Solution
Use JavaScript to write
<link> tags within the head
portion of the page, branching according to operating-system
detection. The following example loads different style sheet files
for Mac users and all other users:
<head>
...
<script language="JavaScript" type="text/javascript">
var cssFile = (navigator.userAgent.indexOf("Mac") != -1) ?
"styles/macCSS.css" : "styles/pcCSS.css";
document.write("<link rel='stylesheet' type='text/css' href='" + cssFile + "'>");
</script>
...
</head>
You can combine the browser- or operating system-specific external
style sheets with other fixed <link>
elements in the same page, as well as other kinds of style sheet
definitions or @import rules (where supported). If
your content observes the strict version of XHTML, and you want
dynamically generated code to also be in that form, you can use the
following document.write( ) call instead:
document.write("<link rel='stylesheet' type='text/css' href='" + cssFile + "' />");
To simplify the validation of your script under strict XHTML, you can
move the CSS file loading statements to an external
.js file.
11.5.3 Discussion
Employing multiple style sheets for different browsers or operating
systems imposes the same maintenance headaches as multiple page
implementations for different browsers. Any change you make to the
design needs to be adapted for each version and tested thoroughly on
the designated platforms. And yet, some applications of CSS styles
may create an imperative for separate style sheet rules for Internet
Explorer for Windows versions that are not fully CSS-compatible (see
Recipe 11.13).
11.5.4 See Also
Recipe 11.13 about the impact on IE 6 for Windows by
CSS-compatibility mode; Recipe 5.5 for detecting the
browser's operating system.
|