28172 sujets

CSS et mise en forme, CSS3

Bonjour.

je suis en train de reprendre du code d'une appli existante dans laquel on a un bug dû à IE6 et les petits écrans.

Dans ma page j'ai :
1 - header
2 - un contenu
3 - un footer

Dans mon contenu j'ai :
1 - menu a gauche
2 - contenu central
3 - box a droite (optionnel sur les pages)

Mon menu à gauche (et ma boxe de droite) a un positionnement float.
Donc pour le menu ca donne float: left;

Mon contenu central lui a un margin-left qui vaut la largeur du menu de gauche. Et une largeur de 100%

Tout va bien. Seulement si j'ai un tableau ou des données qui demande une largeur minimum et que je reduis la largeur de la fenêtre mon contenu va descendre sous le menu (tout en gardant le margin-left).

Je sais que c'est pas bien clair tout ca alors du coup j'ai fait vite fait du code HTML + CSS pour montrer ca.

il faut avoir le courage de copier le code suivant, de le coller dans un fichier HTML local et de l'executer avec IE6 en changeant la taille de la fentre tout en observant la partie "contenu central" de la page Smiley smile

<html>
	<head>
		<style>
			#header{
				width: 100%;
				height: 50px;
				border: 1px solid green;
			}
			#left{
				float: left;
				width: 250px;
				border: 1px solid yellow;
			}
			#center{
				width: 100%;
				margin-left: 250px;
				border: 1px solid blue;
			}
			#right{
				width: 250px
				border: 1px solid red;
			}
			#footer{
				width: 100%;
				height: 40px;
				border: 1px solid orange;
			}
		</style>
	</head>
	<body>
		<div id="header">Ici c'est le header</div>
		<div id="middle">
			<div id="left">
				<h3>menu de gauche</h3>
				<ul>
					<li>menu 1</li>
					<li>menu 2</li>
					<li>menu 3</li>
					<li>menu 4</li>
					<li>menu 5</li>
					<li>menu 6</li>
					<li>menu 7</li>
					<li>menu 8</li>
					<li>menu 9</li>
				</ul>
			</div>
			<div id="center">
				<h1>ici on a le contenu</h1>
				<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nam rhoncus pharetra nulla. Integer nisl neque, congue eu, sodales id, lobortis at, tellus. Vestibulum ac sem vel mi sodales accumsan. Cras rhoncus turpis a libero. Maecenas faucibus. Vestibulum luctus consectetuer justo. Proin vestibulum consectetuer metus. Nullam placerat ipsum nec nisl. Suspendisse vitae leo ac tortor suscipit feugiat. Nulla dolor. Nullam aliquam, leo id auctor porta, ligula elit vehicula nunc, vel accumsan ante quam quis metus. Sed et dui quis est suscipit ullamcorper. Donec dictum enim. Phasellus et nibh non enim elementum cursus.</p>
				<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nam rhoncus pharetra nulla. Integer nisl neque, congue eu, sodales id, lobortis at, tellus. Vestibulum ac sem vel mi sodales accumsan. Cras rhoncus turpis a libero. Maecenas faucibus. Vestibulum luctus consectetuer justo. Proin vestibulum consectetuer metus. Nullam placerat ipsum nec nisl. Suspendisse vitae leo ac tortor suscipit feugiat. Nulla dolor. Nullam aliquam, leo id auctor porta, ligula elit vehicula nunc, vel accumsan ante quam quis metus. Sed et dui quis est suscipit ullamcorper. Donec dictum enim. Phasellus et nibh non enim elementum cursus.</p>
				<p>Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nam rhoncus pharetra nulla. Integer nisl neque, congue eu, sodales id, lobortis at, tellus. Vestibulum ac sem vel mi sodales accumsan. Cras rhoncus turpis a libero. Maecenas faucibus. Vestibulum luctus consectetuer justo. Proin vestibulum consectetuer metus. Nullam placerat ipsum nec nisl. Suspendisse vitae leo ac tortor suscipit feugiat. Nulla dolor. Nullam aliquam, leo id auctor porta, ligula elit vehicula nunc, vel accumsan ante quam quis metus. Sed et dui quis est suscipit ullamcorper. Donec dictum enim. Phasellus et nibh non enim elementum cursus.</p>
				<table>
					<tr>
						<th>premierement</th>
						<th>deuxiemement</th>
						<th>troisiemement</th>
						<th>quatriemement</th>
						<th>cinquiemement</th>
					</tr>
					<tr>
						<td>1 - Lorem</td>
						<td>2 - Ipsum</td>
						<td>3 - Dolor</td>
						<td>4 - Sit</td>
						<td>5 - Amet</td>
					</tr>
				</table>
			</div>
			<div id="rigth"><!-- on peut avoir une box a doite --></div>
		</div>
		<div id="footer"></div>
	</body>
</html>


J'ai essayé tout ce qui tourne autour des hack min-width... Sans succès. Là je suis en train de pleurer Smiley confus
Bonjour,

Une bêtise à corriger:
#center{
	[b][#red]width: 100%;[/#][/b]
	margin-left: 250px;
	border: 1px solid blue;
}

Avec ce code, ton bloc fera 100% de la largeur,- + 2px à cause de la bordure, et il sera décalé par la marge à gauche et donc dépassera allègrement à droite. Pas très propre tout ça.

Quant au retour à la ligne, c'est une conséquence du HasLayout dû à la propriété width. Voir le concept de HasLayout dans la FAQ. Et, pour des colonnes qui tiennent à peu près la route, voir par ici:
http://css.alsacreations.com/Faire-une-mise-en-page-sans-tableaux/design-trois-colonnes-positionnement-flottant
Oui moi pour les trois colonnes je me base là dessus :
http://www.alistapart.com/articles/holygrail

Mais bon là comme j'expliquais le code n'a pas été fait par moi. Le bonhomme n'est pas du tout un intégrateur mais bon il se débrouille. maintenant que ej suis là je vais nettoyer pas mal de truc cependant je ne peux pas revoir toute la mise en page pour l'instant puisque ca implique une refonte globale du site (ce qui sera fait plus tard).

En attendant j'essaye de corriger ca.

merci pour l'info je vais tester ca.
Je revois le code ce matin là et je me suis rendu compte que je me suis planté. C4est le tableau dans le #center qui est à width: 100% pas le #center.
Donc c'est deja plus propre.

Bon je m'y met. Merci encore!