2013-08-29 6 views
5

Ich möchte divs nebeneinander platzieren. Ich kenne die Anzahl der Divs nicht, da diese dynamisch erstellt und geändert wird. Ich hätte gerne ein Eltern-Div, das eine Bildlaufleiste haben wird, falls es viele Kind-Divs gibt (und deren Breite größer ist als Eltern).Platzieren von divs nebeneinander unabhängig von der Breite der übergeordneten Elemente

Hier ist die jsFiddle example. Also, im Grunde möchte ich all diese drei Spalten haben, nebeneinander und mit Bildlaufleiste auf der Unterseite des Elternteils div.

HTML:

<div class="content"> 
    <div class="column">Column</div> 
    <div class="column">Column</div> 
    <div class="column">Column</div> 
</div> 

CSS:

content { 
    width: 100px; 
    background- color: #355E95; 
    overflow: visible; 
} 

.column { 
    width: 50px; 
    display: inline-block; 
} 

Antwort

9

hinzufügen white-space:nowrap zu Ihren Eltern div.

FIDDLE

+0

Ich glaube, das ist die richtige Antwort, ich denke, ich kann von Miss die Frage lesen denken, er brauchte mehr als 1 Reihe –

+0

Vielen Dank, das ist, was ich brauchte! – Ned

+0

Gern geschehen :) – Danield

0

Fiddle: http://jsfiddle.net/bdssw/

Verwendung float:left;

.column { 
    width: 50px; 
    display: inline-block; 
    float:left; 
} 
+0

ja, aber das gibt mir zwei Spalten nebeneinander, ich möchte alle drei haben, und scrollbar, um nach divs zu scrollen, die nicht sichtbar sind. Ist das möglich? – Ned

+0

Es ist weil Ihre Inhaltsbreite auf 100px eingestellt ist; Wenn es 100% ist, können wir divs neben jedem platzieren. @Nedeljko –

+0

Ok, ich verstehe. Aber die Sache ist, ich habe die Breite dieses Elternteils festgelegt, und ich möchte divs darin einfügen und die Bildlaufleiste anzeigen können, wenn die Breite der hinzugefügten divs größer ist als die des übergeordneten Elements. Ist das überhaupt möglich? – Ned

-1

Verwendung width:auto;

.content { 
    width: auto; 
    background-color: #355E95; 
    overflow:scrolling; 
    position:fixed; 
} 

.column { 
    width: 50px; 
    float:left; 
} 

http://jsfiddle.net/XqSJG/6/

+0

Warum die unten für einen gültigen Beitrag abstimmen? – SaturnsEye

1

Sie müssten einen Inhalt div für die Rolle verwenden und dann ein Wrapper für die Spalten, die Breite der Umhüllung Einstellung alle 3 Ihrer Spalten passen (150px in Ihrem Beispiel).

Die Spaltenstruktur wird durch schwebende divs links gemacht, aber sie wird auf die Breite des übergeordneten Containers schweben, in diesem Fall ist der übergeordnete Container nur 100px, also müssen wir einen Wrapper hinzufügen, damit sie hineinpassen.

Wenn Sie auch einen vertikalen Bildlauf wünschen, müssen Sie eine Höhe für Ihren Container festlegen.

Jsfiddle: http://jsfiddle.net/tYnH3/

css:

.content { 
    width: 100px; 
    background-color: #355E95; 
    overflow: auto; 
} 

.content-wrapper { 
    width: 150px; 
} 

.column { 
    width: 50px; 
    float: left; 
} 

html:

<div class="content"> 
    <div class="content-wrapper"> 
     <div class="column"> 
      Column   
     </div> 
     <div class="column"> 
      Column   
     </div> 
     <div class="column"> 
      Column   
     </div> 
     <div class="column"> 
      Column   
     </div> 
     <div class="column"> 
      Column   
     </div> 
     <div class="column"> 
      Column   
     </div> 
    </div> 
</div> 
+0

Edit: machte den Überlauf automatisch um vertikale Scroll zu entfernen. –

+0

Ich sehe, aber das Problem ist, dass ich nicht weiß, wie viele Spalten ich haben werde. Also manchmal könnte es 3, manchmal 10 davon sein, und wie ich sehe, muss ich die Breite des Inhalts-Wrappers in Abhängigkeit davon ändern. Gibt es eine dynamische Lösung? Ich habe versucht 100%, aber es funktioniert nicht. – Ned

+0

100% wird es auf die übergeordnete Breite anpassen, wenn Sie es in 3 Spalten benötigen, dann wird dies funktionieren, wenn Sie 4 Spalten die Breite ändern möchten, wird die Menge der Elemente im Inneren angepasst. Wenn sich die Spalten pro Seite ändern, wie weiß sie dann, wie viele Spalten Sie benötigen, ohne etwas zu ändern? Vielleicht könnten wir es mit einer Klasse trennen oder Sie könnten die Breite von "content-wrapper" auf der gewünschten Seite setzen. Sagen Sie 4 Spalten auf –

0

Versuchen Sie, die folgenden JS Geige

http://jsfiddle.net/jT6SW/1/

#wrapper 
{ 
float: left; 
height: 150px; 
width: 250px; 
margin: auto; 
border: 1px black solid; 
overflow-y: hidden; 
overflow-x: scroll; 
} 
Verwandte Themen