Page 1 sur 1

Hauteur: 100%...

Publié : 29 mars 2005, 09:46
par guilhem_mdg
Bonjour à tous,

J'ai le code simplifié suivant:

Code : Tout sélectionner

<div id="haut"></div>
<div id="milieu"></div>
<div id="bas"></div>
Je souhaiterais donner une hauteur fixe à "haut" et à "bas" tout en faisant en sorte que la hauteur de "milieu" change de façon à ce que les hauteurs de "haut" + "milieu" + "bas" fasse 100% de l'écran...

Vous avez compris il s'agit d'une page avec une bannière en haut et un pied de page en bas. Je souhaite avoir la bannière et le pied de page continuellement à l'écran sans que l'internaute ait à scroller vers le bas...

Est-ce possible ? Si oui, comment ?

Publié : 29 mars 2005, 11:54
par FF_Olivier
De tête, mais ça devrait être ça :

Code : Tout sélectionner

#haut { margin-top: 0px ; margin-bottom: auto ; height: 100px ; }
#milieu { margin-top: 100px ; margin-bottom: 150px ; height: auto ; }
#bas { margin-top: auto ; margin-bottom: 0px ; height: 150px ; }
Les hauteurs indiquées le sont évidemment à titre indicatif.
Si tu souhaites que haut et bas restent fixes à l'écran avec le contenu du milieu qui défile, alors il faut jouer avec des position: fixed et un overflow: auto.

Publié : 29 mars 2005, 11:56
par guilhem_mdg
Merci de ta réponse mais en fait dans ta solution le total (haut, milieu et bas) ne fait pas 100% de l'écran...

Publié : 29 mars 2005, 12:10
par FF_Olivier
Euh, tu m'expliques pourquoi ?
À partir du moment où margin-top du haut = 0 et margin-bottom du bas = 0, avec height variable pour le milieu, ça devrait automatiquement faire 100%.

Publié : 29 mars 2005, 12:15
par calimo
Pour ma part je mettrais #haut et #bas en position:fixed, avec une margin-top et une margin-bottom de 100px sur #milieu qui aura un height:100%.

En fait ça devrait même marcher en position:absolute du coup :wink:

Publié : 29 mars 2005, 13:01
par FF_Olivier
Et tout en fixed ?

Code : Tout sélectionner

#haut {
   position: fixed ;
   height: 100px ;
   width: 100% ;
   top: 0px ;
   right: 0px ;
   bottom: auto ;
   left: 0px ;
   margin: 0px ;
}
#milieu {
   position: fixed ;
   height: auto ;
   width: 100% ;
   top: 100px ;
   right: 0px ;
   bottom: 100px ;
   left: 0px ;
   margin: 0px ;
   overflow: auto ; /* pour que le contenu défile dans cette fenêtre */
}
#bas {
   position: fixed ;
   height: 100px ;
   width: 100% ;
   top: auto ;
   right: 0px ;
   bottom: 0px ;
   left: 0px ;
   margin: 0px ;
}

Publié : 29 mars 2005, 13:13
par guilhem_mdg
Cette dernière solution marche très bien chez moi. Merci beaucoup à vous... :-)
Vous pensez que IE l'affichera correctement ? :?

Publié : 29 mars 2005, 14:43
par nomade
Mais je crois qu'IE ne reconnaît pas le fixed, si ?

Publié : 29 mars 2005, 14:47
par calimo
Logiquement en remplaçant tous les fixed par absolute ça devrait pouvoir jouer... à moins qu'IE ne décide de faire des siennes avec les hauteurs, mais je ne pense pas vu que "top" et "bottom" sont fixés ici.

Rappel : IE ne supporte pas la position:fixed et interprète les hauteurs/largeurs un peu comme il veut (parfois comme des min-height/width ou des max-height/width)

Publié : 29 mars 2005, 15:38
par FF_Olivier
calimo a écrit :Rappel : IE ne supporte pas la position:fixed et interprète les hauteurs/largeurs un peu comme il veut (parfois comme des min-height/width ou des max-height/width)
Ahlala, donc ma solution, c'était trop simple pour être vrai :mrgreen:

PS: on devrait pouvoir chiffrer le surcoût financier supporté par la collectivité (employeurs, informaticiens, ...) que représente la somme des bidouilles et de temps perdu pour qu'une solution fonctionne à la fois à gauche et à droite :roll: ...

Publié : 29 mars 2005, 15:50
par guilhem_mdg
Oui, tu as raison... Avec MFF, pas de temps perdu donc économie d'argent... En plus, il est libre. :lol:

Publié : 29 mars 2005, 15:50
par guilhem_mdg
Oui, tu as raison... Avec MFF, pas de temps perdu donc économie d'argent... En plus, il est libre. :lol: