Bonjour,

J'ai suivi le superbe tuto que vous nous avez offert pour créer un site à deux colonnes.
Le rendu me plait.... mais sous Firefox... sous IE6, tout fout le camp!
Je cherche depuis quelques jours comment faire.... j'arrive avec quelques mixes à afficher ce que je veux sur l'un des navigateurs, c'est toujours en sacrifiant le second!

Est-ce que quelqu'un pourrait me filer un coup de main:
Le site est www.babooz.org , sous spip, mais c'est sans conséquence:
Le code html est:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html dir="ltr" lang="fr">
<head>
	<title>Babooz.org</title>
<link rel="stylesheet" href="squelettes/habillage.css" type="text/css" media="projection, screen, tv" />
<!--[if lt IE 6]>
<link rel="stylesheet" href="squelettes/ie.css" type="text/css" media="projection, screen, tv" />
<![endif]-->
</head>

<body>
	<div id="global">
		<div id="header">
Tarratata	
		</div><!-- fin header -->

				<div id="center">

			<div id="sidebar">
<h1>Navigation</h1>
<div class="rubriques">
Les rubriques du site
	</div>
	</div><!-- fin sidebar -->
		
	<div id="content">
	<div id="conteneur">
	<div id="contenu">
	<div class="cartouche">
				<div class="chapo">Amuse gueule musical, performances sur scènes depuis L&#8217;Alsace&nbsp;!</div>
			</div>
			<div class="texte">
le texte
</div>
	  </div>
			</div><!-- fin content -->

		</div><!-- fin center -->
		
		<div id="footer">
	footer
		</div><!-- fin footer -->
	
	
	</div><!-- fin global -->
</body>
</html>


avec pour habillage:

html, body {
margin: 0;
padding: 0;
height: 100%;
}

body {
	font-family:Verdana, Arial, Helvetica, sans-serif;
	font-size : 11px;
	color : #000;
	background-color : #F3F2D5;
	}

div#global {
	min-height:100%;
	width: 750px;
	padding: 0 10px;
	margin: 0 auto;
	position:relative;
	}
	
div#center {
	padding-bottom:100px;
	overflow: auto;
	background-image : url(images/centre.jpg);
	}
	
div#header {
height : 248px ;
background-color :transparent;
background-image : url(images/haut.jpg);
}


div#footer {
	position: absolute;
	width : 680px ; 
	bottom: 0;
	height : 98px ;
	background-image : url(images/bas2.jpg);
	margin-left : auto;
	margin-right : auto;
	padding: 0 35px;
	text-align:center;

	}

div#footer p {
	margin-top:50px;
	color:#4B8133;
	}


div#content {
	float: right;
	width:490px;
	margin-right: 40px;
	text-align:justify;
	}
	
div#sidebar {
	float: left;
	width: 150px;
	padding: 0 35px;
	}






Et pour IE:

#global {
	height: 100%;
	}
	
#content {
	display:inline;}
	
#center {
	overflow: visible;
	height: 1%;
	}
	
#content, #sidebar {
	margin-top: 15px;
	}
	
#global {
	position: static;
	}
	
a, pre {
	position:relative;}
	
body {
	position: relative;	
	}

J'espère ne pas abuser en copiant mon code, mais au moins, ca vous évitera d'aller chercher sur place.

Merci d'avance à tous ceux qui tenteront de me faire part de leurs commentaires...

PS: tiens, une page sur des Aslsaciens... Smiley biggol
Modifié par straydogg (16 Jan 2007 - 22:57)
Salut straydogg.

Je crois que tu devrais relire la 6e étape du tuto attentivement, et particulièrement la partie qui parle des "commentaires conditionnels".

Aucun des correctifs appliqués pour IE6 ne devrait affecter le rendu sous Firefox.
Merci pour la réponse rapide!

J'ai effectivement réalisé la page conditionnelle pour IE. J'ai vérifié qu'elle soit bien prise en compte, avec des modifs de couleurs, mais apparemment, le cantonnement des modifs à la feuille ie.css n'est pas suffisant.

Certaines modifications dans le css initial (habillage.css) permettent la mise en forme correcte sous IE mais c'est là que firefox perd la sienne.
Bonsoir et bienvenu à toi ...

