445 Stimmen

div's Höhe mit seinem Inhalt erweitern

Ich habe diese verschachtelten Divs und ich brauche den Hauptcontainer zu erweitern (in der Höhe), um die DIVs innerhalb unterzubringen

    <!-- 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 ist dies:

* {
    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;
}

Das Problem, das ich habe, ist, dass #main_content dehnt sich nicht aus, um alle inneren Divs unterzubringen, mit dem Ergebnis, dass sie sich immer wieder vom Hintergrund abheben.

Wie kann ich dieses Problem in Anbetracht des obigen Szenarios lösen?

0voto

Ich weiß, dass dieser Thread schon etwas älter ist, aber dies kann erreicht werden mit min-height CSS-Eigenschaft in einer sauberen Art und Weise, so werde ich dies hier für zukünftige Referenzen verlassen:

Ich habe eine Fiddle auf der Grundlage der OP gepostet Code hier: http://jsfiddle.net/U5x4T/1/ Wenn Sie Divs entfernen oder hinzufügen, werden Sie feststellen, wie sich der Container vergrößert oder verkleinert.

Die einzigen 2 Dinge, die Sie zusätzlich zum OP-Code benötigen, um dies zu erreichen, sind:

*Überlauf im Hauptcontainer (erforderlich für die schwebenden Divs)

*min-height css-Eigenschaft, weitere Informationen finden Sie hier: http://www.w3schools.com/cssref/pr_dim_min-height.asp

0voto

Jelle Punkte 1

Hinzufügen von display:inline zum div und es wuchs auto (nicht das Scroll-Zeug), wenn die Höhe des Inhalts größer wurde als die eingestellte div-Höhe von 200px

0voto

Sharikov Vladislav Punkte 6546

Sie können verwenden CSS-Raster-Layout . Die Unterstützung ist im Moment ziemlich breit gefächert: siehe unter caniuse .

Hier ist die Beispiel auf jsfiddle. Auch Beispiel mit Tonnen von Textmaterial.

HTML-Code:

<div class="container">
  <div class="header">
   Header
  </div>
  <div class="content">
   Content
  </div>
  <div class="footer">
   Footer
  </div>
</div>

CSS-Code:

html, body {
  width: 100%;
  height: 100%;
  margin: 0;
}

.container {
  width: 100%;
  height: 100%;

  display: grid;
  grid-template-rows: 100px auto 150px;
  grid-template-columns: auto;
}
// style stuff

-1voto

Thadeo Arlo Punkte 53

Keine Notwendigkeit, eine Menge von CSS zu verwenden, verwenden Sie einfach Bootstrap, dann verwenden:

class="container"

für das zu füllende Div.

Sie können Bootstrap von hier beziehen

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X