Partage
  • Partager sur Facebook
  • Partager sur Twitter

[CSS] Des divs qui prenent toute la hauteur

ni plus, ni moins ...

    24 juin 2006 à 16:47:50

    Bonjour les zéros.

    Voilà, j'ai un petit problème en CSS. J'ai un cadre exterieur dont la hauteur pourrait être n'importe laquelle (ici, elle est définie en pourcents). Dans ce cadre, j'ai trois autres cadres, les uns après les autres. Le premier et le dernier ont une hauteur fixe (en pixels). je voudrais que celui du milieu s'étende juste assez pour que les trois cadres prennent toute la la place disponible, ni plus, ni moins.

    Voilà un code HTML épuré pour l'éxemple :
    <!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" >
            <head>
                    <title>Bienvenue sur mon site !</title>
                    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
                    <link rel="stylesheet" media="screen" type="text/css" title="Hauteur" href="hauteur.css" />
            </head>
            <body>
                    <div id="cadre">
                   
                            <div id="haut">
                                    haut
                            </div>
                           
                            <div id="milieu">
                                    milieu
                            </div>
                           
                            <div id="bas">
                                    bas
                            </div>
                           
                    </div>
            </body>
    </html>

    Donc comme je vous l'ai dis, 3 divs à l'interieur d'une seule.

    Et le CSS que j'ai essayé de faire :
    body
            {
            height: 500px;
            }

    #cadre
            {

            width: 80%;
            height: 80%;
            border: 5px solid black;
            overflow: auto;
            padding: 10px;
            }
           
     #haut
            {

            height: 50px;
            border: 3px solid blue;
            }
           
    #bas
            {

            height: 50px;
            border: 3px solid green;
            }

    #milieu
            {

            border: 3px solid red;
            }


    Donc comme je vous l'ai dis, la div principale à une taille aléatoitre (ici, qui dépend du corps qui pourrait avoir n'importe quelle taille). Elle contient 3 divs, la première et la dernière ont un taille fixe.

    Et là, je voudrais que celle du milieu s'étende juste assez pour que les trois divs prennent la place dispinnible, et ceux qu'il n'y aie aucun texte, ou qu'il y en aie beaucoup. (Attention, je veux qua ça soit physique, pas seulement qu'on en aie l'impression).

    Je l'ai exporté ici, pour vous donnez un exemple, avec un peu de "texte".


    Y a-t-il une solution à mon prblème ? merci d'avance.


    EDIT : je ne veux pas que ça soit le cadre qui bouge, mais bel et bien que ça soit le milieu qui s'adapte.
    • Partager sur Facebook
    • Partager sur Twitter
      24 juin 2006 à 18:56:33

      Je te proposes une solution plus ou moins bonne.

      html,body { height: 100%; }
      #cadre { height: 100% ; }


      A essayer...
      • Partager sur Facebook
      • Partager sur Twitter
        24 juin 2006 à 19:07:12

        Le seul problême, c'est que je veux que ça soit la div du milieu qui s'adapte, pas le cadre.
        • Partager sur Facebook
        • Partager sur Twitter
          26 juin 2006 à 14:11:09

          Hmmm tu mets un
          height:inherit;
          à ton div milieu ^^ je pense que ca devrait marché :)

          Edit : Apparement ca donne pas un résultat top non plus, je sais pas sinon ..
          • Partager sur Facebook
          • Partager sur Twitter
            26 juin 2006 à 14:31:03

            euh... j'ai pas très bien compris mais "margin: auto;" fait pas l'affaire?
            • Partager sur Facebook
            • Partager sur Twitter
              26 juin 2006 à 15:02:54

              aie, ça fait à peu près le même effet que 100%. Le problême, ce sont ces 2 divs avec une taille fixe. Sinon, il y a pas un moyen de fixer celle du bas en bas ?

              margin: auto; ne fait rien !
              • Partager sur Facebook
              • Partager sur Twitter
                26 juin 2006 à 22:28:56

                Une autre solution peut être serait de mettre :
                height:70%;

                a ton block milieu ... après je sais pas si ca donnera ce que tu voudra mais bon ...

                Ca ca marche mais si tu remplis pas trop, si tu comptes laisser comme ca :) (mais dans ce cas la, l'overflow ne sert a rien ...)

                Par contre, si tu compte mettre beaucoup de texte, le milieu s'adaptera et tu n'auras plus aucun problèmes :) (avec ton code actuel)

                Donc t'as 2 solutions :
                • Soit tu gardes l'overflow et tu remplis ton block, en gros ca donne ca (ton code actuel) :
                  Ton site
                • Soit ton overflow sert a rien, et la tu peux mettre un height de 70% a ton milieu :
                  Autre image


                Bon j'suis pas un pro, loin de la, et j'espère que c'est pas des grosses anneries que je dit la quand même ^^ mais j'ai essayé de t'aider :p

                • Partager sur Facebook
                • Partager sur Twitter
                  26 juin 2006 à 22:37:38

                  Merci ! Nen, c'est aps trop ce que je cherche, car la div principal pourrait avoir une autre taille, et il faudrait revoir la taille de celle du milieu. Sinon, ba je vais me débrouiller pour qu'il y ai toujours beaucoup de texte à l'interieur.


                  Merci quand même.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    26 juin 2006 à 23:01:24

                    jai peut-etre la solution a ton probleme(si je l'ai bien compris) dans ton fichier css :
                    #cadre
                            {

                            width: 80%;
                            height: auto;
                            border: 5px solid black;
                            overflow: none;
                            padding: 10px;

                    voila jespère que c'est ce qu'il te faut ;)
                    • Partager sur Facebook
                    • Partager sur Twitter
                      27 juin 2006 à 10:01:17

                      hum ... je ne veux pas que ça soit le cadre principal qui bouge, mais la div du milieu qui s'adapte ... merci quand-même !
                      • Partager sur Facebook
                      • Partager sur Twitter
                        27 juin 2006 à 14:18:59

                        si tu veut que ce soit la div du milieu qui s'adapte il ne faut pas mette l'overflow a la div principale mais a la div du milieu justement !! ;)
                        • Partager sur Facebook
                        • Partager sur Twitter

                        [CSS] Des divs qui prenent toute la hauteur

                        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                        • Editeur
                        • Markdown