2017-03-23 2 views
1

Ich versuche, ein „Muster“ von divs zu erstellen, die wie folgt aussieht:
enter image description hereeine CSS-Baugruppe anlegen, Floating divs links, rechts und unten

jedoch zur Zeit es wie folgt aussieht:
enter image description here

was zu meiner Seite etwas wie folgt aussehen:
enter image description here

in diesem letzten Schnipsel wird alles auch nach rechts gedrückt. Im Idealfall muss die Baugruppe zentriert sein. Die Get Conditions-Schaltfläche sollte sich auch unterhalb der Print Runs-Textbox befinden, da sie sich beide in demselben Div befinden und unter den beiden oberen Divs zentriert sind. Die Dropdown-Listen und Radiobutton-Liste sind beide, wo sie sein sollten.

Ich spielte mit Floating der unteren div, aber die verschiedenen Dinge, die ich versuchte, führte meist dazu, dass die untere div mehr Platz zwischen den beiden oberen divs einnimmt.

Ich habe die HTML und CSS in eine JSFiddle eingefügt, bitte beachten Sie, dass es ASP-Tools nicht erkennt, so gibt keine genaue Vorschau dessen, was ich erreichen möchte.

https://jsfiddle.net/h4tr31gt/1/

+0

'clear' Ihre Schwimmer – DaniP

+0

Ihre JSFiddle funktioniert nicht, weil Sie keine externen Code für ein aufgenommen haben und für zwei, können Sie nicht C# in JSFiddle verwenden. –

+0

@DaniP können Sie erweitern, wie dies mir helfen wird? – Wolfish

Antwort

2

Dies bezieht sich nicht direkt auf Ihre Frage zu Schwimmern, aber Sie können dasselbe Ergebnis erzielen, indem Sie flexbox verwenden. https://jsfiddle.net/gnw634gv/

.container { 
 
    background-color: lightblue; 
 
    height: 400px; 
 
    width: 100%; 
 
    display: flex; 
 
    flex-flow: row wrap; 
 
} 
 

 
.block-top { 
 
    width: 50%; 
 
    background-color: yellow; 
 
    height: 50%; 
 
    border: 1px solid black; 
 
    box-sizing: border-box; 
 
}
<div class="container"> 
 
    <div class="block-top">A</div> 
 
    <div class="block-top">B</div> 
 
    <div class="block-bottom">C</div> 
 
</div>

+0

Ich hatte bessere Ergebnisse von Ihrem Beispiel, danke! – Wolfish

+0

Eigentlich gibt es ein Problem, die Baugruppe ist immer noch nach links ausgerichtet. Ich habe einen übergeordneten Container erstellt, der auch einige andere Elemente unterhalb dieser Assembly enthält. Kann ich damit alle Elemente auf der Seite zentral ausrichten? ftr, 'text-align: center' hat keine Wirkung. es gibt auch keine "align-items", von denen ich dachte, dass sie tun würden, seit die Kinder flex benutzen. – Wolfish

+1

Def werfen Sie einen Blick auf die flexbox api. Es ist beeindruckend! Aber wenn Sie etwas in einem Flex-Container "zentrieren" wollen (elem mit 'display: flex'), verwenden Sie' justify-content: center'. Denken Sie daran, Sie können Flex-Container ineinander schachteln, wenn Sie müssen! Flexbox ist ein bisschen komisch, um dein Gehirn herumzureißen, aber wenn du es einmal getan hast, wirst du nie wieder zu Schwimmern zurückkehren. – Pytth

1

eine Klasse von clearfix die Mutter div hinzufügen, etwa so:

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

dann die folgende Art Ihres CSS hinzufügen:

.clearfix { 
    clear: both; 
} 

Sie dann diese wiederverwenden können wo auch immer Sie Floats verwenden.

https://jsfiddle.net/c3rLqce7/

+0

Bin ich richtig in der Annahme, dass dies daran liegt, dass einige CSS-Attribute auch auf den Inhalt eines div angewendet werden, * einschließlich aller darin enthaltenen divs *? – Wolfish

+0

Während das für einige CSS-Attribute gilt, bin ich nicht sicher, ob es hier gilt. Was es tut, ist jedoch genug, dass das Div die Höhe seines Inhalts "löscht". Dies bedeutet, dass es sich automatisch an die Größe seines Inhalts anpasst und nicht schrumpft, weil es denkt, dass es wegen der Floats weniger Inhalt hat. Das Lesen auf Floats auf W3-Schulen wird Ihnen ein besseres Verständnis davon vermitteln und natürlich üben. Eines der nützlichsten Werkzeuge, die ich im Webdesign verwende. –

+0

Ah. Wird es auch die Breite löschen? Im Idealfall möchte ich, dass das untere div die Breite des übergeordneten "container" -div füllt, wo ich dann seinen Inhalt zentrieren kann. – Wolfish

1

Wie DaniP hat Schwimmer vorgeschlagen Clearing würde Ihr Problem lösen. Mit der Float-Eigenschaft wird Ihr Element aus dem tatsächlichen Seitenfluss entfernt und entsprechend Ihrem Float-Wert entweder rechts/links ausgerichtet. Wenn Sie also versuchen, ein anderes Element nach den floated-Elementen hinzuzufügen, wird die Seite so besetzt, als ob die floated-Elemente nicht vorhanden wären. Deshalb sehen Sie, dass es sich nach oben bewegt. Das Floaten des nächsten Elements, ohne die vorherigen Elemente zu entfernen, hat das gleiche Ergebnis wie ohne Float. Daher müssen Sie das Float mit clear: both/right/left löschen, damit die Umgebung der floatenden Elemente gelöscht wird und Sie Elemente ausrichten können. Sie können mehr auf Floats/Clearfixes überprüfen, da einige neue Dinge immer wieder auftauchen. Sie könnten es klarer finden.

Verwandte Themen