Pas de panique
Parcourir la série : premier - suivant - dernier
Au secours ma mise en page se rebelle !
Remettre son blog dans le droit chemin en 4 étapes.
Étape 1. Choisir le bon moment.
Pas la peine de vous lancer dans le diagnostic et la réparation dans l'urgence, au pire, si le bug rend la lecture de vos billets impossible, vous désactivez le thème et présenterez votre blog « tout nu » si vous n'avez pas le temps de vous en occuper tout de suite, vos lecteurs s'en remettront. Vous vous attellerez à la tâche quand vous vous sentirez l'esprit assez disponible pour être patient et ne pas essayer de résoudre le problème en deux coups de cuiller à pot et de rustines bas de gamme.
Étape 2. Valider son code.
On ne le répétera jamais assez, il est essentiel que votre code soit valide. Et ceci vaut quel que soit votre souci. Ici joue à plein l'effet battement d'aile du papillon. Une simple fermeture de balise oubliée ou incorrecte dans le coin le plus obscur de la page peut mettre à mal toute la mise en pages. Et lorsque vous appellerez à l'aide c'est la première chose qu'on vous demandera de faire. Avant de recoudre une plaie, on nettoie le champ opératoire, c'est une règle d'or. Il existe plusieurs outils en ligne, en particulier le validateur du W3C québécois, qui a le bon goût de s'exprimer en français.
Si l'une des erreurs signalées est pour vous incompréhensible, corrigez toutes celles que vous pouvez puis venez demander sur le forum, il y aura toujours quelqu'un pour prendre le temps de vous aider.
Étape 3. Circonscrire le problème.
Le code est valide, vous êtes d'un calme olympien. Mais ça ne va pas mieux.
Tâchons alors de trouver la source du problème : le moteur ou la
carrosserie ? Autrement dit : le code de la page ou les css ? Il
faut tester. Renommez provisoirement votre feuille de style en
my-style.css
et placez la feuille de style du thème Old à
la place[1] si vous utilisez Dotclear 1, celle du thème
BlueSilence si vous utilisez Dotclear 2.
Dans le code xhtml/php
Si le problème persiste il y a de très fortes chances qu'il soit généré par vos personnalisations de code. Supprimez toutes vos personnalisations (ou placez-les en commentaire) dans les fichiers *.php et refaites-les (ou décommentez-les) une à une en testant chaque modification jusqu'à trouver la fautive.[2] Si vous avez installé un plugin, vérifiez à nouveau soigneusement que vous en avez suivi les instructions d'installation.
Dans les css
Tout passe bien quand la feuille de style n'est pas la vôtre, c'est donc de ce côté que vous devrez porter votre attention. Quelques pistes peuvent toutefois vous guider : le souci apparaît-il avec tous les navigateurs (faites toujours les tests au moins avec Firefox ou Safari et Internet Explorer) ? Alors vous vous êtes trompés quelque part. Vous êtes probablement parti d'un thème existant et avez modifié cette feuille. Revenez au point de départ, recommencez vos personnalisations, testez à chaque étape. Le souci n'apparaît que sur l'un d'entre eux ? A coup sûr c'est que vous n'avez pas connaissance / n'avez pas tenu compte des différences d'interprétation entre eux.
La plus répandue : le calcul des dimensions des boîtes :
Si tous les navigateurs modernes prennent la déclaration de largeur comme
une valeur globale à l'intérieur de laquelle se placeront les marges et les
bordures, Internet Explorer prend cette largeur et place les marges et bordures
à l'extérieur de celle-ci. Ainsi, pour un bloc déclaré avec width :
200px; margin-left : 30px; margin-right : 20px; border : 3px
solid #ccc;
les navigateurs modernes réserveront 200 pixels pour cette
boîte et Internet Explorer 256 pixels (200 + 30 + 20 + 3 + 3). Si vous avez
organisé votre mise en page sans laisser ces 256 pixels disponibles, la mise en
page casse et le bloc « attend » d'avoir la place pour s'afficher.
C'est typiquement le diagnostic à poser pour un menu qui se positionne en bas
de la page au lieu de se placer à côté des billets.
Le contenu du blog
Le code est valide, la css est celle d'origine qui fonctionnait très bien sur le site de démo de son créateur et pourtant, rien ne va plus. Il faut alors chercher dans le contenu même de votre blog.
La superposition des blocs :
Autre grand tube des mises en page perturbées, les images trop grandes (ou autres éléments). Vous avez bien réglé toutes les dimensions dans votre feuille de style, mais vous avez placé dans un bloc un élément plus grand que son contenant. Là encore, le comportement variera selon le navigateur. Les navigateurs modernes feront se superposer les blocs tandis qu'une fois encore Internet Explorer agrandira la boîte-contenant et repoussera l'affichage du bloc concerné. Les plus répandues de ces insertions malheureuses sont d'une part les images, d'autre part les chaînes de caractères discontinues trop longues pour leur boîte d'accueil. Un moyen simple pour vérifier si votre souci concerne l'une de vos images : désactiver leur affichage dans votre navigateur et constater si le problème en est résolu. Si ça ne provient pas d'une image, cherchez si dans votre page il y a une citation de code avec une ligne longue, ou une url à rallonge. Assurez-vous que cet élément est à l'origine du pataquès en mettant provisoirement hors ligne le billet concerné.
Étape 4. Appeler à l'aide.
Le forum accueillera toutes vos questions n'ayant pu trouver leur solution avec les quelques pistes données ici. Commencez par utiliser le moteur de recherche interne du forum pour voir si la question n'a pas déjà été posée et résolue. Si ça n'est pas encore le cas, ouvrez un nouveau fil et aidez-nous à vous aider : lorsque vous viendrez sur le forum, pensez à formuler clairement quel souci vous préoccupe, indiquez l'adresse de votre blog (mieux : indiquez-la dans votre profil ou votre signature), si vous ne pouvez la donner, dites quel thème vous utilisez et faites une copie d'écran de la manifestation du problème que vous déposerez sur un serveur et dont vous donnerez le lien dans votre message. Et ainsi de tout renseignement qui vous semblera pouvoir aider. Il vaut mieux donner trop d'infos que pas assez !
Partagez
Le forum est un lieu d'entraide. Pour les recherches ultérieures, tâchez d'être « parlant » dans le titre de votre sujet. Quand vous aurez réglé le problème rencontré, rédigez un message dans le fil où vous avez posté votre question décrivant sa résolution. Cela pourra aider la prochaine personne qui rencontrera le même type de souci. Et venez y donner un petit coup de main de temps en temps ;)
Notes
[1] Je suggère celle-ci plutôt que celle par défaut, d'une part parce que celle par défaut requiert également layout.css, d'autre part parce que la flexibilité et la simplicité de Old écartera plus facilement des problèmes liés à la taille des blocs, j'y reviendrai.
[2] En principe, à ce moment-là, vous devriez aller chercher une poignée d'orties et vous flageller : on devrait systématiquement vérifier chaque modification dans divers navigateurs avant de procéder à la suivante...
Commentaires
On peut aussi dire de s'aider d'un navigateur respectant les standards pour la mise en page et puis faire les ajustement pour IE par après. ;)
Bonjour,
Excellent ! J'ajouterais : user et abuser des copies de sauvegarde - une copie des documents HTML et CSS de départ - une copie à chaque étape réussie (après passage au validateur bien-sûr)
Quand on a la tête dans le guidon et qu'on a fait une dizaine de modifications, on ne sait plus où on en est, il est alors bien pratique de pouvoir repartir sur la dernière bonne version plutôt que de tout reprendre à zéro.
Amicalement, Monique
Oups... j'ai encore oublié d'utiliser la syntaxe wiki pour la présentation (et bien-sûr, j'ai négligé la prévualisation...), désolée :-[
Amicalement,
Monique
Les sauvegardes sont la base de toute manipulation en programmation (même en info de gestion !) et le web n'y déroge pas (j'oserais dire : encore moins)
Donc, aucune solution dans le cas des mises en page "élastiques" ?
si: firefox :-p
On peut couper le long commentaire (en n'affichant pas la partie de droite) en placant un overflow:hidden sur #comments
Pour faire revenir le reste sur une autre ligne, il faut traiter les chaines de caractères et ajouter un espace à tous les x caractères sans espaces consécutifs.
Oui, on peut aussi virer le commentaire du plaisantin ou ajouter des espaces. Dans la pratique réelle de blog les chaînes de caractères de 600 signes n'existent pas.
Moi je crois avoir à peu près le même souci... sous IE, on dirait que les millers d'heures que j'ai passer à faire tenir mon blog droit n'ont servies à rien du tout... dire que je commençais à diffuser le lien pour y aller... tout le monde va se moquer de moi( du moins tout ceux qui n'ont pas firefox)... Si quelqu'un peut jeter un oeil... j'y connais pas grand chose en css... mais je voudrai arriver à rajouter une colonne supplémentaire à droite... comment procéder à la validation de son thème? Merci d'avance
salut: j'aimerais intéger une partie de code html permettant d'activer directement un moteur de recherche
celui ci en fait: voir le bas de page => code généré
comment éviter le piège du code html affiché en texte simple?
salut: j'aimerais intéger une partie de code html permettant d'activer directement un moteur de recherche
celui ci en fait: voir le bas de page => code généré
comment éviter le piège du code html affiché en texte simple?
ExaLover, je crains que tu n'aies omis de lire le petit paragraphe introduisant le formulaire de commentaires :)
Bonjour !
J'ai un gros souci, mon blog s'affiche mal sous firefox, aucun moyen d'avoir la meme chose qu avec IE. Je ne sais plus qoi faire...pourriez vous me donner un coup de main?
meci
Merci de corriger vos indications doublement erronnées pour les dimensions des bôites !
En effet, contrairement à celles-ci, les navigateurs modernes ne prennent pas en compte la largeur comme une valeur globale à l'intérieur de laquelle se placeront les marges et les bordures mais seulement la largeur de leur contenu à laquelle il convient d'ajouter les marges intérieures (les paddings et non les margins !) et les largeurs des bordures, tandis que les anciennes versions d'Internet Explorer (mais aussi les nouvelles lorsqu'elles ne sont pas en mode strict) incluent ces éléments...
Dans l'exemple donné, les dimensions des marges n'interviennent pas et les boites de Mozilla FireFox feront 206 pixels tandis que celles d'Internet Explorer feront effectivement 200 pixels.
Il est possible que je me sois mal exprimée en parlant de « largeur de boîte » au lieu de « largeur de l'espace à réserver » mais « merci » vous aussi de ne pas le prendre sur ce ton hautain et autoritaire.
Une boîte de 300px a besoin de plus de place sous IE que sous les autres navigateurs car les marges et bordures viendront en plus de la largeur déclarée en
width
. C'est l'idée maîtresse de cet article et je crois qu'elle est bien comprise en ce sens. Si toutefois vous souhaitez proposer une reformulation n'hésitez pas à le faire, tout ce qui peut améliorer la compréhension et l'utilisation de cet article est bienvenu.http://openweb.eu.org/articles/dimensions_boites_css/
Je ne puis que vous inviter à charger le code suivant dans différents navigateurs... @@<html><head><title>Largeur des boites</title> <style> body {margin:0px;padding:0px;} div {width:300px;margin:0 30px;border:20px solid yellow;} hr {display:block;float:left;width:300px;margin:0 0 0 30px;} </style> </head> <body> <div> </div><hr /> </body> </html>@@ et vous adresser humblement tous mes voeux
Soyons constructifs:
Fort heureusement, cette question devrait maintenant relever de l'histoire ancienne. Les nouvelles versions d'Internet Explorer s'alignent, encore une fois en mode strict, sur les autres navigateurs et Dotclear a fait, à cet égard, le bon choix.
Faisons donc preuve d'un peu plus de rigueur, de discipline et d'humilité et évitons, en toute hypothèse, de faire comme les Belges qui, parait-il, dans un magasin de chaussures essayent les boites !
M'ci Julien, je vais de toutes façons je crois faire un ch'ti dessin, ça sera plus parlant et évitera les confusions dans les termes employés :)
Au delà des interprétations différentes des dimensions, et même si Internet Explorer avait choisi, qu’on le veuille ou non, la définition la plus intuitive (le contenant et pas le contenu), l'élasticité des blocs ou boîtes de son navigateur nous a tous trompé en s’affranchissant des dimensions déclarées pour s’adapter à leur contenu et masquer ainsi les disparités !
Des boîtes aux dimensions de leur contenu (marges extérieures de ceux-ci comprises) prenaient en effet la même allure sur les différents navigateurs, quelles que soient leurs propres marges intérieures et leurs propres bordures… Dans ces conditions, une mise en page pouvait paraître adaptée à différents navigateurs, mais pourtant se rebeller sur Internet Explorer dès le premier accroissement de son contenu !
Fort heureusement, le mode strict efface maintenant ces disparités. Retenons cependant avec Kozlika et le consortium du W3C que pour les dimensions des boîtes, il faut d’abord penser aux pieds !
Bon courage et meilleurs voeux à tous !
J'ai un problème avec IE7 et mon blog. Il est impossible aux surfeurs usant de IE7 de poster des commentaires. Ils ne voient pas affiché le bouton "envoyer". Aucun problemes avec Firefox et safari. IL est vrai que j'ai des erreurs dans mon code. Mais je ne suis qu'une débutante dans le css et dotclear, aussi une fois les erreurs isolée je ne sais pas comment les corriger. J'ai également des problèmes de couleurs entre les navigateurs et de disposition avec IE6 J'utilise Dreamweaver. Je suis pro-Firefox mais je n'ai pas encore réussie à faire migrer tous mes amis. Je dois donc régler ces problèmes.
Merci de votre aide
chapeau :) to be or not...