straydogg a écrit :
Certaines modifications dans le css initial (habillage.css) permettent la mise en forme correcte sous IE mais c'est là que firefox perd la sienne.

Tu indiques que certaines modifications faites dans la feuille principale pour IE modifie l'interprétation pour FF... Smiley sweatdrop
Transfère donc toutes les modifications pour IE dans la feuille qui lui est réservée, et tu devrais retrouver la mise en page originale sous les autres navigateurs. Smiley cligne
Modifié par Cygnus (14 Jan 2007 - 23:49)
OK Laapin! Merci pour le conseil: Je viens de nettoyer tout ça....

Le problème vient en particulier de ma balise center: elle passe à la vertcale de la navigation, et ne répète pas l'image en fond d'écran.
Ensuite, elle est coupée, par le footer qui lui monte dessus....

Ca ne me semble pas insurmontable comme problème.... mais ca commence à faire quelques temps que je m'arrache les cheveux!
Smiley sweatdrop
En simplifiant quelque peu le code pour div#sidebar et div#content, et en optant pour quelque chose de plus rationnel ( Smiley sweatdrop ), j'obtiens quelque chose qui passe correctement sous Firefox, et qui devrait constituer une base plus saine pour obtenir la compatibilité avec IE :
div#sidebar {
	float: left;
	width: 150px;
	margin: 0 0 0 35px;
	}
div#content {
	margin: 0 40px 0 220px;
	text-align:justify;
}

On remarquera que div#content n'a pas de largeur ou hauteur fixe, et n'est pas flottant. Seule la marge à gauche crée le retrait par rapport au bord gauche de div#center.

Au fait, l'en-tête comporte les informations textuelles suivantes :
a écrit :
Roots rock reggae peace love unity - Babooz.org

Mais je n'en ai pas vu trace dans le code HTML. Voilà qui est étrange. Smiley confus
Modifié par Florent V. (15 Jan 2007 - 00:35)
Au fait, tu as remarqué que ta feuille de style spéciale pour Internet Explorer s'appliquera aux versions strictement inférieures à la version 6, IE 5.5, 5.0, 4, etc. ?
Florent V. a écrit :
Au fait, tu as remarqué que ta feuille de style spéciale pour Internet Explorer s'appliquera aux versions strictement inférieures à la version 6, IE 5.5, 5.0, 4, etc. ?

ça expliquerait bien des choses Smiley lol
Thomas D. a écrit :
ça expliquerait bien des choses Smiley lol

Peut-être, mais ça n'explique pas tout.

Pour continuer dans ma grande opération « partir sur des bases plus saines » (même si là on bricole sur de l'existant... mais je me comprends), voici ce que j'ai fait :

div#content ul, div#sidebar ul {
	margin: 0; padding: 0;
}

Les styles par défaut des navigateurs pour les retraits des listes, ça c'était une des raisons des erreurs de rendu dans tous les sens sous IE. Voir cet item de la FAQ pour plus d'informations.
Je propose juste un correctif venant « niveler » le rendu entre les navigateurs, et je ne reviens pas sur l'opportunité d'avoir utilisé des listes non ordonnées un peu partout dans la page...

Ensuite, un autre facteur de problème c'est le chevauchement des blocs. Et faire se chevaucher deux flottants, c'est pas une bonne idée, c'est une garantie de bloc qui passe à la ligne à coup sûr. Donc : exit un des deux flottants (ben oui, pour mettre deux éléments côte à côte on n'a besoin que d'un seul flottant !). Comme le menu est en premier dans le code, c'est lui qui sera flottant. Voici ce que ça donne, pour le code standard :

div#sidebar {
	float: left;
	width: 171px;
	margin: 0 0 0 35px;
}
div#content {
	margin-left: 220px;
	width: 490px;
	text-align:justify;
}

Vous remarquerez qu'on n'a pas de marge à droite pour le bloc de contenu ? C'est voulu. Pourquoi s'embêter avec une marge qui pourrait faire dire au navigateur qu'il n'a pas la place de caser le bloc ET ses marges ? Autant ne pas avoir de marges, vu qu'on a une largeur fixe.

