2011-02-24 40 views
5

Me gustaría mostrar una fila de divisiones de arrastre una al lado de la otra, mientras que en la siguiente fila, la siguiente div se encuentra directamente debajo de la última. De esta manera:Coloque los elementos flotados directamente uno debajo del otro

enter image description here

Debido a que el diseño tiene que ser construida en un CMS, no puedo poner la caja de 1,3 y 2,4 en un div separat. ¿Hay alguna manera de lograr este tipo de comportamiento sin elementos adicionales? (El comportamiento de flotación normal no funciona, mostrar en línea/bloque en línea tampoco funciona). ¿O se necesita algo de JavaScript para construir un diseño como este?

Respuesta

7

Debido a las diferentes alturas, este parece el problema en el que todavía no he encontrado una técnica de CSS puro de uso general para manejarlo correctamente, a pesar de intentar realmente difícil.

He publicado esta respuesta antes: css alignment question

He renunciado y se utiliza un plugin de jQuery de hacer esto en el pasado por algo parecido :

jQuery Masonry

Una imagen vale más que mil palabras:

enter image description here

+0

+1 parece que no hay una solución pura de CSS – Sotiris

+0

¡Funciona muy bien! En realidad, ¡justo lo que estaba buscando! Lástima que no haya publicado el anterior, pero gracias por publicarlo una vez más. – wowpatrick

6

puede usar el nth-child(odd) en clear el float:left;.

css

.box {height:100px;width:100px;float:left;} 
.box:nth-child(odd) {clear:left;} 
.green {background:green;} 
.red{background:red;} 
.blue {background:blue;} 
.yellow {background:yellow;} 

html

<div class="box green">BOX 1</div> 
<div class="box red">BOX 2</div> 
<div class="box blue">BOX 3</div> 
<div class="box yellow">BOX 4</div> 

Demostración:http://jsfiddle.net/YSP2S/

Tenga en cuenta que esto no funcionará para Internet Explorer. Puede usar conditional comment y javascript para lograr lo mismo para Internet Explorer también.

+0

+1, funciona bien, siempre y cuando sus alturas * no sean * diferentes (como en su foto). – thirtydot

+0

@thirtydot tienes razón. Hm, de lo contrario, no creo que exista ninguna solución de CSS pura, solo un javascript como este sugirió. – Sotiris

+0

El problema es que las alturas de las casillas son diferentes, porque son vistas previas de texto, y el texto siempre difiere en longitud, por lo que parece que tendré que usar JavaScrip/jQuery como se sugirió thirtydot ... Pero sigue siendo útil , ¡Gracias! Y tampoco he visto jsfiddle.net hasta ahora, ¡se ve genial para compartir ejemplos de código! – wowpatrick

Cuestiones relacionadas