28173 sujets

CSS et mise en forme, CSS3

Bonjour à tous !

Cela fait plusieurs problèmes que j'arrive a resoudre grace aux tuto et a ce precieux forum, mais la je coince.

J'ai un site dont la structure est composee d'une colonne #container, decoupee en 4 barres horizontales : #header, #menu, #content et #footer.

<body>
<div id="container">
	<div id="header">
	</div>
	<div id="menu">
		<?php include './menu.php'; ?>
	</div>
	<br/><br/><hr/>
	<div id="content">
		<?php
			//Menu dynamique affichant dans le corps du site la page sélectionnée
		?>
		
	</div>
	<div id="footer">
		<ul>
			<li><a href="./index.php?menu=home">Home</a></li>|
			<li><a href="./index.php?menu=category">Products</a></li>|
			<li><a href="./index.php?menu=aboutus">About us</a></li>|
			<li><a href="./index.php?menu=join">Join</a></li>|
			<li><a href="./index.php?menu=contact">Contact</a></li>
		</ul>
		<span></span>	
	</div>
</div>

</body>


Typiquement, le comportement que j'aimerais obtenir est une page qui occupe au minimum 100% de la hauteur avec le footer tout en bas, avec l'agrandissement de la hauteur de #content si besoin (un peu comme dans l'excellent tuto ici).
Ca fonctionne presque... ma page a bien la taille minimum voulue, mais mon footer colle a la div precedente (#content).
upload/13078-footer1.JPG

Mais si je regenere la page en cliquant sur le lien " Home " du footer, celui-ci prends la place que je voulais :
upload/13078-footer2.JPG

Si vous avez une idée ... Smiley decu Voici la partie de mon .css concernée :


html {
	background: #ddd url(../pictures/html.png);
}	
body {
	font-family: Verdana, Arial, Helvetica, sans-serif;
	font-size: 12px;
	margin: 0px;
	padding: 0px;
}
html, body{
	height:100%
}

#container {
	width: 750px;
	margin: 0px auto;
	padding-top:5px;
	overflow:auto;
	clear:both;
	min-height:99%;
	background: url(../pictures/global.png) center repeat-y;
	position:relative;
}

/******************** header ********************/
#header {
	width:720px;
	height:150px;
	margin:auto;
	margin-bottom:10px;
	background-image:url(../pictures/header3.png);
	background-repeat: no-repeat;
	background-position:center;
}

/*****************Rolling Menu*******************/
#menu {
	text-align:center;
	width:700px;
	height:22px;
	margin: 2px 2px 2px 35px;
	padding: 3px 3px 3px 3px;
	z-index:10;
	position:absolute;
}

/* j'abrege le menu deroulant horizontal de alsacreation */

/******************** Content ********************/
p, h1, a, span{font-family: Arial, Helvetica, sans-serif;}
#content {
	/*width:750px;*/
	margin-left:25px;
	margin-right:25px;
	background-color:#ffffff;
	z-index:5;
	padding-bottom:40px;
	overflow:visible;
	height:1%;
	float:left;
}


/******************** Footer ********************/
#footer {
	width:750px;
	text-align:center;
	position:absolute;
	bottom:5px;
	z-index:10;
	height:30px;
}
#footer li {
	display:inline;
	float:none;
	text-align:center;
}
#footer a {
	font-weight:900;
	text-decoration:none;
}
#footer a:hover {
	text-decoration:underline;
}
#footer span {
	display:block;
	clear:both;
}


Je vous remercie par avance !

Shanmao.
Modifié par Shanmao (07 Jul 2007 - 16:57)
Est-ce que le problème ne viendrait pas des styles de div#content (qui me laissent perplexe... Smiley sweatdrop ) :
#content {
	/*width:750px;*/
	margin-left:25px;
	margin-right:25px;
	background-color:#ffffff;
	z-index:5;
	padding-bottom:40px;
	overflow:visible;
	height:1%;
	float:left;
}

Le z-index est inutile et de toute façon inefficace ici (ça ne marche que sur les éléments positionnés), le float: left a l'air particulièrement inutile aussi, le height: 1%; overflow: visible; me semble casse-gueule...

Je tenterais quelque chose de plus simple :
#content {
	margin: 0 25px;
	padding-bottom:40px;
	background-color: white;
}

Si tu as toujours un problème de positionnement du pied de page, il faudrait nous dire s'il se manifeste dans tous les navigateurs ou uniquement dans l'un ou l'autre (au hasard : Internet Explorer).

Il me semble avoir déjà croisé de telles difficultés pour le positionnement absolu en bas d'éléments dans IE.
Au hasard, je tenterais de rajouter un zoom: 1; sur div#content, pour voir.
Modifié par Florent V. (03 Jul 2007 - 11:16)
Bonjour Florent,

Merci pour ta reponse !

En effet, le code est plus clair comme ca. (il resultait d'une multitude de tests infructueux que j'ai oublie de supprimer ^_^)

