2013-07-19 9 views
8

So habe ich drei divs in einem div.Machen Sie Child divs erweitern, um Eltern divs Breite zu füllen

Ich möchte, dass die untergeordneten divs die Breite des übergeordneten Elements ausfüllen (die kombinierte Breite der untergeordneten Elemente sollte das übergeordnete Element sein). Das passiert jedoch nicht, ich komme zu kurz. Ich denke, das liegt daran, dass die Child-Divs die Breite basierend auf ihrem Inhalt einstellen.

Wie erreiche ich, was ich will?

CSS-

.child { 
    background: white; 
    color: #a7a9ac; 
    cursor: pointer; 
    font-size: 15px; 
    border-right: 1px; 
    border-top: 0; 
    border-bottom: 0; 
    border-left: 0; 
    border-style: solid; 
    border-color: @faded-grey; 
    padding-right: 10px; 
    margin: 0 auto; 
    height: 100%; 
} 

.parent { 
    border-top: 1px; 
    border-left: 0; 
    border-bottom: 1; 
    border-style: solid; 
    border-color: @faded-grey; 
    border-right: 0; 
    width: 100%; 
    margin-right: 0px; 
    height: 80px; 

} 
+0

Könnten Sie die CSS schreiben, die Sie verwenden? – cr0atIAN

+0

Es gibt viele Möglichkeiten, aber es hängt davon ab, was Sie wollen. Möchten Sie, dass das letzte _Child-Div den verbleibenden Speicherplatz ausfüllt, nachdem der Inhalt die Breite bestimmt? Oder möchten Sie, dass sie gleichmäßig verteilt sind, dh über Breite: 33%? –

+0

set CSS, versuchte Breite: 33%, aber es setzt die Divs über einander – praks5432

Antwort

8

Wenn Sie wissen, dass es immer drei Kinder sein wird, können Sie einfach:

.parent > .child { 
    float: left; 
    width: 33%; 
} 

.parent { 
    overflow: auto; /*or whatever float wrapping technique you want to use*/ 
} 

Wenn Sie nicht wissen, wie viele Kinder da sind, müssen Sie benutze CSS-Tabellen, flexbox oder kombiniere Inline-Blöcke mit text-align: justify.

8

Sie können diese drei Eigenschaften in die .child CSS-Regel hinzufügen:

width:33%; 
float:left;  
box-sizing: border-box; 

Die letzte Zeile es sicher macht, wird auch funktionieren, wenn Sie Grenzen hinzufügen, Polsterung und Marge auf die Boxen.

ONLINE DEMO

Ps: nicht direkt, sondern es ist auch ein Fehler in der Grenz Unterseite für Eltern, oben in Geige korrigiert. Wenn Sie nicht den Wert 0 verwenden müssen Sie Einheit angeben:

border-bottom:1px; 
+0

'Box-Sizing: Border-Box' ist Magie! Vielen Dank. –

+1

Tolle Soße! Bei gebührendem Respekt für andere Antworten denke ich, dass dies die beste Antwort ist. – Phil

+0

Machen Sie die mittlere Breite 34%, ansonsten füllen Sie nur 99% des Behälters. – Sami

6

ich brauchte für meine Lösung eine Varianz in der Anzahl der Elemente zur Aufnahme für sie vollständig reagieren zu.

Ich entdeckte eine interessante Lösung dafür. Es zeigt im Wesentlichen wie eine Tabelle. Jedes Element Aktien zur Verfügung stehende Breite, und das funktioniert auch für Bilder sehr gut: http://jsfiddle.net/8Qa72/6/

.table { 
    display: table; 
    width: 400px; 
} 

.table .row { 
    display: table-row; 
} 

.table .row .cell { 
    display: table-cell; 
    padding: 5px; 
} 

.table .row .cell .contents { 
    background: #444; 
    width: 100%; 
    height: 75px; 
} 
+1

Eine weitere interessante Lösung ist es, 'display: inline-block' zu verwenden, es rettet manchmal Leben ;-) –

+0

Wie? Die verfügbare Breite des übergeordneten Elements wird nicht gleichmäßig auf die untergeordneten Elemente aufgeteilt. Kannst du es mir in einem JSFiddle zeigen? –

+0

Sie haben Recht, müssen Sie einen Prozentsatz des Eltern-Div für jedes Kind angeben, wenn Sie etwas ähnliches möchten Ich versuchte eine "dynamische" Annäherung und eine "feste" Annäherung http://jsfiddle.net/dBeNv/40/ –

Verwandte Themen