J'ai ces divs imbriqués et j'ai besoin que le conteneur principal se dilate (en hauteur) pour accueillir les DIV à l'intérieur
<!-- head -->
...
<!-- /head -->
<body class="main">
<div id="container">
<div id="header">
<!--series of divs in here, graphic banner etc. -->
</div>
<div id="main_content"> <!-- this DIV _should_ stretch to accommodate inner divs -->
<div id="items_list" class="items_list ui-sortable">
<div id="item_35" class="item_details">
</div>
<div id="item_36" class="item_details">
</div>
<div id="item_37" class="item_details">
</div>
<!-- this list of DIVs "item_xx" goes on for a while
each one representing a photo with name, caption etcetc -->
</div>
</div>
<br class="clear"/>
<div id="footer">
</div>
</body>
</html>
CSS est la suivante:
* {
padding: 0;
margin: 0;
}
.main {
font: 100% Verdana, Arial, Helvetica, sans-serif;
background: #4c5462;
margin: 0;
padding: 0;
text-align: center;
color: #000000;
}
.main #container {
height: auto;
width: 46em;
background: #4c5462;
margin: 0 auto;
border: 0px solid #000000;
text-align: left;
}
.main #main_content {
padding: 5px;
margin: 0px;
}
#items_list {
width: 400px;
float: left;
}
.items_list {
width: 400px;
float: left;
}
.item_details {
margin-top: 3px;
margin-bottom: 3px;
padding: 3px;
float: left;
border-bottom: 0.5px solid blue;
}
Le problème que j'ai, c'est qu'il #main_content
ne s'étire pas pour accueillir toutes les divisions internes, avec pour résultat qu'elles continuent à aller à l'arrière-plan.
Comment puis-je résoudre ce problème en considérant le scénario ci-dessus?
<strong>Edited</strong>$Reason_for_revising_question...
Vous devrez peut-être changer le titre de la question pour refléter les changements s'il y a un changement majeur ou un ajout dans son objectif. =)div
tag avecid='container'
. Cela pourrait causer des problèmes..clear
classe. L'avez-vous oublié ou est-ce dans votre code d'origine? La.clear
classe à ce sujetbr
est très importante, comme @jennyfofenny le mentionne dans sa réponse.Réponses:
Vous devez forcer un
clear:both
avant que le#main_content
div ne soit fermé. Je déplacerais probablement le<br class="clear" />;
dans le#main_content
div et définirais le CSS comme:Mise à jour: Cette question reçoit toujours une bonne quantité de trafic, donc je voulais mettre à jour la réponse avec une alternative moderne en utilisant un nouveau mode de mise en page en CSS3 appelé Boîtes flexibles ou Flexbox :
La plupart des navigateurs modernes prennent actuellement en charge les unités Flexbox et Viewport , mais si vous devez conserver la prise en charge des anciens navigateurs, assurez-vous de vérifier la compatibilité pour la version de navigateur spécifique.
la source
Essaye ça:
overflow: auto;
Cela a fonctionné pour mon problème ..
la source
display: block;
avec elleajoutez ce qui suit:
à votre div principale. Élimine le besoin d'extra
<br />
pour le clair.la source
comme alternative, vous pouvez également essayer ceci qui peut être utile dans certaines situations
jsFiddle
la source
Je voudrais juste utiliser
dans votre div. Oui, je sais que je suis un peu en retard, mais je pensais que cela pourrait aider quelqu'un comme cela m'aurait aidé s'il était ici.
la source
height: auto;
entraîne le déplacement de tous les éléments ci-dessous vers le haut. Avec cette propriété sur ma div de contenu principale, le pied de page de ma page se déplace vers le haut afin qu'il touche l'en-tête et chevauche ma div de contenu.Les éléments suivants devraient fonctionner:
la source
Manière très simple
Sur le parent DIV:
height: 100%;
Ce travail pour moi à chaque fois
la source
Utilisez la balise span avec
display:inline-block
css attaché. Vous pouvez ensuite utiliser CSS et le manipuler comme un div de nombreuses façons, mais si vous n'incluez pas dewidth
ouheight
il se développe et se rétracte en fonction de son contenu.J'espère que cela pourra aider.
la source
div
(au lieu d'unspan
) maisdisplay: inline-block
j'ai quand même travaillé dans mon cas (Chrome).En règle générale, je pense que cela peut être résolu en forçant une
clear:both
règle sur le dernier élément enfant du#items_list
.Vous pouvez soit utiliser:
Ou, si vous utilisez un langage dynamique, ajoutez une classe supplémentaire au dernier élément généré dans la boucle qui crée la liste elle-même, de sorte que vous vous retrouvez avec quelque chose dans votre html comme:
et css
la source
Ce problème se produit lorsque les éléments enfants d'une division parent flottent. Voici la dernière solution du problème:
Dans votre fichier CSS, écrivez la classe suivante appelée .clearfix avec le pseudo sélecteur : après
Ensuite, dans votre code HTML, ajoutez la classe .clearfix à votre div parent. Par exemple:
Cela devrait toujours fonctionner. Vous pouvez appeler le nom de classe en tant que .group au lieu de .clearfix , car cela rendra le code plus sémantique. Notez qu'il n'est pas nécessaire d'ajouter le point ou même un espace dans la valeur de Contenu entre les doubles guillemets "". Aussi, débordement: auto; peut résoudre le problème, mais cela provoque d'autres problèmes comme l'affichage de la barre de défilement et n'est pas recommandé.
Source: Blog de Lisa Catalano et Chris Coyier
la source
ajouter une propriété float à la
#main_content
div - elle se développera ensuite pour contenir son contenu flottantla source
Avant de faire quoi que ce soit, vérifiez les règles CSS avec:
Supprimez s'il en existe et n'en avez pas besoin.
la source
Les éléments flottants n'occupent pas l'espace à l'intérieur de l'élément parent, comme leur nom l'indique, ils flottent! Ainsi, si une hauteur n'est pas explicitement fournie à un élément ayant ses éléments enfants flottants, alors l'élément parent semblera rétrécir et sembler ne pas accepter les dimensions de l'élément enfant, même si ses données
overflow:hidden;
peuvent ne pas apparaître à l'écran. Il existe plusieurs façons de résoudre ce problème:Insérer un autre élément sous l'élément taloché avec la
clear:both;
propriété ou l' utilisationclear:both;
sur:after
de l'élément flottant.Utilisez
display:inline-block;
ouflex-box
au lieu defloat
.la source
On dirait que ça marche
Il prend la taille d'écran au minimum et si le contenu se développe, il augmente.
la source
En CSS:
#clear_div{clear:both;}
Après la balise div du div intérieur, ajoutez ce nouveau div suivant
http://www.w3schools.com/cssref/pr_class_clear.asp : pour plus d'informations
la source
J'ai ajouté Bootstrap à un projet avec des
section
balises que j'avais définies à 100% de la hauteur de l'écran. Il a bien fonctionné jusqu'à ce que je fait le projet sensible, à quel point j'emprunté une partie de jennyfofenny « s réponse donc mon arrière-plan de section correspondait à l'arrière-plan du contenu lorsque la taille de l'écran changeait sur des écrans plus petits.Mon nouveau
section
CSS ressemble à ceci:Disons que vous avez une section d'une certaine couleur. En utilisant
min-height
, si la largeur de la section diminue en raison d'un écran plus petit, la hauteur de la section se développera, le contenu restera dans la section et votre arrière-plan restera la couleur souhaitée.la source
Avez-vous essayé la méthode traditionnelle? donner la hauteur du conteneur principal: auto
Je l'ai utilisé et cela a fonctionné la plupart du temps avec moi.
la source
J'exécute moi-même un projet - j'avais une table à l'intérieur d'une div qui débordait du fond de la div. Aucun des correctifs de hauteur que j'ai essayés n'a fonctionné, mais j'ai trouvé un correctif étrange pour cela, et c'est de mettre un paragraphe au bas de la div avec juste une période. Donnez ensuite un style à la "couleur" du texte pour qu'elle soit identique à l'arrière-plan du conteneur. A fonctionné à votre guise et aucun javascript requis. Un espace insécable ne fonctionnera pas - pas plus qu'une image transparente.
Apparemment, il avait juste besoin de voir qu'il y avait du contenu sous le tableau afin de l'étirer pour le contenir. Je me demande si cela fonctionnera pour quelqu'un d'autre.
C'est le genre de chose qui fait que les concepteurs ont recours à des mises en page basées sur des tableaux - le temps que j'ai passé à comprendre ces choses et à les rendre compatibles avec plusieurs navigateurs me rend fou.
la source
je l'ai essayé et ça marche
la source
Si vous utilisez jQuery UI, ils ont déjà une classe qui fonctionne juste un charme ajoutez un
<div>
en bas à l'intérieur du div que vous souhaitez développer avecheight:auto;
puis ajoutez un nom de classe ui-helper-clearfix ou utilisez cet attribut de style et ajoutez comme ci-dessous :ajoutez la classe jQuery UI à la division claire, pas la division que vous souhaitez développer.
la source
Je sais que c'est une sorte de vieux thread, cependant, cela peut être réalisé avec la
min-height
propriété CSS d'une manière propre, donc je vais laisser cela ici pour de futures références:J'ai fait un violon basé sur le code OP publié ici: http://jsfiddle.net/U5x4T/1/ , lorsque vous supprimez et ajoutez des div à l'intérieur, vous remarquerez comment le conteneur se dilate ou se réduit en taille
Les 2 seules choses dont vous avez besoin pour y parvenir, en plus du code OP sont:
* Débordement dans le conteneur principal (requis pour les div flottants)
* propriété css min-height, plus d'informations disponibles ici: http://www.w3schools.com/cssref/pr_dim_min-height.asp
la source
Affichage ajouté: en ligne avec le div et il est devenu automatique (pas les éléments de défilement) lorsque le contenu de la hauteur est devenu plus grand que la hauteur de div définie de 200px
la source
Vous pouvez utiliser la disposition de grille CSS . Le support est assez large pour le moment: vérifiez-le sur caniuse .
Voici l' exemple sur jsfiddle. Exemple également avec des tonnes de texte.
Code HTML:
Code CSS:
la source
J'ai essayé à peu près toutes les suggestions énumérées ci-dessus et aucune n'a fonctionné. Cependant, "display: table" a fait l'affaire pour moi.
la source
Pas besoin d'utiliser beaucoup de CSS, utilisez simplement le bootstrap, puis utilisez:
pour le div qui doit être rempli.
Vous pouvez obtenir le bootstrap d'ici
la source