MAIS ... le probleme persiste (cela m'en a resolu par contre d'autres sous IE). Oui car en effet, ce que je vous ai montré se passe sur FF1.5 et FF2.0.
Je me suis pas encore oqp de la compatibilite IE, mais pour l'exemple, sur IE 6.0 ca donne ca (pas teste sous IE7) :
upload/13078-footer3.JPG

Idem pour zoom:1; aucun effet. (d'ailleurs, notepad++ ne reconnait pas ce style Smiley ohwell pourtant j'ai bien verifie la syntaxe).
Last Bump, après je vous embête plus... au moins pour avoir votre avis du type "C'est un problème insolvable" ou "C'est une virgule qui manque quelque part".

Merci.
Tiens, d'habitude ce genre de problème je le constate surtout avec IE, pas trop avec Firefox.

Il me semble qu'on a parfois des surprises lorsque les images ne sont pas en cache et que la hauteur des images n'est pas indiquée dans le code HTML : le navigateur affiche la page sans les images, puis les images s'affichent et ça décale un peu tout, sauf peut-être tel ou tel élément positionné en absolu.

Est-ce que tu as des images dans ta page, et est-ce que leurs dimensions sont indiquées dans le code HTML ?
Après quelques bidouillages de CSS, le problème n'existe plus sous IE6, mais toujours sous FF (c'est bien la premiere fois que FF me pose plus pb que IE Smiley ohwell ).

La taille de mes images n'etaients pas definies, mais meme apres avoir donné une taille à chacune d'entre elle sur une page test, le problème persiste Smiley ohwell

J'ai essayé de modifier la valeur du cache de FF (browser.cache.memory.enable = FALSE ... TRUE par defaut) sans changement.

Un ami me conseille de faire un prefetch sur toutes les images du site, mais je suis sceptique pour deux raisons :
- 1) je n'ai pas de chargement d'image particulier apres l'affichage de la page (pas de rollover ou autre)
- 2) le fonctionnement de mon site est simple : il n'y a que la partie #content qui change avec un systeme d'include de page et de variables GET... Bref tout ca pour dire que je fais quoi avec un prefetch ? je charge TOUTES les images du site d'un coup ?

Avant que je me lance dans la comprehension de tout ce systeme, pensez vous que ca a une chance de marcher et/ou voyez vous une autre raison? :-P

Merci d'avance Smiley cligne
On peut voir la page/le site ? Ça serait plus simple que par bouts de code et captures d'écrans interposés.
Hum. On va dire que oui. En espérant que ca ne me pose pas de problème ^_^

-www.cac-world.com

login : alsacreation
mdp : alsacreation

C'est pas joli joli (pour le moment) Smiley langue
Modifié par Florent V. (07 Jul 2007 - 15:38)
Hello,

Après test, il semblerait bien qu'il s'agisse d'un bug de Firefox (pas réussi à le reproduire avec Opera ou Konqueror).

On a ceci:
div#container {
	position: relative;
	min-height: 100%;
	overflow: auto;
}

Si je passe le min-height en height, le pied de page positionné en absolu se place correctement. Si je supprime le overflow: auto, le pied de page se place correctement. Mais avec min-height et overflow: auto à la fois, ça ne marche plus dans Firefox.

À noter que le comportement est le même avec un overflow: hidden.

Bref, si ce dernier n'est pas indispensable je le supprimerais.

Et s'il est indispensable (par exemple pour éviter le dépassement d'éléments flottants, il sera plus simple de faire ceci:
[b]HTML:[/b]
<body>
	<div id="container"><div id="container-bis">
		...
	</div></div><!-- fin de div#container -->
</body>

[b]CSS:[/b]
div#container {
	position: relative;
	min-height: 100%;
}
div#container-bis {
	overflow: hidden; /* évite le dépassement des flottants */
	padding: 10px 0 50x 0; /* retraits (dont un espace blanc pour le positionnement du pied de page
		et évite la fusion des marges entre div#container et ses descendants */
}

Et voilà.

Au passage, pourquoi ce min-height: 99%, au lieu de min-height: 100%?
Et aussi: la feuille de styles pour IE6 me semble bien volumineuse. S'agit-il uniquement de correctifs, ou bien est-ce une feuille de style complète? Mieux vaut travailler uniquement avec des correctifs.
Han ! Nickel ! Merci beaucoup Florent ! Smiley ravi

Un [Résolu] s'impose !

J'informe par contre que seul la suppression du overflow:auto est adéquate, car en changeant le min-height en height, des bugs apparaissent sur les pages plus grande que l'écran (ne me demandez pas pourquoi Smiley lol ).

Pour le min-height:99% au lieu du 100%, pareil question d'affichage un peu bizar. Sur mon écran avec 100%, j'ai obligatoirement une scroll barre qui apparait pour 1% vide du site. Donc j'ai bidouillé avec le 99% pour ne pas avoir de Scroll barre si non nécessaire.

Au sujet de la css pour ie, OK, je vais dépouiller tout ca !

Encore merci pour l'aide Smiley cligne !!