Note : on aurait aussi bien pu avoir une marge à gauche et une à droite pour ce bloc, et laisser la largeur être déduite automatiquement. Sauf que voilà : ce bloc contient des titres et autres éléments ayant une largeur fixe. Et Internet Explorer dilatera le bloc aux dimensions de ces titres et autres blocs de largeur fixe. Donc autant partir sur cette largeur fixe dès le départ, et se garder l'espace de droite comme « zone tampon ».

Maintenant, les correctifs pour IE6.
Déjà, on commence par corriger le commentaire conditionnel en replaçant lt (« less than », strictement inférieur à), par lte (« less than equal », inférieur ou égal à).
Ensuite, de quoi a-t-on besoin comme correctifs ?

1. Émuler le min-height en utilisant un height. Ok.
2. Corriger le Three Pixel Jog (décalage de trois pixel pour un bloc doté d'une dimension fixe et jouxtant un flottant). Ok.
3. Corriger le Doubled Margin Bug. Ok.

Ce qui nous donne :
div#global {
	height: 100%;
}
div#content {
	margin-left: 217px; /* corrige le 3px jog (marge de départ de 220px) */
}
div#sidebar {
	display: inline; /* corrige le doubled margin bug */
}

À noter que ces correctifs sont nécessaires pour IE6, mais pas pour IE7 (le premier, s'il était appliqué à IE7, poserait d'ailleurs problème !).


Voilà, je pense qu'on devrait y être. J'ai cru apercevoir également dans le menu de gauche un bug de prise en compte des espaces non significatifs. On se reportera à la fin de l'article suivant.


Sur ce, mesdames, messieurs, je vais prendre congé, car il est tard et je tombe de sommeil. Smiley zzzz
Bonsoir!

Tout d'abord merci pour votre aide! Ca tient un peu de la magie pour moi!

Même en suivant un tuto, ça donne des trucs un peu bizarres!
Notamment le positionnement avec les deux flottants:
http://css.alsacreations.com/xmedia/exemples/design_css2/etape2.html
a écrit :

Les deux colonnes vont être positionnées en "float". Pour avoir l'ordre des colonnes que je viens de choisir, elles doivent toutes les deux flotter à gauche.

div#content {
	float: left;
	width: 530px;
	}
div#sidebar {
	float: right;
	width: 200px;
	}



Sinon pour
a écrit :
Au fait, tu as remarqué que ta feuille de style spéciale pour Internet Explorer s'appliquera aux versions strictement inférieures à la version 6, IE 5.5, 5.0, 4, etc. ?

Je ne sais pas pourquoi c'était It, mais dans mon code, c'était bien Ite.... ça a du flotter quand j'ai nettoyé le code au-dessus. Ce qui explique l'absence d'ouverture de ma balise head, et d'autres petites choses du style.

Sinon, tout à l'air de fonctionner comme il faut.... enfin presque....
J'ai toujours une balise content qui prend toute la largeur, et qui repositionne son contenu à l'extrème gauche une fois que ma div flottante est terminée....

Je vais continuer à trifouiller....
Smiley cligne
Modifié par straydogg (16 Jan 2007 - 00:21)
straydogg a écrit :
Sinon, tout à l'air de fonctionner comme il faut.... enfin presque....
J'ai toujours une balise content qui prend toute la largeur, et qui repositionne son contenu à l'extrème gauche une fois que ma div flottante est terminée....


div#content {
	[b]margin-left: 220px;[/b]
	width: 490px;
	text-align:justify;
}

Smiley rolleyes
Bonsoir!

Merci pour ton aide et ta patience Florent!
Ca y est, le tour est joué:
La marge de mon div#content n'était pour rien dans l'affaire, mais c'était un reste du tutoriel qui trainait dans le ie.css:

#content {
	display:inline;}


Maintenant tou est positionné comme je le voulais!

Merci !
Modifié par straydogg (16 Jan 2007 - 21:25)
straydogg a écrit :
Maintenant tou est positionné comme je le voulais!
Merci !

N'oublie pas d'indiquer ton sujet comme étant [Résolu] alors ... Smiley cligne
cf : La FAQ