Maison >interface Web >tutoriel CSS >Quelle est la définition d'un 'hack CSS'?
Si vous écrivez CSS depuis au moins quelques années, vous avez très certainement utilisé un hack CSS. Mais si vous êtes relativement nouveau dans CSS, il est possible que vous ayez entendu le terme mais que vous ne savez pas exactement ce que cela signifie.
Dans ce post, je vais expliquer ce que signifie exactement le terme hack CSS et comment un hack CSS est utilisé. Mais d'abord, quelques antécédents pour expliquer pourquoi je pensais que ce post était même nécessaire.
Comme beaucoup d'entre vous le savent, SitePoint a récemment publié les résultats d'une grande enquête CSS que j'ai réunie. L'une des questions que le sondage posait était ce qui suit:
Lequel des navigateurs Microsoft suivants écrivez-vous ou incluez-vous actuellement des hacks CSS?
Lorsque j'ai étudié les résultats pour la première fois, j'ai semblé avoir raté une bizarrerie dans les résultats pour cette question. Heureusement, David Storey, qui est ingénieur travaillant sur le nouveau navigateur de Microsoft, l'a souligné. Sur les 1 418 personnes qui ont répondu à cette question, les résultats sont allés comme ceci:
Il est déjà assez grave que plus de 60% des développeurs prétendent écrire des hacks CSS pour IE9 et IE10 - mais 45% pour Edge? Bien qu'il existe des hacks publiés pour Edge, ils ne sont pas encore sur le site Web de Browserhacks, il semble donc peu probable que tant de gens utilisent des hacks pour ce navigateur. Mais la question la plus importante est: quels problèmes les développeurs sont-ils rencontrés avec le rendu CSS dans Edge qu'ils nécessitent des hacks?
Au début, je pensais qu'il se pourrait que de nombreux participants confondnt les hacks avec la détection du navigateur via le reniflement de l'agent utilisateur. Mais même cela n'expliquerait pas pourquoi le nombre est si élevé pour Edge.
Ensuite, j'ai réalisé qu'ils devaient avoir mal compris la question complètement; Ils pensent que «écrire des hacks CSS pour Browser X» est le même que «support Browser X». Il n'y a vraiment aucune autre explication logique, surtout lorsque vous considérez les pourcentages élevés pour les autres navigateurs qui ne devraient pas non plus avoir besoin de hacks.
Alors, définissons exactement ce qu'est un hack, pour ceux qui pourraient être confus par le terme.
Pour que quelque chose dans votre fichier CSS soit considéré comme un «piratage», il doit appliquer ses styles uniquement aux navigateurs ciblés tandis que tous les autres navigateurs l'ignorent.
Considérons un exemple. Ceci est un piratage CSS:
<span>* html <span>.sidebar</span> { </span> <span>margin-left: 5px; </span><span>}</span>
Le CSS dans l'exemple ci-dessus (souvent appelé «Star-HTML Hack») ciblera seules les versions Internet Explorer 6 et ci-dessous . La plupart des développeurs qui soutiennent IE6 ne se soucient pas vraiment de rien avant IE6, donc cela fonctionne généralement comme un piratage IE6 uniquement.
La pièce qui est le «piratage», est l'astérisque suivi du «HTML». Il s'agit d'une combinaison du sélecteur universel et du sélecteur de type élément. À un moment donné, quelqu'un a découvert que ces deux sélecteurs ont précédé un autre sélecteur ne fonctionnent que dans certaines versions de IE tout en n'ayant aucun effet dans d'autres navigateurs. Cela signifie que la marge gauche sur l'élément .bar. Dans ce cas, le CSS est en fait valide, vous n'obtiendrez donc pas d'erreur ou d'avertissement à ce sujet (plus à ce sujet plus tard).
Voici un autre exemple tiré du site Web de Browserhacks, cette fois ciblant IE11:
<span>_<span>:-ms-fullscreen, :root .selector</span> { </span> <span>margin-left: 5px; </span><span>}</span>
Je ne vais pas entrer dans les détails de la raison pour laquelle il s'agit d'un pirat `` IE11 et au-dessus '', donc je suppose que cela signifie que cela fonctionnera également dans le navigateur Edge de Microsoft, mais je ne l'ai pas vérifié.
Le point important ici n'est pas quels navigateurs sont ciblés, mais que nous sommes tous sur la même longueur d'onde pour comprendre ce qui est un piratage CSS.
Si vous avez des hacks dans votre feuille de style, il est possible que votre CSS produise des avertissements et / ou des erreurs si vous l'exécutez via le validateur CSS du W3C. Mais ce n'est pas une garantie, ni un moyen de reconnaître si quelque chose est un piratage.
Il est possible que votre CSS puisse contenir des hacks et ne produire aucun avertissement ni erreurs. Par exemple, si les seuls hacks CSS que vous utilisez ciblent IE6 en utilisant le hack Star-HTML, vos feuilles de style valideront très bien sans aucune erreur ou avertisseur associé aux hacks.
De plus, certains hacks (comme le piratage IE11 que j'ai discuté ci-dessus) utilisent le code spécifique au fournisseur (par exemple: -ms-fullScreen). Dans un tel cas, les paramètres par défaut du validateur peuvent afficher votre CSS avec le message d'écran vert «passer»:
Mais si vous faites défiler vers le bas sur l'écran du validateur, vous verrez des avertissements comme ceci:
Dans ce cas, il me précède parce que: -ms-fullScreen est considéré comme «une pseudo-classe étendue du fournisseur inconnu». Si vous vous sentez plus à l'aise de visualiser ce type de CSS comme une erreur au lieu d'un simple avertissement, vous pouvez ajuster les paramètres du validateur à l'aide de la section "plus d'options" sous la zone d'entrée du validateur:
La modification de l'option «Extensions des fournisseurs» en «erreurs» empêchera une feuille de style de passer la validation si elle contient des préfixes de fournisseurs ou d'autres CS spécifiques au navigateur (pas nécessairement des pirates).
D'un autre côté, vous pourriez utiliser quelque chose comme ceci:
<span>* html <span>.sidebar</span> { </span> <span>margin-left: 5px; </span><span>}</span>
Les cibles CSS ci-dessus IE8 et ci-dessous. Le «piratage» est la combinaison de la barre arrière et des neuf (9). La plupart des navigateurs ignoreront la ligne complète, car la partie 9 rend la ligne non valide CSS. Mais, pour une raison quelconque, les versions Internet Explorer 8 et inférieures le considèrent toujours comme valide et appliquera le paramètre de marge.
Dans ce cas, cependant, quels que soient les paramètres que vous choisissez pour le validateur, il affichera un message d'erreur et la feuille de style ne passera pas la validation:
Les méthodes et techniques suivantes ne doivent pas nécessairement être classées comme CSS Hacks:
Les commentaires conditionnels qui vous permettent d'écrire CSS ou même HTML pour cibler certaines versions d'Internet Explorer (ou même pour exclure certaines versions d'Internet Explorer) sont un peu une zone grise. S'ils sont écrits d'une certaine manière, ils sont des HTML valides, mais ils sont «hacky».
En 2008, Paul Irish a popularisé ce que nous appelons des «classes conditionnelles», que je suis sûr que beaucoup d’entre nous ont utilisées. Ceux-ci utilisent des commentaires conditionnels pour produire des classes que vous pouvez utiliser dans votre feuille de style pour cibler des versions spécifiques de IE à l'aide de CSS valides.
Ainsi, l'utilisation des commentaires conditionnels est-elle un «piratage CSS»? Je dirais oui, juste parce qu'ils accomplissent exactement la même chose prévue lors de l'utilisation d'un piratage CSS plus habituel.
Comme c'est le cas avec de nombreux sujets de développement Web, la réponse ici n'est pas simplement oui ou non . La bonne réponse est cela dépend . La plupart des puristes diront ne pas les utiliser. Mais ce n'est souvent pas si simple. En ce qui concerne les hacks, mon conseil est le suivant:
Si vous ne vous souvenez de rien d'autre de ce post, rappelez-vous ceci:
A CSS Hack applique CSS dans une ou plusieurs versions de navigateur spécifiques tandis que ce même CSS sera ignoré par d'autres navigateurs.
C'est la définition simple d'un piratage CSS. Donc, ce n'est pas parce que vous prenez la prise en charge de Microsoft Edge dans votre CSS que vous écrivez des hacks pour Edge; Le support est un sujet complètement différent.
Il pourrait y avoir quelques choses dans ce post que tout le monde n'est pas d'accord, mais je pense que la plupart des développeurs qui comprennent ce que sont les hacks seront d'accord avec le résumé de conclusion ci-dessus.
Si j'ai laissé quelque chose de côté ou que j'ai fait des erreurs, n'hésitez pas à me le faire savoir dans les commentaires et que je ferai des corrections nécessaires.
Un piratage CSS est une technique utilisée par les développeurs Web pour créer un style ou une disposition spécifique qui peut ne pas être possible avec les règles CSS standard. Ces hacks sont souvent utilisés pour surmonter les incohérences ou les limitations du navigateur. Par exemple, un développeur peut utiliser un piratage CSS pour s'assurer qu'un site Web s'affiche correctement dans les anciennes versions d'Internet Explorer, qui peut ne pas prendre en charge entièrement les dernières normes CSS. Cependant, il est important d'utiliser des pirates CSS avec parcimonie et uniquement lorsque cela est nécessaire, car ils peuvent rendre votre code plus complexe et plus difficile à maintenir.
CSS Hacks Souvent souvent Impliquez l'utilisation de sélecteurs ou de propriétés CSS de manière non conventionnelle. Par exemple, un développeur peut utiliser un piratage CSS pour cibler un navigateur spécifique en exploitant un bogue ou une fonctionnalité unique à ce navigateur. Cela pourrait impliquer l'utilisation d'une propriété CSS qui n'est reconnue que par ce navigateur ou l'utilisation d'un sélecteur CSS d'une manière que seul ce navigateur comprend. Si vous voyez un code CSS qui semble inhabituel ou ne suit pas la syntaxe CSS standard, il peut s'agir d'un piratage CSS.
Alors que les pirates CSS peuvent être utiles dans Certaines situations, elles sont généralement considérées comme une mauvaise pratique. En effet, ils peuvent rendre votre code plus difficile à comprendre et à entretenir, et ils peuvent provoquer un comportement inattendu dans différents navigateurs. Au lieu d'utiliser des hacks CSS, il est généralement préférable d'utiliser des techniques CSS standard et de concevoir votre site Web d'une manière qui dégrade gracieusement dans les navigateurs plus âgés.
Certains hacks CSS courants incluent le «hack de modèle de boîte», qui est utilisé pour résoudre les problèmes de mise en page causés par les différences dans la façon dont les navigateurs calculent la largeur et la hauteur des éléments, et Le «Star Hack», qui est utilisé pour cibler Internet Explorer 7 et ci-dessous. Un autre piratage CSS commun est le «hack de soulignement», qui est utilisé pour cibler Internet Explorer 6 et moins. Utiliser CSS Hacks, c'est concevoir votre site Web d'une manière compatible avec tous les principaux navigateurs. Cela peut impliquer d'utiliser une réinitialisation CSS pour garantir que vos styles sont appliqués de manière cohérente sur différents navigateurs et d'éviter l'utilisation de fonctionnalités CSS qui ne sont pas largement prises en charge. De plus, vous pouvez utiliser des outils comme puis-je utiliser pour vérifier la compatibilité du navigateur de différentes fonctionnalités CSS.
Au lieu d'utiliser des hacks CSS, vous pouvez utiliser des fonctionnalités Des bibliothèques de détection comme Modernizr pour détecter si une fonctionnalité CSS spécifique est prise en charge par le navigateur de l'utilisateur. Vous pouvez ensuite utiliser ces informations pour appliquer différents styles ou dispositions en fonction des capacités du navigateur. Une autre alternative consiste à utiliser des préprocesseurs CSS comme SASS ou moins, qui vous permettent d'écrire du code CSS plus puissant et maintenable.
Il existe de nombreuses ressources disponibles disponibles. En ligne où vous pouvez en savoir plus sur les hacks CSS. Des sites Web comme CSS-Tricks et Smashing Magazine publient souvent des articles sur les hacks CSS et d'autres techniques CSS avancées. De plus, vous pouvez trouver de nombreux tutoriels et exemples de piratage CSS sur des sites Web comme Codepen et JSFiddle.
Alors que les pirates CSS étaient plus courants dans le passé, ils sont Moins pertinent aujourd'hui en raison de l'amélioration de la conformité des normes des navigateurs modernes. Cependant, il existe encore des situations où un piratage CSS peut être nécessaire, par exemple lorsque vous devez prendre en charge les navigateurs plus âgés ou contourner un bogue de navigateur. Par conséquent, il est toujours utile de comprendre ce que sont les hacks CSS et comment ils fonctionnent.
Les hacks CSS peuvent potentiellement affecter les performances de votre site Web, en particulier s'ils sont utilisés excessivement. En effet, ils peuvent rendre votre code CSS plus complexe et plus difficile à analyser le navigateur. De plus, certains hacks CSS impliquent l'utilisation de propriétés CSS ou de sélecteurs qui ne sont pas optimisés pour les performances.
Vous pouvez tester l'efficacité d'un piratage CSS En utilisant des outils de développeur de navigateur pour inspecter les styles appliqués à un élément. Vous pouvez également utiliser des outils en ligne comme Browserstack pour tester l'apparence et le comportement de votre site Web dans différents navigateurs. De plus, vous pouvez utiliser des outils de test automatisés comme le sélénium pour vous assurer que votre site Web fonctionne correctement dans une gamme de navigateurs et d'appareils.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!