En utilisant des commentaires conditionnels, il est facile de cibler Internet Explorer avec des règles CSS spécifiques au navigateur:
<!--[if IE 6]>
...include IE6-specific stylesheet here...
<![endif]-->
Parfois, c'est le moteur Gecko (Firefox) qui se comporte mal. Quelle serait la meilleure façon de cibler uniquement Firefox avec vos règles CSS et pas un seul autre navigateur? Autrement dit, non seulement Internet Explorer doit ignorer les règles de Firefox uniquement, mais également WebKit et Opera doivent le faire.
Remarque: je recherche une solution «propre». L'utilisation d'un renifleur de navigateur JavaScript pour ajouter une classe «firefox» à mon HTML n'est pas considérée comme propre à mon avis. J'aimerais plutôt voir quelque chose qui dépend des capacités du navigateur, un peu comme les commentaires conditionnels ne sont que «spéciaux» pour IE…
Réponses:
OK, je l'ai trouvé. C'est probablement la solution la plus propre et la plus simple qui soit et ne dépend pas de l'activation de JavaScript.
Il est basé sur une autre extension CSS spécifique à Mozilla. Il y a toute une liste pour ces extensions CSS ici: Mozilla CSS Extensions .
la source
domain()
filtre. Par exemple@-moz-document domain(google.com) {...}
, appliquera les règles CSS jointes uniquement sur le domaine google.com.Mise à jour (du commentaire @Antoine)
Vous pouvez utiliser
@supports
Plus
@supports
icila source
Voici comment aborder trois navigateurs différents: IE, FF et Chrome
la source
Voici quelques hacks de navigateur pour cibler uniquement le navigateur Firefox,
Utilisation de hacks de sélection.
Hacks JavaScript
Hacks de requêtes multimédias
Ça va marcher sur Firefox 3.6 et versions ultérieures
Si vous avez besoin de plus d'informations, veuillez visiter browserhacks
la source
_:moz-tree-row(hover)
, il sera donc le seul à pouvoir traiter le.selector{}
suivant. Ce piratage spécifique fonctionne actuellement sur toutes les versions de Firefox, consultez browserhacks.com pour en savoir plus.Tout d'abord, un avertissement. Je ne préconise pas vraiment la solution que je présente ci-dessous. Le seul CSS spécifique au navigateur que j'écris est pour IE (en particulier IE6), bien que je souhaite que ce ne soit pas le cas.
Maintenant, la solution. Vous lui avez demandé d'être élégant, donc je ne sais pas à quel point il est élégant, mais il ciblera certainement les plates-formes Gecko uniquement.
L'astuce ne fonctionne que lorsque JavaScript est activé et utilise des liaisons Mozilla ( XBL ), qui sont largement utilisées en interne dans Firefox et tous les autres produits basés sur Gecko. À titre de comparaison, cela ressemble à la propriété CSS de comportement dans IE, mais beaucoup plus puissant.
Trois fichiers sont impliqués dans ma solution:
ff.html
ff.xml
ff.css
Mise à jour: la solution ci-dessus n'est pas si bonne. Il serait préférable qu'au lieu d'ajouter un nouvel élément LINK, il ajoute cette classe "firefox" à l'élément BODY. Et c'est possible, simplement en remplaçant le JS ci-dessus par ce qui suit:
La solution est inspirée des comportements moz de Dean Edwards .
la source
L'utilisation de règles spécifiques au moteur garantit un ciblage efficace du navigateur.
la source
Une variante de votre idée consiste à en avoir un
server-side USER-AGENT detector
qui déterminera la feuille de style à joindre à la page. De cette façon, vous pouvez avoir unfirefox.css, ie.css, opera.css, etc
.Vous pouvez accomplir une chose similaire dans Javascript lui-même, bien que vous ne puissiez pas le considérer comme propre.
J'ai fait une chose similaire en ayant un
default.css
qui inclutall common styles and then specific style sheets
sont ajoutés pour remplacer ou améliorer les valeurs par défaut.la source
Maintenant que Firefox Quantum 57 est sorti avec des améliorations substantielles - et potentiellement cassantes - de Gecko collectivement connues sous le nom de Stylo ou CSS Quantum, vous pouvez vous retrouver dans une situation où vous devez faire la distinction entre les versions héritées de Firefox et Firefox Quantum.
De ma réponse ici :
la source
La seule façon de le faire est via divers hacks CSS, ce qui rendra votre page beaucoup plus susceptible d'échouer lors des prochaines mises à jour du navigateur. Si quoi que ce soit, ce sera MOINS sûr que d'utiliser un renifleur js-browser.
la source
Le support CSS a une liaison avec javascript, en guise de remarque.
https://developer.mozilla.org/en-US/docs/Web/CSS/Mozilla_Extensions
la source
Le code suivant a tendance à lancer des avertissements de style lint:
Utilisez plutôt
M'a aidé! Vous avez la solution pour l'avertissement de peluches de style d' ici
la source