Pierre6020 Posté 16 Août 2004 Posté 16 Août 2004 Bonjour à tous, Pour un débutant comme moi en CSS, il est difficile d'assimiler à la fois les bonnes méthodes CSS, et les fameux "hacks" pour IE. Les sites que je fais sont essentiellement destinés à des utilisateurs d'internet explorer. J'etais sur le point de passer à une méthode transitoire, conforme au xHTML mais en conservant tout de même les tableaux de mise en page, lorsqu'il m'était impossible de trouver une solution pour IE. Mais ce matin, en fouillant un peu dans les entrailles de google, j'ai trouvé une méthode, que je n'avais trouvé nulle part ailleurs. Cette méthode, ce sont les balise de commentaire <!--[if IE]><![endif]-->. Je m'en sers de cette façon : <!--[if IE]><link rel="stylesheet" href="../IE.css" type="text/css" /><![endif]--> Et ça fonctionne très bien ! Etonné du manque de popularité de cette méthode, je me demande si c'est une bonne façon de faire, excepté bien sur la contradiction entre cette méthode et l'esprit même du xHTML, qui se doit d'être universel et de ne pas prendre en compte les navigateurs. Mais en attendant, cette feuille de style IE.css pourrait, au gré des améliorations de IE (doucement hein ), ressembler de plus en plus à l'autre, et pour finir je pourrais supprimer cette balise. Qu'en pensez vous ?
Hadrien Posté 16 Août 2004 Posté 16 Août 2004 Ça fonctionne bien, mais créer une feuille de style entière rien que pour un navigateur ça risque d'être assez cauchemardesque à maintenir par la suite. Personnellement le <!-- [if IE]><![endif]--> je le réserve au balisage xhtml. Pour le css j'utilise des règles que IE ne voit pas, par exemple : /* For cool browsers */body > #MyPage{ max-width: 796px; width: auto;}
Pierre6020 Posté 16 Août 2004 Auteur Posté 16 Août 2004 Merci de ta réponse, si ça ne pose pas de problèmes particuliers, je pense que je vais continuer comme ça pour débuter, ça me permet d'avoir une feuille de style claire et logique, je verrai par la suite pour utiliser des règles spéciales en css.
LaurentDenis Posté 16 Août 2004 Posté 16 Août 2004 Les commentaires conditionnels sont bien détaillés dans Conditional Comments for Internet Explorer Comme l'indique cette page, seuls les commentaires conditionnels qui réservent leur contenu à IE sont valides en (X)HTML : les CC de la forme <![if IE]>...<![endif]> qui cachent leur contenu à IE sont invalides.
Pierre6020 Posté 16 Août 2004 Auteur Posté 16 Août 2004 Entendu, donc : <!--[if IE]>...<![endif]--> est valide, et : <![if IE]>...<![endif]> ne l'est pas, c'est bien ça? c'est effectivement logique, <!> n'étant pas une balise HTML, contrairement à <!-- ... -->. Merci d'avoir répondu.
Ganf Posté 16 Août 2004 Posté 16 Août 2004 Modérons : <! ... > est une instruction de contrôle en SGML (donc en HTML) et en XML (donc XHTML). Les instructions de controle (je ne sais pas si c'est le terme exact, les experts me corrigeront) on en trouve pas mal, y compris en HTML et en XML. On les trouve entre autres pour définir le doctype, ou dans la dtd pour définir les éléments, pour définir les entités ... <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">'>;http://www.w3.org/TR/html4/strict.dtd"> est une instruction de contrôle (<! au début, > à la fin) Dans une instruction de contrôle on peut faire pas mal de choses ... dont des commentaires. Un commentaire dans une instruction de contrôle doit commencer par "--" et finir par "--". Ainsi <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd" -- il s'agit de la DTD HTML 4.01 stricte --> est théoriquement strictement équivalent à ce qui est au dessus, et donc théoriquement valide en HTML. Ce qu'on utilise habituellement comme commentaire en HTML c'est juste une instruction de contrôle ne contenant qu'un commentaire et rien d'autre) : <!-- xxx --> Les balises <!xxx> sont donc sensées être une syntaxe correcte du coté grammaire. La balise <![if IE]> est donc une balise tout à fait correcte, mais qui n'est simplement pas connue par les clients autres que MSIE. Sauf si je fais une boulette dans mon raisonnement, un document elles ne remettent pas en cause la validité HTML ni le fait que le document soit correct. Elles devraient être ignorées par n'importe quel document conforme. S'il s'agit bien de contenu non standard, c'est du contenu qui théoriquement ne devrait poser problème à aucun navigateur standard (un peu comme les hack CSS, ce sont des erreurs mais qui devraient être ignorées par les navigateurs corrects). Selon moi il n'y a donc rien de mal, ni avec la première forme, ni avec la seconde. Il s'agit juste d'une syntaxe moins connue de ceux qui n'ont pas exploré à fond SGML/XML. (Note, je ne garanti aucune information ci-dessus, il ne s'agit pas d'un terrain d'expertise pour moi). Il se trouve donc que <!-- xxx --> est une instruction de contrôle ne contenant ... qu'un commentaire.
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant