Toutes les fonctionnalités HTML5 ou CSS3 ne prennent pas naturellement en charge les navigateurs. Pour compenser cela, des développeurs entreprenants ont créé un certain nombre d’outils vous permettant d’utiliser ces technologies aujourd’hui, sans laisser de traces pour les utilisateurs qui vivent encore à l’âge de pierre..
La bonne nouvelle est que, sauf pour Internet Explorer, vous pouvez créer davantage de balisage sémantique en utilisant les nouveaux éléments HTML5, même dans les navigateurs qui ne les prennent pas officiellement en charge. N'oubliez pas de définir le mode d'affichage approprié: bloc
. L'extrait suivant doit faire référence à tous les éléments nécessaires:
article, à part, détails, figcaption, figure, pied de page, en-tête, hgroup, menu, navigation, section display: block;
La mise en œuvre de nombreuses solutions de ce didacticiel implique l’inclusion de JavaScript dans certaines versions d’Internet Explorer. Voici un bref aperçu: l’expression de test est placée entre crochets. Nous pouvons vérifier les versions spécifiques ou les versions ci-dessus ou ci-dessous une version indiquée. lt
et gt
signifier plus bas que et plus grand que, respectivement, alors que lte
et gte
signifier inférieur ou égal à et Plus grand ou égal à.
Voici quelques exemples rapides:
[si IE 6]
Vérifie si le navigateur est Internet Explorer 6.
[si gt IE 6]
Vérifie une version d'Internet Explorer plus grand plus de 6.
Dans tout IE, à l'exception de la version la plus récente (IE9), vous ne pouvez pas appliquer de styles aux éléments que le navigateur ne reconnaît pas. Vos nouveaux éléments HTML5 époustouflants, dans toute leur splendeur, sont insensibles aux règles CSS dans cet environnement. C'est là que html5shiv de Remy Sharp (parfois appelé html5 shim) vient à la rescousse. Il suffit de l'inclure dans votre page section et vous serez en mesure de style les nouveaux éléments HTML5 parfaitement.
Notez que les commentaires conditionnels ne chargent le code html5shiv que si la version d'Internet Explorer est inférieure à 9. D'autres navigateurs, tels que Firefox et Chrome, ignoreront également cette balise et n'exécuteront pas le script, économisant ainsi de la bande passante..
html5 shiv est basé sur une solution de contournement simple: il demande à IE de créer les éléments avec JavaScript (ils n'ont même pas besoin d'être insérés dans le DOM).
document.createElement ('header');
À ce stade, ils peuvent être coiffés normalement. De plus, les versions les plus récentes intègrent IE Print Protector, ce qui corrige un bug où les éléments HTML5 disparaissent lors de l'impression de la page…
Modernizr vous permet de fournir un style de "sauvegarde" dans les navigateurs qui ne prennent pas en charge certaines fonctionnalités HTML5 et CSS3..
Modernizr est peut-être le plus connu de ces outils, mais il est aussi assez mal compris (le nom n’aide pas). Respirez à fond: contrairement aux idées reçues, Modernizr le fait ne pas activer les fonctionnalités HTML5 et CSS3 dans les navigateurs qui ne les prennent pas en charge (bien Est-ce que inclure html5shiv pour vous permettre d'utiliser des éléments HTML5 dans IE < 9).
Outre la fonctionnalité html5shiv, Modernizr fait une chose et une seule chose: il exécute une série de tests de détection de fonctionnalités lorsqu’il est chargé, puis insère les résultats dans le
classe
attribut duétiquette.
L'objectif principal de Modernizr est de vous permettre d'offrir un style de "sauvegarde" dans les navigateurs qui ne prennent pas en charge certaines fonctionnalités HTML5 et CSS3. Ceci est quelque peu différent de la dégradation gracieuse traditionnelle, dans laquelle nous utilisons le même style CSS dans tous les navigateurs, puis nous l'ingérons de manière à ce que, lorsque des fonctionnalités spécifiques manquent, le résultat reste acceptable..
Voici un exemple de fonctionnement de Modernizr: si un navigateur prend en charge rayon de la frontière
et le nombre de colonnes
propriété, les classes suivantes seront appliquées:
Par contre, si les mêmes propriétés ne sont pas prises en charge - par exemple dans IE7 -, vous trouverez:
À ce stade, vous pouvez ensuite utiliser ces classes pour appliquer un style unique aux navigateurs dotés de fonctionnalités différentes. Par exemple, si vous souhaitez appliquer un style différent à un paragraphe, selon que les colonnes CSS sont prises en charge ou non, vous pouvez procéder comme suit:
.csscolumns p / * Style lorsque les colonnes sont disponibles * / .no-csscolumns p / * Style lorsque les colonnes ne sont pas disponibles * /
Si un navigateur ne supporte pas les colonnes, le .csscolumns
la classe ne sera pas présente dans le corps et le navigateur n'aura jamais la possibilité d'appliquer la règle qui l'utilise.
Certains pourraient objecter que cela nous ramène à la construction d'un site différent pour chaque navigateur. Il est vrai que rien ne vous empêche d'écrire autant de déclarations de style utilisant des fonctionnalités CSS3 avancées que votre feuille de style devient pratiquement vide lorsque ces règles ne peuvent pas être appliquées..
Si vous souhaitez utiliser Modernizr d'une manière qui a du sens, vous devez compter sur votre talent en matière de conception pour concevoir des styles alternatifs ne brisant pas la conception et ne nécessitant pas de jeter le reste de la feuille de style. Par exemple, vous pouvez essayer de remplacer les ombres portées sur les lettres, lorsqu'elles ne sont pas disponibles, par un caractère gras ou par une transparence de couleur différente..
Pour utiliser Modernizr, incluez le fichier minifié et appliquez une classe de non-js
au élément. Cette dernière précaution vous permet de fournir des styles lorsque JavaScript est complètement désactivé. évidemment, dans ces cas, Modernizr ne peut pas vous aider du tout. Si JavaScript est activé, Modernizr entrera en service et remplacera le
non-js
avec les résultats de ses opérations de détection de caractéristiques.
…
Si vous êtes prêt à accepter que tous les sites Web ne doivent pas s'afficher de manière identique sur tous les navigateurs, vous constaterez que Modernizr est un outil essentiel de votre ceinture de développement Web.!
Sur la même note, le designer Andy Clarke a mis au point une solution élégante pour résoudre le manque de conformité aux normes d'IE6. Appelée "Universal IE6", cette feuille de style est exclusivement consacrée à la typographie. La clé consiste à utiliser des commentaires conditionnels pour masquer toutes les autres feuilles de style dans IE 6..
/ * Feuilles de style pour les navigateurs autres qu'Internet Explorer 6 * /
Note importanteRemarque: n'oubliez pas d'inclure la dernière version, car les instructions destinées aux anciennes versions flottent toujours sur le Web. Le résultat final ressemble à ceci:
Vous n'avez aucun travail à faire pour supporter IE 6 sur un nouveau site.
Cette approche présente un avantage assez évident par rapport aux feuilles de style alternatives classiques: vous n'avez aucun travail à faire pour prendre en charge IE 6 sur un nouveau site. L'inconvénient, bien sûr, est que le site affiche très peu de votre conception. De plus, vos fondations HTML doivent également être solides, pour que la page soit utilisable même avec la plupart des styles désactivés..
Notez que Universal IE6 CSS n’inclut aucun style pour les éléments exclusivement HTML5 tels que ou
. Ce n'est pas un problème, sauf si vous utilisez ces éléments exclusivement pour obtenir un affichage au niveau des blocs pour certaines parties de la page. En règle générale, vous devez toujours envelopper votre texte également au moins dans un paragraphe ou un élément de liste.
Cette solution n’est clairement pas pour tout le monde, et vous pourriez trouver des clients qui ne sont pas du tout en désaccord avec leur site cassévu dans IE6.
Vous pouvez également dire qu’à ce stade, vous pouvez également abandonner complètement le support IE6. Andy Clarke a résumé ses réponses à ces objections ici.
Cette approche fonctionne mieux pour les sites centrés sur le contenu et catastrophiquement pour les applications Web. Mais là encore, construire une application web moderne pour bien fonctionner avec IE 6 est un défi en soi..
Notre prochain champion est un utilitaire JavaScript qui vise à introduire de nouvelles fonctionnalités dans les navigateurs plus anciens (en fait, il s’agit justement d’Internet 6 à 8): Selectivizr fonctionne en tandem avec d’autres bibliothèques JavaScript telles que jQuery, Dojo ou MooTools sélecteurs CSS avancés.
J'ai énuméré quelques-unes ci-dessous, mais notez que la liste complète des fonctionnalités dépendra de votre bibliothèque JavaScript préférée..
:flotter
:concentrer
:premier enfant
:dernier enfant
:Première ligne
:première lettre
Pour utiliser Selectivizr, téléchargez-le à partir de leur page d'accueil et incluez-le dans votre section, avec l’une des bibliothèques de support. Voici un exemple avec jQuery:
Selectivizr fonctionne en tandem avec d'autres bibliothèques JavaScript pour fournir un support CSS3 pour IE 6-8.
Ce point est très important: Selectivizr ne peut pas fonctionner seul; votre bibliothèque préférée doit être présente. Heureusement, il est compatible avec la très grande majorité des bibliothèques JavaScript populaires. Il est probable que si vous utilisez JavaScript sur votre site, vous avez probablement déjà une bibliothèque appropriée incluse..
D'autre part, si vous n'utilisez pas non plus une bibliothèque, une solution alternative consiste à utiliser le très léger DOMAssistant, bien que vous préfériez peut-être utiliser votre bibliothèque JavaScript habituelle pour une plus grande facilité de gestion des fichiers..
Soyez prudent, car les sélecteurs précis proposés par Selectivizr dépendent de la bibliothèque de support choisie. Selon la page d'accueil, MooTools propose actuellement la plus grande gamme de sélecteurs, alors que jQuery propose malheureusement le moins grand nombre de sélecteurs disponibles. Il faut également noter que certains des sélecteurs qui ne sont pas disponibles avec jQuery sont assez exotiques et rarement utilisés dans la réalité.. Consultez notre article "30 sélecteurs CSS à mémoriser" pour obtenir la liste complète des sélecteurs..
En fait, avec la plupart des solutions JavaScript pour les problèmes de CSS, certaines restrictions s’appliquent..
élément pour inclure vos feuilles de style (par opposition à
).CSS3Pie améliore également les fonctionnalités d'Internet Explorer [6-8], mais de manière beaucoup plus native, car il permet effectivement l'utilisation d'un certain nombre de propriétés CSS3 époustouflantes, telles que border-radius, linear-gradient, box-shadow, border-image
ainsi que ajoute le support pour plusieurs arrière-plans. Utilisez CSS3Pie et dites au revoir aux coins arrondis coupés et positionnés manuellement.
CSS3Pie: dites adieu aux coins arrondis coupés et positionnés manuellement.
Cela fonctionne en exploitant des extensions Microsoft peu connues: le CSS comportement
fichiers de propriétés et de composants HTML (documentation officielle). Cette extension vous permet d'associer du JavaScript à certains éléments HTML à l'aide de CSS. Le JavaScript est inclus avec certaines balises propriétaires de Microsoft, dans .htc
les fichiers qui sont référencés dans les règles de style.
Pour cette seule raison, de nombreux développeurs pourraient dire que vous ne devriez pas utiliser CSS3Pie. Les balises propriétaires d'Internet Explorer sont très performantes et produisent une sortie moins attrayante.
Pourquoi CSS3Pie n'utilise-t-il pas du code JavaScript? Eh bien, il existe une version spécifique à JS, bien que l'équipe déconseille son utilisation, car JavaScript empêche l'analyse de la page..
Avec le courant .htc
la solution, la mise en œuvre est assez simple: il suffit de télécharger un seul fichier à partir de la distribution CSS3Pie, PIE.htc
, à votre serveur. Ensuite, chaque fois que vous utilisez l'une des propriétés CSS3 prises en charge, ajoutez le code ci-dessous:
comportement: url (chemin / vers / PIE.htc);
Au dessus de, chemin / vers / PIE.htc
est le chemin relatif au fichier HTML en cours de traitement; ne pas la feuille de style.
Bien sûr, CSS3Pie ne peut faire sa magie que dans Internet Explorer. Il faut aussi un peu de soin et d’alimentation côté serveur:
PIE.htc
le fichier est servi avec un composant text / x
type de contenu. La distribution inclut un script PHP qui peut s’occuper de cela si vous n'êtes pas autorisé à modifier la configuration de votre serveur, par exemple sur un hôte partagé.. PIE.htc
peut également déclencher des avertissements ActiveX, généralement lorsque vous le testez sur votre hôte local. Ce dernier problème nécessite que la solution de contournement de la marque Web soit résolue.Au moment d'écrire ces lignes, CSS3Pie est toujours en mode bêta, car il reste encore quelques problèmes à résoudre..
Boilerplate HTML5 va beaucoup plus loin que vos modèles de départ standard.
HTML5 Boilerplate peut être décrit comme un ensemble de modèles vous permettant de commencer à créer le plus rapidement possible des sites Web HTML5 modernes. Mais HTML5 Boilerplate va beaucoup plus loin que vos modèles de départ standard.
Par exemple, il regroupe la dernière version de Modernizr (même créateur), et le HTML renvoie même vers les derniers scripts jQuery, Yahoo Profiler et Google Analytics hébergés par Google. Le CSS contient les règles de réinitialisation habituelles, mais aussi une multitude de requêtes @media pour vous aider à démarrer avec une conception Web réactive ciblant les appareils mobiles..
La caractéristique la plus unique est que, en plus de la configuration du client, vous obtenez également le côté serveur: les fichiers de configuration pour Apache et Nginx. Cela vous permet d'optimiser les vitesses de téléchargement et d'optimiser la diffusion de vidéos HTML5. En particulier, le .htaccess fichiers pour Apache peuvent être très pratiques pour déposer dans un compte d'hébergement partagé, comme souvent des choses comme gzip
compression et expire
ne sont pas actifs par défaut.
Certains diront peut-être que HTML5 Boilerplate prend un peu trop de décisions à leur place (diable, la configuration d'Apache supprime même automatiquement le nom de domaine devant le nom de domaine!) Ou qu'il est un peu centré sur Google, même s'il est toujours intéressant étudier les fichiers et trouver les problèmes anticipés par les auteurs.
De plus, vous êtes certainement encouragé à le décomposer pour vos besoins personnels. Ceci est simplement un passe-partout pour vous aider à démarrer.
Si vous voulez une ventilation détaillée de tout ce que HTML5 Boilerplate comprend, Paul Irish a enregistré un screencast exclusif pour Nettuts.+.
Une version entièrement commentée est disponible sur html5boilerplate.com.
Souvent, la crainte de mettre en œuvre des fonctionnalités qui ne bénéficient pas d’un support complet du navigateur décourage les concepteurs d’adopter les dernières technologies. Alors que les données démographiques de votre public doivent être examinées avec soin, ainsi que les souhaits de vos clients, si vous acceptez que les sites n'aient pas à se ressembler dans tous les navigateurs, il est possible d'utiliser pleinement aujourd'hui HTML5 et CSS3..
Pensez-y de cette façon: si vous attendez que CSS3 soit "terminé", vous attendrez pour toujours. CSS2 n'est même pas encore totalement supporté par tous les navigateurs! Le principe directeur ici est que chaque utilisateur doit en avoir pour son argent: s’il utilise un navigateur à la fine pointe, pourquoi ne pas tirer parti de toutes les fonctionnalités fournies par le navigateur?
Dites-nous ce que vous pensez de ces problèmes dans les commentaires. Merci beaucoup pour la lecture!