5568 sujets

Sémantique web et HTML

Bonjour à tous,
une question me taraude concernant les commentaires conditionnelles appliquées sur l'élément <html> afin de styliser le css selon le navigateur coté client (tel le template Boilerplate).
La bête :

<!DOCTYPE html>
<html> -->
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]> <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
...

J'ai bien compris le "passe-passe" si le navigateur n'est pas Internet Explorer ou si la version d'Internet Explorer est plus petite ou égale à la version 8 mais pour les versions plus grandes que I.E. 8, je sèche...
Je ne comprends pas le marqueur de début de commentaire (ici en rouge) qui fait que si c'est I.E. 9 par ex., <html class="no-js"> s'affichera.
Autant le <!--> (ici en vert) s'annule mais celui en rouge ?
Bon, il y a sûrement une subtilité derrière tout ça et j'espère que vous pourrez éclairer ma lanterne.
Mille et deux mercis !
Modérateur
Bonjour,

le but est pour les navigateurs ne comprenant pas les commentaires conditionnels, ceux-ci vont considérer les trois premières lignes comme des commentaires standard (dès que le navigateur voit <!-- il passe tout en commentaire jusqu'à --> (du coup on peut ouvrir plusieurs fois le commentaire ça n'a pas d'influence)
Mais il faut bien que ces navigateurs inclusent une balise html, du coup ces navigateurs vont afficher <html class="no-js"> car les commentaires conditionnels se ferment avant et après. De plus cela ne provoque pas d'erreur de syntaxe pour les navigateurs qui comprennent les commentaires conditionnels.
Bonjour kustolovic,
je ne savais pas que tu pouvais ouvrir "un commentaire dans un commentaire" sans avoir de problème.
Si j'ai bien compris, mettons que le navigateur est IE9 :

<!--[if gt IE 8]><!--><html class="no-js"> <!--<![endif]-->

Le <! collé à [endif] est "supplanté" par <!-- juste avant ?
Modérateur
Pour ie9 qui comprend les commentaires conditionnels, c'est pas vraiment cela, il va juste chercher le prochain <![endif] situé dans un commentaire, car <![endif]--> n'ouvre pas de commentaire mais le ferme uniquement. Il faut <!-- pour ouvrir un commentaire. Donc dans ce cas il n'y a pas double ouverture.
Ah ! OK pour tes précisions Kustolovic,
je vais potasser tout ça...
Et encore merci pour ta réactivité et tes lumières.
Un grand avé !
Bonjour Patidou,
en effet, j'ai lancé le bouzin peut-être un peu loin mais c'était histoire de bien comprendre la chose. En fait, sur le site de Microsoft, il indique que pour obtenir un Downlevel Revealed Conditional Comment valide 3wc, il fallait ajouter <! (en vert) à la ligne :

<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->

Et de toute façon, Microsoft ne donne pas plus d'explication...
Voilou !