>>In principle, shouldn’t we be using an ‘all’ media type first, followed by more specific media types?
No, because if you do that, the styles for more specific media types will try to include and parse the rules from the screen style sheet.
Media=“all” is the right media type to use when you *haven’t* created specific styles for secondary media. For instance, if you *haven’t* created a print style sheet or a projection style sheet (for Opera’s kiosk mode), and if you want printers and kiosk mode to see the same visual presentation a web browser sees, you’d use media=“all”.
If you’ve created a print style sheet that *differs* from your main style sheet, it would be wrong to use media=“all” for the main style sheet, because doing so would force the print style sheet to also include all the CSS rules shown in the main style sheet.
It is easy for browsers to become confused as they try to merge screen rules with print rules.
In most cases, you don’t want them to merge those rules. You want the screen to use screen rules, and the printer to use print rules.
ALA uses the same style sheet for screen and projection. We link to the sheet twice, using two media attributes:
<style type=“text/css” media=“screen”>
<style type=“text/css” media=“projection”>
ALA’s print style sheet turns off needless sidebars and other paraphenalia:
<link rel=“stylesheet” type=“text/css”
media=“print” href=”/c/print.css” />
If we used media=“all” as the media attribute for the default imported style sheet (ala.css), the print style sheet would try to incorporate the screen sheet’s rules, and bedlam would ensue. We know because we tried it. :D
http://www.zeldman.com/ uses media=“all” because, for now, there is only one style sheet.