Puisque IE7 et IE8 ne prennent pas en charge la notation double-virgule pour les pseudo-éléments (par exemple ::after
ou ::first-letter
), et puisque les navigateurs modernes prennent en charge la notation simple-deux-points (par exemple :after
) pour la compatibilité descendante, devrais-je utiliser uniquement la notation simple-deux-points et La part de marché d'IE8 chute à un niveau négligeable revenir en arrière et trouver / remplacer dans ma base de code? Ou devrais-je inclure les deux:
.foo:after,
.foo::after { /*styles*/ }
Utiliser le double seul semble idiot si je me soucie des utilisateurs d'IE8 (les pauvres chéris).
À partir des sélecteurs CSS3 REC :
Il semble que vous soyez en sécurité en utilisant (seulement) la notation à un deux points pour les pseudo-éléments qui existaient déjà dans CSS2.1 car les UA doivent être rétrocompatibles.
la source
Je ne suis absolument pas d'accord avec @mddw et @FelipeAls, en ce qui concerne l'utilisation d'un deux-points "sûr".
Cette mentalité «je vais l'utiliser même si c'est obsolète» est exactement la raison pour laquelle les technologies basées sur les navigateurs sont si lentes à avancer et à progresser.
OUI, nous voulons maintenir la compatibilité avec les anciennes normes. Regardons les choses en face, c'est la main qui nous a été donnée. MAIS, cela ne signifie pas que vous avez une excuse pour être paresseux dans votre développement, en ignorant les normes actuelles au profit de celles obsolètes.
Notre objectif devrait être de maintenir la conformité avec les normes actuelles, tout en prenant en charge autant que possible l'ancienne norme.
Si des pseudo-éléments sont utilisés
:
en CSS2 et::
en CSS3, nous ne devrions pas utiliser l'un ou l'autre; nous devrions utiliser les deux .Pour répondre pleinement à la question initiale posée, ce qui suit est le plus approprié méthode pour prendre en charge l'implémentation la plus récente de CSS (version 3), tout en conservant le support hérité de la version 2.
la source
::
. Selon votre approche, les individus commenceront alors à mélanger et assortir l'utilisation de:
et::
pour les pseudo-éléments. Adhérer explicitement à l'ancienne norme (qui pour le moment peut être soutenue) est une pratique intrinsèquement mauvaise et devrait être évitée chaque fois que cela est raisonnablement possible. Si vous n'êtes pas d'accord avec cette affirmation, nous avons simplement des points de vue différents.Cependant, il est de plus en plus populaire d'utiliser des polyfills pour les nouveaux javascript et CSS, donc vous voudrez peut-être simplement vous en tenir à l'utilisation de la nouvelle
::
syntaxe double-virgule ( ), et maintenir un polyfill pour les navigateurs plus anciens, tant que cela est nécessaire.la source
Pour ce que ça vaut selon les statistiques du navigateur, IE 8.0 est tombé à moins de 1% aux États-Unis au cours de l'année écoulée.
http://gs.statcounter.com/browser-version-partially-combined-market-share/desktop/united-states-of-america/#monthly-201512-201612
En décembre 2015, IE 8.0 détenait 2,92% du marché. En décembre 2016, IE 8.0 détenait 0,77% du marché.
À ce taux de déclin, ce ne serait pas la pire des idées d'arrêter de supporter les anciennes versions d'IE et de commencer à utiliser :: pour les pseudo éléments.
la source
Inclure les deux notations est certainement plus sûr, mais je ne vois aucun navigateur abandonner la notation unique pendant longtemps, donc une seule suffira (c'est du CSS2 valide.)
Personnellement, je n'utilise que la notation à deux points, principalement par habitude.
la source