28173 sujets

CSS et mise en forme, CSS3

Bonjour,

Pour commencer, désolé pour le titre, dur dur de résumer le soucis en quelques mots.
Je souhaite mettre en place une mise en page avec un fond fixe (composé de plusieurs div) qui occupe 100% de la hauteur de la page, et avoir une zone de contenu de textes qui, quand elle dépasse la hauteur de la page, n'étire pas ni ne dépasse du fond. Bon je sais c'est un peu embrouillé. Voilà un petit schéma qui va peut être plus explicite:
upload/3196-exemple.jpg

La nature du fond de page (avec une bordure et composé de plusieurs éléments qui se positionnent selon la taille d'affichage de la fenêtre), font que j'ai du utiliser plusieurs calques imbriqués ce qui n'est pas top mais je verrais plus tard pour améliorer ça.

Pour tout ce qui concerne le fond à 100% en hauteur, y'a pas de soucis, mon seul problème est celui de la zone de contenu qui ne doit pas s'agrandir plus que la hauteur du fond. Voilà ce qu'il se passe actuellement avec FF quand le contenu est plus long que la hauteur de la page:
upload/3196-exempleff.jpg

Avec IE 6 ça donne ça:
upload/3196-exempleie.jpg

Les deux résultats ne me conviennent pas, le fond doit avoir comme hauteur la hauteur de la zone de navigation, ni plus ni moins... et ce qui dépasse doit pouvoir être scrollé indépendamment du reste, autrement dit, on doit toujours avoir le cadre noir périphérique à l'écran dans son intégralité.

Voilà le code que j'utilise:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
	   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
	<title>title</title>
	<link rel="icon" type="image/png" href="./includes/medias/favicon.png" />
	<link rel="stylesheet" type="text/css" href="./includes/styles/global.css" />
	<meta name="description" content="" />
	<meta name="keywords" content="" />
	<script type="text/javascript" src="./includes/javascript/pngfixall.js"></script>
</head>
<body>

	<div id="main1">
		<div id="main2">
			<div id="main3">
				<div id="global">
					<div id="left">
						<img src="./includes/medias/logo.png" alt="Logo" />
					</div>
					<div id="right">
					test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />test<br />
					</div>
				</div>
			</div>
		</div>
	</div>
</body>
</html>



* {
	margin: 0;
	padding: 0;
	border: 0;
}

html {
	height: 100%;
}

body {
	height: 100%;
	background-color: black;
	color: white;
	text-align: center;
}

div#main1 {
	height: 100%;
	min-height: 100%;
	border-left: 15px solid black;	
	border-right: 15px solid black;	
	background-image:url(../medias/bg_gradient_sky.jpg);
	background-repeat:repeat-x;
	background-position: top left;
}

div#main2 {
	height: 100%;
	min-height: 100%;
	background-image:url(../medias/bg_stars.png);
	background-repeat: no-repeat;
	background-position: top;
}

div#main3 {
	height: 100%;
	min-height: 100%;
	background-image:url(../medias/bg_bottom.gif);
	background-repeat:repeat-x;
	background-position: bottom;
}

div#global {
	width: 680px;
	margin: 0 auto;
	height: 100%;
	min-height: 100%;	
}

div#left {
	width: 200px;
	padding-top: 50px;
	float: left;
}

div#right {
	height: 100%;
	min-height: 100%;	
	width: 406px;
	float: left;
	background-image:url(../medias/bg_content.png);
	background-repeat:no-repeat;
	background-position: top-left;
}


Uniquement le div #right doit pouvoir défiler quand on utilise l'ascenseur.

Quelqu'un aurait une petite idée?

Merci de votre aide Smiley smile
Modifié par SuD (14 Aug 2007 - 19:44)
Je me permets de remonter un peu mon sujet, faut croire que poster un jour férié était une mauvaise idée.
Si mon problème n'est pas clair, n'hésitez pas à le signaler !

Merci Smiley smile
Tu défini un div conteneur, une taille a celui ci, une hauteur surtout puis tu mets sur ce conteneur

overflow:hidden

Y'en a quand meme qui bossent aujourd'hui !!
Voila Smiley cligne
Bonjour,

Euh, si j'ai bien compris overflow: auto sur div#right, le hidden provoque "coupe" le contenu non?
ghost a écrit :
Bonjour,

Euh, si j'ai bien compris overflow: auto sur div#right, le hidden provoque "coupe" le contenu non?


<edit> par contre cela ne placera pas une bande noire horizontale en pied de page !!</edit>

Tiens, je me cite, j'aurais pas du bosser aujourd'hui moi !! Smiley biggol
Modifié par ghost (28 May 2007 - 13:36)
Bonjour,

C'est un peu tard, mais :

- body et html en height: 100% ;
- div conteneur global en min-height: 100%, avec des bordures latérales mais pas verticales et une image de fond fixe (background-attachment: fixed;) ;
- deux blocs décoratifs (div vides par exemple) pour dessiner la bordure supérieure et la bordure inférieure, à placer en positionnement fixe (position: fixed) ;
- dégrader le positionnement fixe en positionnement statique ou absolu pour IE6.

On aura quelques menu problèmes d'accessibilité (enfin, un seul à vue de nez), mais de toute façon à partir du moment où on s'éloigne du fonctionnement standard du média screen avec barre de défilement du document, on aura forcément des problèmes d'accessibilité et/ou d'ergonomie, les agents utilisateurs (outils, aides techniques) n'étant généralement pas prévus pour gérer la bonne exploitation de ces cas de figure.
Modifié par Florent V. (28 May 2007 - 14:22)