J'ai un dur ici, mais je pense que le bénéfice sera grand ...Comment puis-je importer CSS avec Safari et Opera lors de l'utilisation CSS Hacks?
J'utilise le CSS CSS avec PHP. La variable U dans le fichier ci-dessous est une constante, précédemment définie (avant d'inclure ce fichier) comme l'URL telle que http://example.com/. La variable constante P est définie comme le chemin physique du fichier, comme /var/www/example.com/. (La raison pour laquelle je dois utiliser U et P pour le chemin absolu est parce que j'utilise de jolies URL via Apache RewriteRule et cela gâche le chemin relatif.)
Comme vous pouvez le voir, j'utilise la technique "link rel" pour charger une feuille de style par défaut, et pour un pour IE, puis un autre pour IE6. Mais pour Safari et Opera, j'ai essayé la technique du hack CSS linkrel et elle a échoué - FF chargeait et interprétait les feuilles de style Opera et Safari quand je pensais que ça pourrait échouer sur la balise linkrel. Donc, j'ai dû passer à un CSS en ligne et utiliser un appel @import url(), mais cela a échoué car Opera et Safari n'interpréteraient pas l'appel @import url(). Donc, je n'avais pas d'autre choix que de replacer le contexte dans PHP et le charger en ligne avec une instruction require(). Eh bien, l'arrangement actuel dans le fichier ci-dessous fonctionne, mais cela signifie que la feuille de style pour Opera et Safari est en cours de chargement avec tous les navigateurs (elle n'est simplement pas interprétée sauf par Opera et Safari). Je voudrais savoir comment obtenir le linkrel ou le @import fonctionnant pour Opera et Safari, à la place.
<?php ?>
<? /*
***************************************************
DEFAULT STYLING (AND FIREFOX)
***************************************************
*/ ?>
<link rel="stylesheet" media="all" href="<?= U ?>css/default.css"/>
<style type='text/css'>
<? /*
***************************************************
SAFARI & GOOGLE CHROME STYLING (WEBKIT STYLING)
***************************************************
NOTE A LINKREL WILL GET INTERPRETED BY FF IF YOU DO IT LIKE THIS...
<link rel="stylesheet" media="screen and (-webkit-min-device-pixel-ratio:0)"
href="<?= U ?>css/safari.css"/>
...SO THAT CAN'T WORK. ALSO, IF YOU USE AN @import url('<?= U ?>css/safari.css'); TO
REPLACE WHERE I HAVE THE require() BELOW, THAT WON'T WORK EITHER BECAUSE
OPERA AND SAFARI DON'T SEEM TO UNDERSTAND THE @import DIRECTIVE IN CSS.
*/ ?>
@media screen and (-webkit-min-device-pixel-ratio:0){
<? require(P . 'css/safari.css'); ?>
}
<? /*
***************************************************
OPERA STYLING
***************************************************
*/ ?>
@media all and (-webkit-min-device-pixel-ratio:10000), not all and (-webkit-min-device-pixel-ratio:0){
<? require(P . 'css/opera.css'); ?>
}
</style>
<? /*
***************************************************
IE (ALL) STYLING
***************************************************
*/ ?>
<!--[if IE]>
<link rel="stylesheet" media="all" href="<?= U ?>css/ie.css"/>
<![endif]-->
<? /*
***************************************************
IE6 STYLING
***************************************************
*/ ?>
<!--[if lte IE 6]>
<link rel="stylesheet" media="all" href="<?= U ?>css/ie6.css"/>
<![endif]-->
Veuillez utiliser "example.com" au lieu de "mysite.com". – Gumbo