2016-08-20 9 views
0

Ich versuche, eine Seite zu erstellen, die mehrere 3 Divs in einer Reihe hat, die links rechts und in der Mitte ausgerichtet sind.Links, rechts und zentriert divs

Ich versuchte mit und float:right aber es funktionierte wirklich schlecht. Die Seite skaliert super zufällig und ich möchte die divs in 2 Spalten, wenn die Seite nach unten und dann auf 1 Spalte für mobile Geräte skaliert werden.

.container { 
 
    display: inline-block; 
 
    text-align: center; 
 
    width: 100%; 
 
    position: relative; 
 
} 
 
.left, 
 
.middle, 
 
.right { 
 
    width: 200px; 
 
    height: 200px; 
 
    background-color: red; 
 
    display: inline-block; 
 
} 
 
.left { 
 
    float: left; 
 
} 
 
.right { 
 
    float: right; 
 
}
<div class="container"> 
 

 
    <div class="left"> 
 
    <div class="content"> 
 
    </div> 
 
    </div> 
 
    <div class="middle"> 
 
    <div class="content"> 
 
    </div> 
 
    </div> 
 
    <div class="right"> 
 
    <div class="content"> 
 
    </div> 
 
    </div> 
 

 
</div>

jsFiddle: https://jsfiddle.net/azizn/j4cgef5g/

+1

http://stackoverflow.com/q/2603700/3597276 –

+0

Betrachten Sie Medienabfragen. Wie sollte sich der 3. Punkt verhalten, wenn 2 pro Reihe sind? wird unter 2 Boxen zentriert? – Aziz

+0

Verwenden Sie. Bootstrap. Rahmen. ? –

Antwort

-1

Schauen Sie sich die Beispiele an, die ich unten aufgeführt habe (CSS und HTML-Skript)

HTML

<div id='columns'> 
    <div id='col1'></div> 
    <div id='col2'></div> 
    <div id='col3'></div> 
</div> 

CSS

#columns{ 
    position: absolute; 
    height: 100%; 
    width: 100%; 
} 

#columns #col1{ 
    float: left; 
    width: 33.33%; 
    height: 100%; 
} 


#columns #col2{ 
    float: left; 
    width: 33.33%; 
    height: 100%; 
} 


#columns #col3{ 
    float: left; 
    width: 33.33%; 
    height: 100%; 
} 

@media media only screen and (max-width:1024px) and (min-width:540px){ 
    #columns #col1{ 
     width: 50%; 
    } 


    #columns #col2{ 
     width: 50%; 
    } 


    #columns #col3{ 
     width: 100%; 
    } 
} 

@media media only screen and (max-width:540px){ 
    #columns #col1{ 
     width: 100%; 
    } 


    #columns #col2{ 
     width: 100%; 
    } 


    #columns #col3{ 
     width: 100%; 
    } 
} 

Beachten Sie, dass ich das obige Beispiel nicht tatsächlich getestet habe, aber es sollte funktionieren. Sie können Ihre Breiten- und Höhenwerte sowie die Breiten für die Medienabfragen nach Wunsch bearbeiten. Wenn der Bildschirm kleiner wird, werden die Spalten 3 und 2 aus der Anzeige entfernt, während die anderen Spalten größer werden. Um die drei Spalten in der linken, mittleren und rechten Position zu setzen, müssen Sie keine unterschiedlichen Gleitkommazahlen angeben, da sie in Blöcken sind und automatisch auf der linken Seite kollidieren und stapeln, bis sie auf die Bildschirmkante treffen. Dies ist auch der Grund, warum die Breite im Allgemeinen nur 33,33% betragen kann, da 33,333% im Allgemeinen den dritten Block nach unten drücken, da nicht genug Platz vorhanden ist. In den meisten Fällen ist der 0,01% Totraum nicht bemerkbar.

+0

Danke, die divs scheinen jedoch den ganzen Platz zu nehmen, und ich möchte ein paar Ränder haben. Aber wenn ich drüber nachdenke, wenn ich mehr divs drinnen mit der Größe mache, die ich will, sollte es funktionieren, oder? – Shirohige

+0

Also habe ich diese Methode ausprobiert und es funktioniert zum größten Teil. Das Problem ist, dass alles nach links ausgerichtet ist, wenn ich eine benutzerdefinierte Größe für die Spalten festlege. Ich möchte grundsätzlich die linke und rechte Spalte mit den Kanten ausrichten und die Mitte in der Mitte zwischen ihnen. Kannst du mir damit helfen? – Shirohige

+0

Wenn Sie die Größe der 3 Divs auf der Innenseite ändern möchten, müssen Sie die Größe der Containerspalten ändern, da sie ein Drittel ihrer Breite einnehmen. Wenn Sie möchten, dass die divs 250px sind, wenn sie alle sichtbar sind, würden Sie den Container auf etwa 750px setzen. Denken Sie daran, es wird nie genau sein, aber innerhalb von etwa 0,01-0,1px Fehler. – BilfredKerman

4

Dies ist ein Use-Case-Lehrbuch für Flexbox:

.container{ 
    display: flex; 
    justify-content: space-between; 
} 

Hier ein Beispiel: http://codepen.io/memoblue/pen/XKQqGg

Es gibt viele wa Um mit dem responsiven Aspekt umgehen zu können, müsste ich genauer wissen, wie das Layout an den verschiedenen Breakpoints aussehen soll.

+0

Ja, aber ignoriert vollständig den responsiven Aspekt. – Aziz

+0

Danke, ich habe versucht, flex auch und das gleiche Ergebnis. Skalierung war jedoch das Problem. Ich möchte, wenn der Bildschirm zu einer bestimmten Breite die 2 Spalten erreicht, um die gleiche Position oder in der Mitte zu haben (nicht sicher, wie es besser aussehen würde) mit einem Rand oben und unten. Grundsätzlich mache ich eine Partnerseite. Es sieht in etwa so aus: https://www.indiegogo.com/partners – Shirohige

+0

Ich habe meinen Stift mit einem Layout aktualisiert, das der Indiegogo-Seite ähnelt, mit der Sie verbunden sind. Es ist ziemlich anders als deine ursprüngliche Beschreibung. Ich habe nicht hingesehen, aber ich bin mir ziemlich sicher, dass sie nur die Elemente schweben ... Es ist nicht einmal zentriert, wenn es zwei Spalten gibt. Meins ist;) Ich verwende Haltepunkte, die der Breite der Elemente entsprechen. Sie müssen an Ihre Größen anpassen. Ich habe auch den HTML-Code aufgeräumt. Ich hoffe es macht dir nichts aus! Lass es mich wissen, wenn du irgendwelche Fragen hast. – memo

Verwandte Themen