2013-07-17 2 views
1

Я создаю внутреннюю планировку с плитами (плитки ура!), Которая позволяет смешивать разные размеры. Для этого у меня просто есть груз <article>, который я плаваю влево, и они, естественно, встают на свои места. Это прекрасно работает, пока я не начну рисовать вертикальные фигуры.CSS patio layout

У меня есть пробел внизу, как его заполнить? Я попытался поменять местами, но это не помогло. См. Ниже ссылки на рис., Код и JSFiddle.

Patio Layout

HTML

<div id="container"> 
    <article class="oneXone"> 
     hello world 
    </article> 

    <article class="oneXone"> 
     hello world 
    </article> 

    <article class="twoXone rhs"> 
     hello world 
    </article> 

    <article class="threeXone"> 
     hello world 
    </article> 

    <article class="oneXone rhs"> 
     hello world 
    </article> 

    <article class="oneXtwo"> 
     hello world 
    </article> 

    <article class="twoXone"> 
     hello world 
    </article> 

    <article class="oneXtwo rhs"> 
     hello world 
    </article> 

    <article class="oneXone"> 
     hello world 
    </article> 
</div> 

CSS

#container { width: 480px; } 
article { float: left; margin: 0 8px 8px 0; padding: 5px; background: red; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } 
.rhs { margin-right: 0; } 
.floatRight { float: right; } 
.oneXone { width: 114px; height: 114px; } 
.twoXone { width: 236px; height: 114px; } 
.threeXone { width: 358px; height: 114px; } 
.oneXtwo { width: 114px; height: 236px; } 
.oneXthree { width: 114px; height: 358px; } 
.twoXtwo { width: 236px; height: 236px; } 

Original JSFiddle

Swapped boxes around JSFiddle

+3

Попробуйте [Jquery масонства] (http://masonry.desandro.com/). Я знаю, что это не чистое решение для CSS, но это лучшее решение, которое я знаю для такого рода вещей. – Spudley

+1

http://jsfiddle.net/ykQBr/2/ –

+0

Вы должны добавить это как ответ @AldiUnanto – Chris

ответ

0

ОК Chris Nicholson, как ваш запрос, это мой ответ.

Добавить class конкретного тега, например 'a'.

<article class="oneXone a"> hello world </article>

Затем CSS:

.a{ 
    background-color: #1361aa; 
    margin: -122px 0 0 122px; 
    width: 236px; 
} 

http://jsfiddle.net/ykQBr/2/

1

Просто добавьте в ваш CSS:

.oneXone:last-child { 
    margin: -122px 0 0 122px; 
    width: 114px; 
} 

Вот jsFiddle с двумя блоками уместиться.

+0

отметьте это как * ответ * если вы удовлетворены решением – acudars

+5

Это будет работать, только если макет останется таким же и ничего не динамично, и это было в комментариях –

+0

Немного отличается, но в целом да. Как вы можете видеть, пользователь решил использовать определенную ширину и высоту. Для динамических значений всегда есть% и em, которые можно легко заменить. – acudars