Contribuez à la FAQ HTML/DHTML/XHTML
Salut à tous,
La FAQ (X)HTML est actuellement en ligne avec plus de 60 questions/réponses et en évolution constante.
Vous pouvez la consulter avant de poser une question sur le forum. De plus, pour faciliter vos investigations, un moteur de recherche y a été intégré.
Toutefois nous pouvons la faire grandir avec votre collaboration. En effet, pour participer à son évolution, vous pouvez poster dans le forum Contribuez toutes les questions/réponses qui vous semblent pertinentes.
Merci de mettre les Q/R sous ce format :
Citation:
Question ? (Version: XXX)
Réponse à la question
Code:
agrémentée d'un bout de code le cas échéant
:merci: pour votre future participation :wink:
Est-ce vraiment le bon DOCTYPE ?
Il s'agit de compléter la doc sur le choix d'un DOCTYPE pour XHTML ou HTML. En espérant que ces précision saillent rejoindre les documents déjà présents. Cet article concerne ceux qui utilisent XHTML histoire d'avoir du HTML propre et moderne.
(ceux qui font du vrai xml y trouveront des informations intéressantes mais ne sont pas directement concernés.)
Une question fréquente est de savoir quel DOCTYPE mettre.
Et heureusement on trouve de plus en plus de doc à ce sujet.
Malheureusement (et malgré moi) je me suis retrouvé contraint de pousser les recherches un peu plus loin. Les choses ne sont pas si simples qu'elles le semblent.
Si vous voulez faire du XHTML, vous allez fier de vous débuter le document par:
Code:
1 2 3 4 5
|
<?xml version="1.0" encoding="iso-8859-1"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="fr" xml:lang="fr"> |
( XHTML n'étant pas du html mais du xml, il lui faut la première ligne si vous utilisez un encodage ISO et non UTF. C'est notre cas à nous les francophones, d'où la présence de cette première ligne. De même pour le dédoublement de la langue "fr". Qu'importe, tel n'est pas notre sujet.)
Et là vous êtes fier mais le problème est que la pesque totalité des navigateurs ne passeront PAS en mode XHTML !!!
(mais qu'est-ce qu'il nous dit ???)
Et oui... d'après la norme du W3C, le type MIME d'un document Xhtml doit être application/xhtml+xml au lieu de text/html
c'est un détail ? Oui mais un détail qui change tout...
on retrouve parfois cela dans une balise META:
Code:
1 2
|
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> |
vous voyez ce petit text/html ?
(il est d'ailleurs souvent envoyé d'office par le serveur donc on ne joue pas dessus si facilement)
c'est lui le fautif !
à cause de cela le navigateur va passer dans son "quirk mode" c'est à dire qu'il va considérer que vous ne suivez aucune norme (ça valait le coup de mettre un DOCTYPE) et va essayer d'interpréter votre code comme un vieux html fin 80, début années 90
et cela est dommage parce que vos belles balises <br />
fermantes deviennt des attributs étranges et inconnus.
( < /> c'est pas permis en html)
donc l'effort de faire du propre tombe à l'eau.
Les optimistes diront, ok, qu'à ne cela ne tienne, envoyons le bon type mime au navigateur, allez une ligne php et c'est réglé:
Code:
1 2
|
<?PHP header('Content-Type: application/xhtml+xml; charset=ISO-8859-1') ?> |
Essayez pour voir... les utilisateurs Internet Explorer (IE6) ne pourront plus consulter le site !!!! (et MacOS plantera carrément). Certes les autres navigateurs commuteront comme il faut en XHTML, mais bon...
se priver des nombreux utilisateur de IE, c'est pas malin !
Alors, pas le choix, il FAUT rester en text/html
mais là, le W3C est clair dans sa norme:
XHTML 1.1 exige le type mime application/xhtml+xml (text/html interdit)
et si XHTML 1.0 pourrait accepter text/html, cela est très fortement déconseillé et banni par cette même norme. Motif ayant poussé les navigateurs à ne pas en tenir compte ! (sauf 1 ou deux très rares, mais aucun des connus, pas même Opera ou Mozilla qui restent en vieux HTML comme on l'a dit)
(NB: le CSS peut en pâtir car les dimensions des boîtes ne sont plus calculées pareil non plus dans ce cas de figure. )
Bilan ? Seule façon de respecter les normes du W3C, d'en profiter dans les navigateurs et d'écrire un code propre:
c'est de rester en HTML 4.01 strict
(du moins dans le doctype)
Bien sûr, en ayant écrit quand même du XHTML pour être prêt pour plus tard (un jour, IE acceptera le XHTML)...
on n'aura plus qu'à convertir les <br> en <br />
et idem pour les img et hr
on peut déjà même en html écrire les balises en minuscules, les attributs entre guillemets, etc.
Mais à l'heure actuelle, le seul DOCTYPE utilisable à grande échelle est le bon vieux html (100% de réussite, bien sûr on laisse le type mime habituel text/html)
En espérant avoir apporté une contribution utile.
Mes sources:
http://www.xml.com/pub/a/2003/03/19/dive-into-xml.html
un fou a même eu l'amabilité et le courage de tout tester (tous OS, tous navigateurs, tous doctype)
http://www.w3.org/People/mimasa/test...-types/results
CSS different pour IE et Gecko (firefox)
Trop bien le truk du menu :
Tout d'abord un petit hack CSS tres important qui permer de corriger les bug de IE.
Code:
1 2 3
|
padding-left:18px; /** Code interpreter par FF et IE **/
_padding-left:14px; /** Code interpreter uniquement par IE **/ |
Et voila comment faire pour avoir des propriété differentes entre IE et FF, sans se prendre la tete avec du java ou du php