Bonjour,

après plusieurs jours de lecture et de documentation, je me suis enfin mis à ma première maquette.

Je vous explique rapidement ce que je souhaite obtenir: il s'agit d'une page découpée classiquement en trois parties: en-tête, corps et pied de page, contenue dans un conteneur qui doit remplir toute la page. L'en-tête a une hauteur fixe et est suceptible d'être divisée en deux parties; le pied de page a également une hauteur fixe et se retrouve en fond de page, tout en bas, puisque le conteneur remplit la page. Le corps doit donc contenir tout le reste, et si le contenu est trop grand un ascenceur apparait uniquement pour cette partie. J'espere être assez clair Smiley confus

Voilà ce que j'obtiens en l'état actuel des choses:

http://www.vikchill.fr/maquette.htm
http://www.vikchill.fr/maquette2.htm (en remplissant un peu dans l'espoir de faire apparaitre un overflow)

et le code:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
	<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
	<link rel="stylesheet" href="styles.css"  type="text/css" media="all" />
	<title>Maquette</title>
	
<style type="text/css">

html
{
	height: 100%; 
}
body 
{
	padding: 0;
	margin: 0;
	font-size: 0.8em;
	font-family: Tahoma, Verdana, sans-serif;
	background-color: pink;
	height: 100%;
}

#conteneur
{
	background-color: maroon;
	position: relative;
	min-height: 100%;
	height: auto;
	width: 100%;
}

#header
{
	background-color: navy;	
	height: 100px;
}

#gauche
{
	width: 190px;
	background-color: blue;
	float: left;
	padding: 5px;
}

#droite
{
	background-color: red;
	margin-left: 200px;
	padding: 5px;
}

#mainframe
{
	background-color: green;
	border: black solid 1px; 
	overflow: auto;
	padding: 5px;
}

#footer
{
	background-color: black;
	text-align: center;
	color: white;
	height: 50px;
	position: absolute;
	bottom: 0;
	width: 100%;
}

</style>

</head>

<body>
	<div id="conteneur">

		<div id="header">
			<div id="gauche">
				<strong>Header gauche:</strong> Ici on mets le message de bienvenue, la date/heure et un bouton pour se déloguer. 
			</div>
			
			<div id="droite">
				<strong>Header droite:</strong> les deux menus. La partie haute n'est coupée en deux qu'après l'identification. remplissage<br />remplissage<br />remplissage<br />
			</div> 
			
			
		</div>

		<div id="mainframe">
				La fenêtre principale.<br />C'est ici que ça se passe, il faut d'ailleurs ajouter un tableau.<br />
				Remplissage<br /> Remplissage<br /> Remplissage<br /> Remplissage<br /> Remplissage<br /> Remplissage<br />Remplissage<br /> Remplissage<br /> Remplissage<br /> Remplissage<br /> Remplissage<br /> Remplissage<br />
 		</div>

		<div id="footer">
			admin©Vikchill.fr
		</div>

	</div>
</body>
</html>


Comme vous pouvez le voir, c'est pas tout à fait ce que je souhaite... sans même savoir si c'est forcément réalisable. Pour commencer, le résultat est plus fidèle est sympa sous FF que sous IE, mais jusque là tout est normal. Mes plus grandes difficultés sont d'avoir cette fameuse partie centrale qui scroll, sans que la fenêtre scrolle si possible, pour ne pas avoir deux barres de défilement côte à côte.

Voilà, je m'arrête là pour le moment, toute aide est la bienvenue, tout comme les critiques/conseils pour m'éviter des fautes courantes et me permettre d'être le plus facilement "portable" d'un explorateur à l'autre.

Et si la réponse se trouve ici dans un document que j'aurais raté, mes excuses, mais quand on débute c'est pas toujours évident de trouver la solution, et pourtant j'ai beaucoup beaucoup lu. Et au passage merci à tous, parce qu'ici j'ai vraiment beaucoup appris, même si ça ne se voit pas forcément dans le css Smiley sweatdrop
Modifié par Vikchill (21 Jul 2006 - 01:03)
salut,

essaies de mettre un height au div #mainframe, sinon le nav ne pourra pas savoir lorsqu'il devra inclure l'ascenseur.
Mon problème c'est que je ne connais pas cette hauteur au départ puisque j'aimerais qu'elle aille de la fin de l'en-tête, qui a une hauteur définie, au debut du pied de page, qui a aussi une hauteur définie.
comme tu n'as reçu aucune réponse pour une solution en css regarde toujours du côté de javascript pour définir la hauteur de ton mainframe en fonction de la résolution de l'internaute.

