5568 sujets

Sémantique web et HTML

Bonjour à tous,

je vais essayer d'être le plus clair possible pour expliquer le petit problème qui me tracasse.

Je suis actuellement en train de réaliser des maquettes statiques pour un projet Web. Comme d'habitude j'ai effectué mes test d'interopérabilité et les validations qui vont bien (3C et WAI/Wave).

Ma surprise fut grande lorsque j'ai découvert le comportement de IE7 vis à vis du bon vieux "!important". En effet selon la DTD de mes pages (soit XHTML 13.0 Transitional soit Strict) IE7 n'interprète pas de la même façon cette élément.

EX:

.monSelecteur{
    position: absolute,
    left: 0 !important;
    left: 10px;
}


Si je reprend cette exemple complétement factice :
Avec la DTD XHTML 1.0 Transitionnal : IE7 fonctionne comme son grand frère et prend bien la valeur passé après le !important soit 10px.
Avec la DTD Strict, IE7 se comporte comme FF and co et prend la première valeur. MAIS les problème de positionnement sont toujours les même qu'IE6 et donc je n'arrive pas à positionner mon (ou mes) bloc comme je le souhaite sur ces 3 zozos (IE6, IE7, FF and co).

Si quelqu'un a déjà rencontré ce problème et si il a une solution ou simplement une explication pour ce phénomène je suis preneur.

Merci d'avance.
Bon courage et bonne fin de journée. Smiley smile
Modifié par Neck (30 Mar 2007 - 16:38)
Salut,

tu devrais utiliser le bouton code de l'interface de saisie de message pour baliser le code de ton message. C'est une des bonnes pratiques de ce forum Smiley cligne

Sinon je pense que ceci
a écrit :

test d'interop.

signifie test d'interopérabilité...

A quelques lettres près, mieux vaut l'écrire in extenso. Et il s'agit là d'une bonne pratique qui excède très largement ce forum.

Sinon, je crains que le code css sur lequel tu souhaites t'appuyer soit très proche des techniques de hack. C'est une démarche à oublier définitivement. La technique des commentaires conditionnels est beaucoup plus fiable pour s'assurer du comportement des différentes versions d'IE.

et ce point est établi depuis plus d'un an maintenant (et sans doute plus d'ailleurs).
Modifié par Christian Le Bouler (30 Mar 2007 - 15:03)
Christian Le Bouler a écrit :
je crains que le code css sur lequel tu souhaites t'appuyer soit très proche des techniques de hack.
... de quoi? Que considères-tu comme un hack? J'ai dû louper quelque chose là... Smiley hum
Plop,

désolé pour "les bonnes pratiques" ... promis je ne recommencerais plus Smiley smile

Pour ce qui est de considérer le !important comme un hack je ne suis pas tout à fait d'accord. De plus nous essayons d'éviter d'aller ajouter des commentaires conditionnels dans le code HTML. Par conséquent j'aimerais éviter ce genre "d'artifices".

J'avoue bloquer sur ce problème sans l'utilisation des commentaires conditionnels.
Modifié par Neck (30 Mar 2007 - 15:30)
Hello,
Neck a écrit :
désolé pour "les bonnes pratiques" ... promis je ne recommencerais plus Smiley smile
Mieux que ça, tu peux éditer ton premier message pour le corriger. Smiley cligne
Neck a écrit :
Pour ce qui est de considérer le !important comme un hack je ne suis pas tout à fait d'accord. De plus nous essayons d'éviter d'aller ajouter des commentaires conditionnels dans le code HTML. Par conséquent j'aimerais éviter ce genre "d'artifices".
Peux-tu expliquer pourquoi ? L'utilisation de !important est bien un hack puisque cette technique se base sur un défaut d'implémentation du navigateur. Par contre, les commentaires conditionnels sont prévus pour cet usage et permettent d'isoler proprement et de façon fiable les correctifs pour IE.
Benjamin D.C. a écrit :
... de quoi? Que considères-tu comme un hack? J'ai dû louper quelque chose là... Smiley hum
Oui, on dirait...
Modifié par Julien Royer (30 Mar 2007 - 15:47)
Merci pour ces réponses.

Julien ton explication me paraît du coup bien plus claire pour considérer le "!important" comme un hack. Merci ^^

Je vais me pencher sur la question des commentaires conditionnels alors ...
Cela me semble tout de même un paliatif spécifique à chaque version d'IE ... et du coup nous ne fesons plus du générique mais du spécifique. Ce qui est bien triste. Mais bon cela est un autre débat Smiley smile

Pour revenir au problème d'interprétation d'IE7 selon la DTD spécifiée, est ce que quelqu'un a une explication logique à ce phénoméne ? ...
Modifié par Neck (30 Mar 2007 - 16:14)
Neck a écrit :
Cela me semble tout de même un paliatif spécifique à chaque version d'IE ... et du coup nous ne fesons plus du générique mais du spécifique.
Tu peux très bien cibler toutes les versions d'IE, ou les versions inférieures à IE 7... Tandis que les hacks ne permettent pas ce genre de subtilités (et risquent d'être interprétés par des navigateurs qui n'étaient pas visés au départ). Pour en savoir plus sur les commentaires conditionnels, tu peux jeter un coup d'oeil à la FAQ.

En ce qui concerne ton problème de départ, il doit s'agir d'un effet de bord du doctype switching. Il me semble que Christian avait déjà évoqué un comportement similaire sur le forum.
Ok merci.
Pour les commentaires conditionnels je connait déjà suffisament pour m'en servir.
Par contre j'avoue que je ne maitrise certainement pas le Doctype switching pour bien comprendre ce phénomène.


En tout cas merci pour vos réponses constructives. Je pense que je reviendrais poster sur ce jolie forum.

Bonne journée et bon week end.
Oops, moi et ma tête en l'air. Je crois que je vais m'imprimer ces quelques règles Smiley smile

Oui on va dire que c'est résolu.
Julien Royer a écrit :

En ce qui concerne ton problème de départ, il doit s'agir d'un effet de bord du doctype switching. Il me semble que Christian avait déjà évoqué un comportement similaire sur le forum.


... juste une petite question supplémentaire. Je viens de lire un article sur le Doctype switching (assez complet ... puisqu'il viens d'Alsa ^^). Si je comprend bien le problème, lorsqu'aucune DTD n'est spécifiée IE passe en mode quirk (si je ne me trompes pas ...). Seulement dans mon exemple j'ai bien définit une DTD avec la syntaxe du W3C donc il ne devrait pas passer en mode quirk et interpréter les pages de manière "standard".
Neck a écrit :
Si je comprend bien le problème, lorsqu'aucune DTD n'est spécifiée IE passe en mode quirk (si je ne me trompes pas ...).
Tu as bien compris. Smiley smile

Je ne connais pas la réponse à ta question.
Neck a écrit :

Pour les commentaires conditionnels je connait déjà suffisament pour m'en servir.


Ben le mieux alors c'est de t'en servir pour ça aussi Smiley smile
Neck a écrit :
Seulement dans mon exemple j'ai bien définit une DTD avec la syntaxe du W3C donc il ne devrait pas passer en mode quirk et interpréter les pages de manière "standard".

Il ne passe pas en mode Quirks. Sauf si tu as une erreur dans ton doctype (doctype tronqué sans URL de la DTD, par exemple).

Je me souviens vaguement avoir entendu parler de différences d'interprétation suivant le doctype Strict ou Transitional, et si je me souviens bien ça concernait Javascript. Mais je n'ai pas trouvé de source pour confirmer. Smiley ohwell

Quoi qu'il en soit, vérifie avec quelque chose de plus facilement testable (genre un bloc de 200px de large et avec un padding-left de 100px) si tu es bien en rendu standard malgré le changement de Doctype.

Attention également à l'utilisation du prologue XML, qui perturbe IE.
Florent V. a écrit :

Il ne passe pas en mode Quirks. Sauf si tu as une erreur dans ton doctype (doctype tronqué sans URL de la DTD, par exemple).


Cette affirmation (doctype sans URI) n'est valable que pour les doctype
html4 transitionnal et les version antèrieur (html 3.2...)
Pour en savoir plus : http://hsivonen.iki.fi/doctype/

Florent V. a écrit :
Je me souviens vaguement avoir entendu parler de différences
d'interprétation suivant le doctype Strict ou Transitional, et si je me
souviens bien ça concernait Javascript. Mais je n'ai pas trouvé de source
pour confirmer. ohwell

Pour je javascript c'est bien possible dailleurs si tu trouves quelque chose là-dessus je suis preneur.

En fait la principale différence qu'il existe entre lee mode strict et le mode
standard (chose très rarement renseignée) indépendemment des aspects
de permissivité, se situe au niveau des images dans les navigateurs Gecko
recents.

Des doctypes HTML4 et XHTML complets transitionnal ou frameset
déclenchent le mode Almost standard sur les versions récentes des
navigateurs à base de moteur Gecko.
Celui-ci a pour effet de supprimer les espaces supplémentaires situés
sous les images (traitées comme élément inline).
C'est en fait une fonctionnalité qui a été implémenté par les ingénieurs
de Mozilla pour subvenir à certain besoins (mise ne page hybride
avec des images dans des tableaux et dans le cas ou les images doivent
être présentées horizontalement entre autre).

Pour cela, IE se comporte comme le mode Amost standard de Gecko
quelque soit son doctype et n'ajoute pas d'espace sous les images.
Modifié par Hermann (31 Mar 2007 - 17:30)
Plop,

ok donc pour le moment il n'y a pas d'explication "rationnelle" à mon problème. J'ai un doctype tout à fait correct Xhtml 1.0 Transitional (et Strict) et j'ai des différences d'interprétations d'IE7 vis à vis du hack "!important".

Merci pour vos lumières en tout cas. Je vais essayer des chercher des infos sur le net.
Neck a écrit :
ok donc pour le moment il n'y a pas d'explication "rationnelle" à mon problème. J'ai un doctype tout à fait correct Xhtml 1.0 Transitional (et Strict) et j'ai des différences d'interprétations d'IE7 vis à vis du hack "!important".

Solution : se passer des hacks autant que possible, et privilégier les commentaires conditionnels. D'après ce que tu dis plus haut, tu devrais être en mesure de gérer les différentes contraintes rencontrées par ce biais, non ?
Modifié par Florent V. (02 Apr 2007 - 21:53)
A vrai dire je ne cherche pas de solution ... puisque je l'ai déjà. Je cherche juste à comprendre ce comportement d'IE7. Et pour cette question je n'ai pour le moment aucune réponse. Smiley confus
Bonjour,
l'interprétation de certaines propriétés CSS peuvent être différentes selon
la DTD mais surtout en mode quirks. Ce dernier est plus permissif vis à vis de
certaines propriétés CSS et favorise aussi l'utilisation des vieilles
implémentations propriétaires. (Scrollbar...)
Le fait qu'IE7 interprète le !important normalement en présence d'un DTD scrict est assez logique.
En mode standard il ne fait que s'aligner sur les autres navigateurs qui ont un
comportement normal. De ce point de vue, les doctype transitionnels servent
en quelques sorte de transition entre le mode quirks et le mode standard.
Modifié par Hermann (04 Apr 2007 - 13:15)