[CSS] Problème de footer sous un div avec du contenu fixe/variable

Problème de footer sous un div avec du contenu fixe/variable [CSS] - HTML/CSS - Programmation

Marsh Posté le 13-07-2008 à 14:11:57    

Bonjour,
 
J'ai un site dont le contenu est dans un div avec une hauteur en auto.
 
Ce que je veux :

Code :
  1. +---------------------------+
  2. |                           |  <- Header + Menu du haut en position absolue
  3. +---------------------------+
  4. |    |                      |
  5. |    |                      |
  6. |    |                      |
  7. |    |                      |  <- Contenu Principal en position absolue mais hauteur : auto
  8. |    |                      |  <-(à gauche : menu en position absolue)
  9. |    |                      |
  10. |    |                      |
  11. |    |                      |
  12. +---------------------------+
  13. |                           |  <- Footer / Pied de Page
  14. +---------------------------+


Ce que j'ai :

Code :
  1. +---------------------------+
  2. |                           |  <- Header + Menu du haut en position absolue + Footer par dessus le tout
  3. +---------------------------+
  4. |    |                      |
  5. |    |                      |
  6. |    |                      |
  7. |    |                      |  <- Contenu Principal en position absolue mais hauteur : auto
  8. |    |                      |  <-(à gauche : menu en position absolue)
  9. |    |                      |
  10. |    |                      |
  11. |    |                      |
  12. +---------------------------+


Les éléments récurrents (bannière du haut + menu du haut + menu sur le côté gauche) sont placés en position:absolute; dans ce div
 
le contenu principal est aussi placé en position absolute mais avec une hauteur variable (il est décalé vers le bas et la droite pour se placer en dessous des menu du dessus et de la gauche).
 
Le pied de page vient en dessous du div principal en position:relative; mais j'ai l'impression que la hauteur du grand div n'est pas modifiée en fonction de la hauteur du contenu principal.
 
Résultat : le pied de page est placé tout en haut (il couvre la bannière). Si je met une hauteur fixe (height:1600px) sur le div principal (all), le pied de page se retrouve en dessous de cette taille mais ça ne m'arrange pas du tout.
 
Voilà en gros le CSS :

Code :
  1. #all {
  2. position:relative;
  3. text-align:center;
  4. margin-left:auto;
  5. margin-right:auto;
  6. width:1024px;
  7. height:auto;
  8. }
  9. #contenu-principal {
  10. color: #000;
  11. position:absolute;
  12. left:148px;
  13. top:150px;
  14. width:858px;
  15. height:auto;
  16. padding:6px;
  17. }
  18. #footer {
  19. position:relative;
  20. text-align:center;
  21. margin-left:auto;
  22. margin-right:auto;
  23. width:1024px;
  24. height:auto;
  25. }


Message édité par PacoDL le 13-07-2008 à 23:40:12
Reply

Marsh Posté le 13-07-2008 à 14:11:57   

Reply

Marsh Posté le 13-07-2008 à 20:24:38    

essaie en mettant un div en bas de ton bloc principal genre
 
dans ton CSS :

Code :
  1. #spacer {
  2. clear:both;
  3. }


et en bas de ton bloc principal

Code :
  1. <div id="spacer">&nbsp;</div>

Reply

Marsh Posté le 13-07-2008 à 21:17:14    

Ca ne marche pas, le problème semble venir du fait que la hauteur de mon bloc principal ne change pas si je met des éléments positionné en absolute à l'intérieur.
 
Ils le sont tous et il y a seulement le contenu principal dont la hauteur peut changer en fonction de la longueur du texte. Le bloc principal doit donc avoir comme hauteur minimale celle du menu gauche en dessous de la banniere et en maximale celle du bloc de contenu principal.
 
Vu le positionnement (relatif) de mon pied de page, je dirais que la hauteur de mon div est de 0 à cause du positionnement absolu des blocs à l'intérieur, comment remédier à ça ? Est-ce que je dois changer le positionnement absolu en relatif ?
 
EDIT Info supplémentaire : il n'y a pas d'éléments float dans ma page, c'est surement pour cela que le space ne fonctionne pas, si ?


Message édité par PacoDL le 13-07-2008 à 23:20:32
Reply

Marsh Posté le 14-07-2008 à 17:29:11    

nononoono....
Absolute = pas de flux.
Reprend ta structure en utilisant le flux, pour ce que tu veux faire en plus c'est tout a fait convenable.
div.header
div.content
..div.menu (float:left)
..div.page (float:left)
div.footer


---------------
Studio CréeAll
Reply

Marsh Posté le 15-07-2008 à 06:10:46    

euh les float sortent du flux aussi hein :whistle:


---------------
« The enemy is the gramophone mind, whether or not one agrees with the record that is being played at the moment. » — George Orwell
Reply

Marsh Posté le 15-07-2008 à 14:03:12    

Pour la solution de Lactique, apparement, en faisant ce que bricocoman proposait (le spacer), ça devrait marcher.
 
Mais cela me ferait tout refaire en float (j'ai 150 éléments à redéfinir...), je vais y réfléchir.
 
Pour le moment, j'ai trouver une solution peut-être pas très sexy : je met mon contenu principal en relative, des padding-left et padding top pour le placer et un height en auto. Ca force le div principal à se redimensionner (il est aussi en height:auto).
 
Pour éviter que le pied de page se retrouve sur le menu de gauche (si le contenu principal n'est pas plus grand que lui), j'applique un min-height sur le div principal.
 
Que pensez-vous de cette méthode ? ça me donne le résultat voulu mais j'ai le sentiment d'avoir salopé mon affaire :D

Reply

Marsh Posté le 15-07-2008 à 18:51:23    

bah j en pense que c est degueu, la solution de lactique etant sans conteste la meilleure
je le rectifiais juste sur la question du flux


---------------
« The enemy is the gramophone mind, whether or not one agrees with the record that is being played at the moment. » — George Orwell
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed