Mehrere divs verteilt auf die Breite des Containers?

8

Mein Setup ist jetzt so etwas wie

%Vor%

Ссылка

Ich möchte, dass alle divs mit der Klasse "child" sich ausbreiten, um die gesamte Breite des div mit der Klasse container zu füllen?

Wahrscheinlich eine ziemlich einfache Lösung, ich bin ziemlich neu in HTML und CSS

Wie kann ich das so machen, dass egal welche Breite "Container" die Kinder gleichmäßig verteilen?

Danke!

    
user2981824 12.11.2013, 05:21
quelle

4 Antworten

13

Sie müssen das Verhalten des Tabellenlayouts emulieren, wie in dieser Antwort .

Dies bedeutet NICHT , dass Sie tatsächliche <table> und untergeordnete Elemente verwenden! Dies beinhaltet die Verwendung bestimmter Werte der Eigenschaft display , nämlich table und%. co_de%, um das Layoutverhalten von Tabellen zu emulieren. Sie möchten das tatsächliche Tabellen-Markup für reines Layout nicht verwenden, da dies semantisch inkorrekt und verpönt ist. Wenn es sich bei Ihrem Inhalt um tabellarische Daten handelt, die in eine Tabelle gehören, dann ist es sinnvoll, ein tatsächliches table-cell zu verwenden. Ich werde hier die Nicht-Tabellen-Methode vorstellen, da das wahrscheinlich das ist, was Sie wollen.

Ihr <table> -Element benötigt die Eigenschaft div.container , damit sie sich wie display: table; verhält. Sie möchten auch die <table> -Regel mit dem Wert table-layout , um alle Ihre Kindelemente gleichmäßig zu verteilen. Ihre fixed -Elemente benötigen dann div.child , damit sie sich wie Tabellenzellen verhalten. Der Browser berechnet jetzt automatisch gleichmäßig verteilte Layouts für Ihre untergeordneten Elemente. Beachten Sie, dass Sie für Ihre untergeordneten Elemente keine display: table-cell; -Regel mehr benötigen / wollen, da der Browser dies berechnet. Das Containerelement benötigt eine bestimmte Breite, andernfalls wird die Tabelle einfach so verkleinert, dass sie nur so groß ist wie ihr Inhalt. Beachten Sie, dass Inhalt auch aus den untergeordneten Elementen überlaufen kann, wenn die Inhaltsbreite größer als die berechneten, gleichmäßig verteilten Dimensionen ist.

Der letzte Code ist unten und hier ist eine Geige .

HTML:

%Vor%

CSS:

%Vor%

Auch eine nicht verwandte Notiz über width . Es wird alle Leerzeichen zwischen Inline-Block-Elementen dargestellt (Sie können dies als Abstand zwischen Ihren untergeordneten Elementen in Ihrer ursprünglichen Geige sehen). Dies ist normal und folgt der Spezifikation, ist aber manchmal unerwünscht. Sie können darüber nachlesen, wie Sie hier umgehen können.

    
ajp15243 12.11.2013, 05:44
quelle
2

Ich weiß, dass diese Antwort ziemlich alt ist, aber ich kann ein Problem wie dieses gerade jetzt umgehen und habe die Berechnungsfunktion von CSS benutzt. Sehen Sie sich den aktualisierten Code an, den ich für Sie erstellt habe.

%Vor%

jsfiddle

    
Arin_nirA 08.03.2017 08:26
quelle
0

Versuchen Sie es

%Vor%

Geige

    
Sridhar R 12.11.2013 05:24
quelle
-1

Entfernen Sie einfach die Eigenschaft display: inline-block; aus der untergeordneten Klasse.

CSS-Divs haben bereits die "Fähigkeit", die gesamte Breite zu füllen.

    
Maloke 12.11.2013 05:33
quelle

Tags und Links