Je crée un site Web, mais un élément a besoin de marge dans Chrome et d'autres navigateurs, mais pas dans Safari. Je souhaite donc ajouter une ligne CSS pour y remédier, mais je ne trouve aucune méthode permettant d’ajouter CSS pour Safari 3+ uniquement.
Ce n'est pas possible car vous appliqueriez également la même propriété à Chrome. En tant que Chrome et Safari utilisent tous deux le préfixe -webkit-.
Mais vous pouvez le faire en PHP.
<?php
$browser = get_browser();
if(strtolower($browser->browser) == 'safari') {
echo '<link href="safari.css" rel="stylesheet" type="text/css" />';
}
?>
Remplacez safari.css par votre propre feuille de style. Crédit à @theorise
Je crois que cela devrait fonctionner
Fiddle: http://jsfiddle.net/kHFjM/1/
var userAgent = navigator.userAgent.toLowerCase();
if (userAgent .indexOf('safari')!=-1){
if(userAgent .indexOf('chrome') > -1){
//browser is chrome
}else if((userAgent .indexOf('opera') > -1)||(userAgent .indexOf('opr') > -1)){
//browser is opera
}else{
//browser is safari, add css
}
}
voici le lien pour détecter la version du navigateur https://stackoverflow.com/a/5918791
Solution intégrée jQuery:
<script type="text/javascript">
$(function () {
if (navigator.userAgent.indexOf('Safari') != -1 &&
navigator.userAgent.indexOf('Chrome') == -1) {
$("body").addClass("safari");
}
});
</script>
<style>
div {
margin:20px;
}
.safari div {
margin:0;
}
</style>
Solution intégrée Pure JS:
<style>
div {
margin:20px;
}
.safari div {
margin:0;
}
</style>
<body>
<script type="text/javascript">
if (navigator.userAgent.indexOf('Safari') != -1 &&
navigator.userAgent.indexOf('Chrome') == -1) {
document.body.className += " safari";
}
</script>
</body>
Dans Safari 9.0+, vous pouvez le faire maintenant en CSS avec ce hack sympa. Vous n'avez besoin d'aucun code JS. Je l'ai fait et ça fonctionne bien pour moi. Utilisez ce hack:
@supports (overflow:-webkit-Marquee) and (justify-content:inherit) {
/* type your custom css code here */
}
La raison pour laquelle cela fonctionne est la suivante: Safari 9.0 et les versions ultérieures disposent d'une détection de fonctionnalités. Donc, en détectant une fonctionnalité exclusivement destinée à Safari, vous pouvez détecter Safari. débordement: -webkit-Marquee et justifier-contenu: hériter sont exclusivement réservés au safari. C’est pourquoi nous pouvons détecter un safari avec ce simple hack CSS.
Au lieu d’ajouter du code pour résoudre votre problème, les marges par défaut étant différentes, vous pouvez essayer de réinitialiser d’abord les marges et les bourrages des éléments environnants avant de le modifier. Cela pourrait résoudre votre problème.
C'est une préférence personnelle, mais je commence toutes mes pages Web avec:
*{
margin:0;
padding:0;
}
Je n'ai jamais eu de problème de navigation entre les navigateurs en ce qui concerne les marges ou le remplissage.
Il existe une question similaire à celle-ci sur le forum CSS-Tricks . Mais la réponse est fondamentalement nope . Vous pouvez essayer de renifler l'agent côté utilisateur côté serveur ou JavaScript, puis ajouter une classe au code HTML (comme pour les anciennes versions IE dans HTML5 BoilerPlate).
J'espère que cela t'aides.
- battu par les gars ci-dessus et ci-dessous!