faire des div à l'hauteur de développer avec son contenu
J'ai ces divs imbriqués et j'ai besoin de le conteneur principal de développer (en hauteur) pour accueillir les DIVs à l'intérieur de
<!-- 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 accomodate 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: est-ce
* {
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 que #main_content
n'est pas adapté pour accueillir tous à l'intérieur de la vrd, avec le résultat qu'ils continuent à aller à l'encontre de l'arrière-plan.
Comment puis-je résoudre ce problème?
- Les gars je vous remercie tous pour les réponses! la meilleure solution pour mon cas précis était de coder en dur une BR pour effacer les deux côtés (merci Jennyfofenny et aussi Ricebowl) de toute façon, d'autres solutions ont travaillé: mettre overflow:auto était ok, et flottant #main_content était aussi ok (bien que ir réduit la largeur de la div à la taille de l'enfant divs). Maintenant, étant un débutant je me demande: ces solutions présentent des inconvénients, ou je peux les utiliser indifféremment? (eg. peut-être que l'un d'eux ne fonctionne pas avec IE6, ou similaire...)
- si vous souhaitez développer votre question, cliquez sur le lien "modifier" (ci-dessous le texte actuel de la question), et d'ajouter le plus de questions. Convention suggère d'utiliser quelque chose comme
<strong>Edited</strong>$Reason_for_revising_question...
Vous devrez peut-être modifier la question du titre pour refléter les modifications s'il y a un grand changement ou ajout à son accent. =) - Vous aussi jamais fermé la
div
tag avecid='container'
. Que pourrait causer des problèmes. - vous aussi vous n'avez pas le CSS pour
.clear
classe. Avez-vous oubliez, ou est-il dans votre code d'origine? Le.clear
de classe cebr
est très important que @jennyfofenny mentionne dans sa réponse.
Vous devez vous connecter pour publier un commentaire.
Vous devez forcer un
clear:both
avant la#main_content
div est fermé. J'aurais probablement se déplacer à la<br class="clear" />;
dans le#main_content
div et définir le CSS à:Mise à jour: Cette question obtient toujours une bonne quantité de trafic, donc j'ai voulu mettre à jour la réponse à une alternative moderne à l'aide d'un nouveau mode de mise en CSS3 Flexibles des boîtes ou des Flexbox:
CSS:
HTML:
La plupart des navigateurs modernes supportent actuellement Flexbox et fenêtre d'affichage des unités de, mais si vous avez de maintenir le soutien pour les anciens navigateurs, assurez-vous de vérifier la compatibilité pour la version du navigateur.
Essayez ceci:
overflow: auto;
Travaillé pour mon problème..
display: block;
avec elleajouter les éléments suivants:
principale de votre div. Élimine le besoin pour le
<br />
pour l'effacer.height:1%;
comme une alternative, vous pouvez également essayer ce qui peut être utile dans certaines situations
jsFiddle
Je voudrais juste utiliser
dans votre div. Oui, je sais, je suis un peu en retard mais j'ai pensé que cela pourrait aider quelqu'un comme elle m'aurait aidée si elle était ici.
height: auto;
provoque tous les éléments ci-dessous pour déplacer vers le haut. Avec cette propriété sur mon div du contenu principal, le pied de page de ma page se déplace vers le haut de sorte qu'il touche l'en-tête et les chevauchements le contenu de mon div.Thw suivante devrait fonctionner:
Utiliser la balise span avec
display:inline-block
css attaché à elle. Vous pouvez ensuite utiliser le CSS et le manipuler comme un div dans beaucoup de façons, mais si vous n'incluez pas lewidth
ouheight
il se dilate et se rétracte en fonction de son contenu.Espère que ça aide.
div
(au lieu d'unspan
) maisdisplay: inline-block
toujours travaillé dans mon cas (Chrome).Généralement, je pense que cela peut être résolu en forçant un
clear:both
règle sur le dernier enfant de l'élément de la#items_list
.Vous pouvez soit utiliser:
Ou, si vous êtes en utilisant un langage dynamique, ajouter une classe supplémentaire pour le dernier élément généré quelle que soit la boucle crée la liste elle-même, si vous vous retrouvez avec quelque chose dans votre code html comme:
et css
Ce problème se pose lorsque les éléments Enfants d'un Div Parent sont flotté. Voici la Dernière Solution du problème:
Dans votre fichier CSS écrire la classe suivante appelé .clearfix avec le pseudo sélecteur de :après
Ensuite, dans votre code HTML, ajouter le .clearfix classe à votre Div parent. Par exemple:
Il doit travailler toujours. Vous pouvez appeler le nom de la classe comme .groupe au lieu de .clearfix , car elle rend le code plus sémantique.
Notez que, il n'est Pas nécessaire d'ajouter le point ou même un espace dans la valeur de Contenu entre les guillemets "". Aussi, overflow: auto; pourrait résoudre le problème, mais il provoque d'autres problèmes comme l'montrant la barre de défilement n'est pas recommandée.
Source: Blog de Lisa Catalano et Chris Coyier
ajouter un flotteur à la propriété
#main_content
div - il élargira à contenir ses flottait contenuAvant de faire quelque chose vérifier les règles css avec:
Supprimer si existent et n'ont pas besoin d'eux.
Flottait éléments n'occupent pas l'espace à l'intérieur de l'élément parent, Comme le nom le suggère, ils flottent! Ainsi, si la hauteur est explicitement pas fourni à un élément ayant ses éléments enfant flotté, puis l'élément parent apparaît à rétrécir & semblent ne pas accepter les dimensions de l'élément enfant, même si son
overflow:hidden;
ses enfants peuvent ne pas apparaître sur l'écran. Il ya plusieurs façons de traiter ce problème:Insérer un autre élément au-dessous de la flottait élément avec
clear:both;
des biens, ou de l'utilisationclear:both;
sur:after
de la flottait élément.Utilisation
display:inline-block;
ouflex-box
au lieu defloat
.Ressemble à ceci fonctionne
Il prend la taille d'écran minimum, et si le contenu s'étend, elle grandit.
Manière très simple
Sur la DIV parent:
height: 100%;
Ce travail pour moi à chaque fois
En CSS:
#clear_div{clear:both;}
Après la balise div de l'intérieur de la div ajouter cette nouvelle div suivants
http://www.w3schools.com/cssref/pr_class_clear.asp : pour plus d'informations
J'ai ajouté Bootstrap pour un projet avec
section
tags que j'avais fixé à 100% de la hauteur de l'écran. Il a bien fonctionné jusqu'à ce que j'ai fait le projet sensible, à laquelle j'ai emprunté une partie de jennyfofenny's réponse donc mon article de fond jumelés arrière-plan du contenu lorsque la taille de l'écran a changé sur les petits écrans.Mon nouveau
section
CSS ressemble à ceci:Disons que vous avez une section qui est d'une certaine couleur. En utilisant
min-height
, si la largeur de la section se rétrécit en raison d'un plus petit écran, la hauteur de la section s'élargir, le contenu restera au sein de la section, et de votre fond de séjour de la couleur désirée.Avez-vous essayé la méthode traditionnelle?
donner le conteneur principal height:auto
J'ai utilisé cela et il a travaillé la plupart du temps avec moi.
Je suis en cours d'exécution dans cette un projet moi - même, j'ai eu une table à l'intérieur d'une div qui s'écoulait hors du fond de la div. Aucun des hauteur de bugs j'ai essayé de travaillé, mais j'ai trouvé une drôle de solution pour elle, et qui est de mettre un paragraphe en bas de la div avec juste une période en elle. Ensuite, le style de la "couleur" du texte à être le même que le fond du récipient. Travaillé soigné que vous s'il vous plaît et pas de javascript requis. Un espace de non-rupture ne fera pas de travail ni une image transparente.
Apparemment, il a juste besoin de voir qu'il y a un peu de contenu en dessous de la table afin de l'étirer pour le contenir. Je me demande si cela va fonctionner pour quelqu'un d'autre.
C'est le genre de chose qui fait que les concepteurs de villégiature de table à base de maquettes, la quantité de temps que j'ai passé à comprendre ça et de le rendre compatible avec tous les navigateurs, me rend fou.
J'ai essayé et cela a fonctionné
Si vous utilisez jQuery UI, ils ont déjà une classe les œuvres seulement un charme
ajouter un
<div>
en bas à l'intérieur de la div que vous souhaitez développer avecheight:auto;
ensuite, ajoutez un nom de classe de l'interface utilisateur-helper-clearfix ou de l'utilisation de cet attribut de style et ajouter juste comme ci-dessous:
ajouter jQuery UI classe au clair div, pas la div vous souhaitez développer.
Je sais que c'est le genre de vieux thread, cependant, ceci peut être réalisé avec
min-height
propriété CSS de manière propre, je vais donc laisser ce ici pour de futures références:J'ai fait du violon basé sur l'OP posté code ici: http://jsfiddle.net/U5x4T/1/, comme vous le supprimer et ajouter des divs à l'intérieur, vous remarquerez comment le conteneur agrandit ou réduit la taille
Les 2 seules choses que vous besoin pour atteindre cet objectif, en plus de l'OP code est:
*Débordement dans le conteneur principal (obligatoire pour les divs flottantes)
*min-hauteur de la propriété css, plus d'infos disponibles ici: http://www.w3schools.com/cssref/pr_dim_min-height.asp
Ajouté display:inline à la div et il s'est auto ( pas le défilement des trucs ) lorsque la taille du contenu est devenu plus grand, puis l'ensemble div hauteur de 200px
Vous pouvez utiliser Grille CSS de Mise en page. Le soutien est assez large pour le moment: le vérifier sur caniuse.
Ici est la exemple sur jsfiddle. Aussi exemple avec des tonnes de texte genre de choses.
Code HTML:
Code CSS:
Pas besoin d'utiliser beaucoup de CSS, il suffit d'utiliser bootstrap, puis utiliser:
pour la div qui doit être rempli.
Vous pouvez obtenir de l'amorçage à partir d'ici