42 votes

Comment faire croître une div avec du contenu ?

En ce qui concerne le html, comment faire pour qu'un conteneur div grandisse avec le contenu au lieu de définir manuellement une largeur et une hauteur.

<div id="container">
  <div id="logo">
    <img src="someimage.png"/>
  </div>
</div>

Quelles que soient les dimensions du logo, le conteneur ne grandit pas avec lui :( Comment puis-je résoudre ce problème, ou est-il possible de le résoudre ?

45voto

stecb Points 7663

Si vous ne définissez pas de largeur et/ou de hauteur, l'élément div grandit en même temps que son contenu. Sauf si son contenu est défini comme absolu ! Si le contenu est défini comme flottant, vous devez définir le conteneur

overflow:hidden

afin de le laisser grandir !

1 votes

Très intéressant ! Pourquoi cela fonctionne-t-il ? Pouvez-vous fournir plus de documentation à ce sujet ?

13voto

tdammers Points 14202

Le comportement par défaut des divs est de remplir toute la largeur disponible. Il y a plusieurs façons d'y déroger :

  • fixer display: inline-block (non compatible avec IE)
  • le faire flotter (ce qui a pour effet secondaire de le faire flotter)
  • fixer display: inline (mais ce n'est presque jamais ce que vous voulez)
  • fixer position: absolute
  • coder en dur une largeur (pas de largeur dynamique cependant)

En dernier recours, envisagez le javascript.

5voto

molham556 Points 81

Utilisez la propriété css magique appelée "flex", elle est vraiment étonnante.

yourDiv{
display:flex;
}

Assurez-vous simplement que les enfants ne sont pas position : absolute car cela ne fonctionnera pas avec flex.

3 votes

Il faut plus d'informations... en l'état actuel de votre réponse, cela ne fonctionne pas avec les divs imbriquées de hauteur variable.

0 votes

Bien sûr que oui, je l'utilise tous les jours, à moins que les div ne soient en affichage absolu !

0 votes

Cela aurait pu être une information pratique à inclure dans votre réponse... donc, " besoin de plus d'informations... en l'état actuel de votre réponse, cela ne fonctionne pas... "

1voto

FrenkyB Points 177

Vous pouvez spécifier la largeur et la hauteur minimales et le DIV ajustera la largeur et la hauteur en fonction des changements de contenu (bien sûr, pas en dessous de la largeur/hauteur minimale).

Exemple de code de travail

Les propriétés css les plus importantes du code (DIV est éditable, il suffit donc de taper du texte pour qu'il s'agrandisse en largeur / hauteur) :

 min-height: 200px;
  min-width: 100px;

1 votes

Si le contenu est plus grand que la hauteur minimale, la propriété min-height n'a pas d'effet.

1voto

reda sewalm Points 11

Si vous avez utilisé float il empêche <div> pour grandir avec le contenu afin de pouvoir utiliser clear après float et cela fonctionnera.

<div class="clear-fix"></div>

.clear-fix{
   clear: both;
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X