2016-10-19 3 views
3

Есть ли способ, чтобы сделать мой блок-элементы ведут себя, как в этом примере:CSS встроенный блок чистый складной


Желаемый эффект:

|----|----| 
|1111|2222| 
|1111|----| 
|1111|3333| 
|----|----| 
|4444| 
|----| 

Фактический результат:

|----|----| 
|1111|2222| 
|1111|----| 
|1111| 
|----|----| 
|3333|4444| 
|----|----| 

.wrapper { 
 
    background-color:red; 
 
    width:220px; 
 
} 
 

 
.block { 
 
    background-color:blue; 
 
    height:100px; 
 
    width:100px; 
 
    
 
    display:inline-block; 
 
    vertical-align:top; 
 
    margin:4px; 
 
} 
 

 
.long { 
 
    height:200px; 
 
}
<div class="wrapper"> 
 
    <div class="block long"> 
 
    </div> 
 
    <div class="block"> 
 
    </div> 
 
    <div class="block"> 
 
    </div> 
 
    <div class="block"> 
 
    </div> 
 
</div>

+1

Это кладка макет - http://stackoverflow.com/questions/8470070/how-to-create-grid-tile-view-with-css –

+0

Что значит «чистый складной «означает здесь? – BSMP

+0

@Paulie_D Не совсем, я хотел бы, чтобы число 4 занимало пространство, где 5 приведен в примере. – Randy

ответ

1

Я думаю, что лучшим вариантом является использование masonry плагин.

$('.wrapper').masonry({ 
 
    columnWidth: 1, 
 
    itemSelector: '.block' 
 
});
.wrapper { 
 
    background-color:red; 
 
    width:220px; 
 
} 
 

 
.block { 
 
    background-color:blue; 
 
    height:100px; 
 
    width: 100px; 
 
    display: inline-block; 
 
    margin:4px; 
 
} 
 

 
.long { 
 
    height:180px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://unpkg.com/[email protected]/dist/masonry.pkgd.min.js"></script> 
 
<div class="wrapper"> 
 
    <div class="block long"></div><div class="block"></div><div class="block"></div><div class="block"></div> 
 
</div>

0
<div class="wrapper"> 
    <div> 
    <div class="block long"> 

    </div> 
    <div class="block"> 
    </div> 
    </div> 
    <div> 
    <div class="block"> 
    </div> 
    <div class="block"> 
    </div> 
    </div> 
</div> 

это будет иметь желаемый эффект с тем же CSS

+0

Это ничего не меняет, я боюсь. – Randy

+0

загрузите плункер и запустите его. вы увидите, что элементы правильно выровнены. https://plnkr.co/edit/S5OTUrAM5ESrF7sgGdQ2?p=info –

0

Вы можете добавить к .wrapper класса,

column-count: 2; 
column-gap: 0px; 

.wrapper { 
 
    background-color:red; 
 
    width:220px; 
 
    column-count: 2; 
 
    column-gap: 0px; 
 
} 
 

 
.block { 
 
    background-color:blue; 
 
    height:100px; 
 
    width:100px; 
 
    
 
    display:inline-block; 
 
    vertical-align:top; 
 
    margin:4px; 
 
} 
 

 
.long { 
 
    height:200px; 
 
}
<div class="wrapper"> 
 
    <div class="block long"> 
 
    </div> 
 
    <div class="block"> 
 
    </div> 
 
    <div class="block"> 
 
    </div> 
 
    <div class="block"> 
 
    </div> 
 
</div>

+0

В этом примере это блестящий результат, но, к сожалению, он взорвал весь мой макет в реальном проекте. Я нахожусь в отладочном туре сейчас;) – Randy

+0

Это не будет требовать разделов по мере необходимости. –

0

использования float:left блокировать свойства

.wrapper { 
 
    background-color:red; 
 
display: inline-block; 
 
width: 220px; 
 
} 
 

 
.block { 
 
    background-color:blue; 
 
    height:100px; 
 
    width:100px; 
 
float: left; 
 
    
 
vertical-align:top; 
 
    margin:4px; 
 
} 
 

 
.long { 
 
    height:200px; 
 
}
<div class="wrapper"> 
 
    <div class="block long"> 
 
    </div> 
 
    <div class="block"> 
 
    </div> 
 
    <div class="block"> 
 
    </div> 
 
    <div class="block"> 
 
    </div> 
 
</div>

+1

Это работает для моего примера, но тогда, если у вас будет больше элементов, то будет пустое место слева, а не справа;) – Randy

Смежные вопросы