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?

17voto

Daniel Beltrami Punkte 655

Sehr einfacher Weg

Über die Muttergesellschaft DIV:

height: 100%;

Das funktioniert bei mir jedes Mal

15voto

Steerpike Punkte 16009

Das Folgende sollte funktionieren:

.main #main_content {
    padding: 5px;
    margin: 0px;
    overflow: auto;
    width: 100%; //for some explorer browsers to trigger hasLayout
}

11voto

Ifti Mahmud Punkte 834

Dieses Problem tritt auf, wenn die Child-Elemente eines Parent-Divs schwebend sind. Hier ist die Letzte Lösung des Problems:

Schreiben Sie in Ihre CSS-Datei die folgende Klasse namens .clearfix zusammen mit dem Pseudoselektor :after

.clearfix:after {
    content: "";
    display: table;
    clear: both;
}

Fügen Sie dann in Ihrem HTML die .clearfix Klasse zu Ihrer übergeordneten Div. Zum Beispiel:

<div class="clearfix">
    <div></div>
    <div></div>
</div>

Es sollte immer funktionieren. Sie können den Klassennamen aufrufen als .gruppe anstelle von .clearfix , da der Code dadurch aussagekräftiger wird. Beachten Sie, dass es nicht notwendig ist, den Punkt oder sogar ein Leerzeichen in den Wert von Inhalt zwischen den doppelten Anführungszeichen "". Auch, Überlauf: auto; könnte das Problem lösen, verursacht aber andere Probleme wie die Anzeige der Bildlaufleiste und wird nicht empfohlen.

Quelle: Blog von Lisa Catalano und Chris Coyier

9voto

dark marc Punkte 91

Verwenden Sie das span-Tag mit display:inline-block css angehängt. Sie können dann CSS verwenden und es wie ein div in vielerlei Hinsicht manipulieren, aber wenn Sie nicht ein width o height sie sich je nach Inhalt ausdehnt und zurückzieht.

Ich hoffe, das hilft.

6voto

onalbi Punkte 2315

Bevor Sie etwas tun, prüfen Sie die CSS-Regeln mit:

{ position:absolute }

Entfernen Sie sie, wenn sie vorhanden sind und nicht benötigt werden.

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