Aller au contenu

<!--[if IE]> Qu'en pensez-vous?


Pierre6020

Sujets conseillés

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 ?

Lien vers le commentaire
Partager sur d’autres sites

Ç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;
}

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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" &quot;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" &quot;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.

Lien vers le commentaire
Partager sur d’autres sites

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...