les instructions qui peuvent aider :

- pour ie -> document.documentElement.offsetHeight

- le reste du monde -> window.innerHeight

ps : lorsque tu utilises l'instruction float prévoit une instruction de ce type pour réinitialiser la mise en page (dans ton cas à mettre dans la définition des styles de "mainframe") :

clear:both;
Bonjour,

tthierry a écrit :
comme tu n'as reçu aucune réponse pour une solution en css


Il traîne sur ce forum quelques interventions expliquant pourquoi une page Web dans un navigateur n'est pas un vignette WAP, ou une page Minitel, et pourquoi elle doit pas être enfermée dans une hauteur donnée.

Il n'y aura donc pas de réponse CSS.

Heureusement, on peut désactiver js facilement Smiley cligne
Salut,

Vikchill a écrit :

il s'agit d'une page découpée classiquement en trois parties: en-tête, corps et pied de page


C'est sans doute là dessus qu'il faudrait travailler. Je parle bien sur de rendu visuel et non de l'ordre de déclaration dans le document html lui même.
clb56 a écrit :
Salut,



C'est sans doute là dessus qu'il faudrait travailler. Je parle bien sur de rendu visuel et non de l'ordre de déclaration dans le document html lui même.


J'ai du mal à te suivre :s

Sinon merci pour vos réponses, mais si la solution passe par du js je préfère effectivement passer du fluide au fixe.
Salut,
Vikchill a écrit :

J'ai du mal à te suivre :s


Oui moi aussi quelques fois...

Je pensais à quelque chose comme ça :
http://prettysnco.freezee.org

La partie scrollable prend au minimum 100% de la hauteur.

Les éléments auxquels on veut éviter le scroll et que l'on associe à l'idée de header sont placés à droite et à gauche de la partie scrollable.
Idem pour les éléments que l'on associe à l'idée de footer.

Pour le reste la technique pour émuler la position fixed avec IE est assez connue. Je l'applique dans une feuille de style "pour_IE.css" dont le link est placé dans un commentaire conditionnel. Ce qui permet d'utiliser la vraie position:fixed; pour les autres navigateurs.

PS : mon petit jeu css est encore en cours de test.

<edit>
Ah oui j'ai oublié de dire, ma source d'inspiration pour ce type de rendu c'est le carnet web de Karl dubost :
http://www.la-grange.net
</edit>
Modifié par clb56 (24 Jul 2006 - 02:51)
Avant tout, merci à tous, on progresse vite grâce à vous! Smiley biggrin Néanmoins j'aurais encore besoin de votre aide si vous voulez bien.

Après des très longues heures de lecture, de conseils, de recherches et encore plus de doutes, je suis arrivé là (avec une grosse inspiration de http://www.cssplay.co.uk/layouts/body4.html):

- en-tête simple, corps scrollable, pied au bas de l'écran: http://www.vikchill.fr/test/h1m1f.htm
- en-tête double et scrollable à droite, , corps scrollable, pied au bas de l'écran: http://www.vikchill.fr/test/h2m1f.htm
- en-tête double, corps double et scrollable à droite, pied au bas de l'écran: http://www.vikchill.fr/test/h1m1f.htm

La feuille de styles qui va avec: http://www.vikchill.fr/test/styles.css

Vu les lignes de code que ça représente je vous laisse la liberté d'aller voir plutôt que de vous l'imposer Smiley langue Si le rendu correspond assez bien à ce que je voulais obtenir (occupation totale de la page, barre de défilement en fonction de la résolution choisie par l'utilisateur, etc...), je ne suis pas complètement satisafait de la façon de faire, ça fait trop "bidouille", chaque id ayant un petit complément "spécial IE". De plus, malgré ce complément, il reste un soucis avec l'en-tête droit, que je n'arrive pas à rendre scrollable sous IE comme pour Mozilla et Opera. Mais le livre de Raphaël viens de m'être livré et peut-être y trouverais-je la solution Smiley biggrin

Que pensez-vous de cette solution? Y a-t-il des pièges qui me sont inconnus que je dois éviter en corrigeant mon CSS? Je l'ai testé sous IE (quelle plaie Smiley bawling ), Mozilla et Opera, c'est nickel sauf sous IE forcément où ça reste acceptable, si des gens veulent bien me dire ce que ça donne sous un autre navigateur?

Je ne suis pas sûr d'écrire dans le bon forum, si tel n'est pas le cas je m'excuse, et qu'on n'hésite pas à me téléporter Smiley cligne
Modifié par Vikchill (25 Jul 2006 - 09:53)