2016-06-23 2 views
-1

Я хочу создать сетчатую макетную макетную макет, но я хочу, чтобы моя первая плитка была больше (ширина и высота). Это вызывает множество проблем с родительским div.CSS Каменная кладка с переменной шириной плитки

Я пробовал flexbox и плавал, до сих пор поплавки работали лучше всего, но все равно не могут сделать это правильно.

С поплавками проблема заключается в том, что родительский div имеет слишком большое пустое пространство справа, и это мешает центрированию.

Вот мой код: https://jsfiddle.net/6c21mnnd/1/

HTML:

<div id="content"> 
    <div class="tile tile-big"></div> 
    <div class="tile"></div> 
    <div class="tile"></div> 
    <div class="tile"></div> 
    <div class="tile"></div> 
    <div class="tile"></div> 
    <div class="tile"></div> 
    <div class="tile"></div> 
    <div class="tile"></div> 
    <div class="tile"></div> 
    <div class="tile"></div> 
    <div class="tile"></div> 
</div> 

CSS:

#content 
{ 
    margin: 0 auto; 
    width: 80%; 
} 

#content:after 
{ 
    content: " "; 
    display: block; 
    height: 0; 
    clear: both; 
} 

.tile 
{ 
    width: 20em; 
    height: 13em; 

    float: left; 

    margin: 0.5em; 

    background-color: #2E3641; 
} 

.tile-big 
{ 
    width: 41em; 
    height: 27em; 

    background-color: #2E3641; 
} 
+1

И что именно вы пытаетесь достичь? – blubberbo

+0

Вопрос нуждается в '?', Пожалуйста, задайте вопрос с помощью '?' –

+0

. Как я могу исправить проблему с дополнительным пустым пространством в div? Потому что я не могу должным образом сосредоточить его. – RedPanda

ответ

0

Мое предложение было бы использовать Flexbox, используя Flex-обертку: завернуть на контейнере, флекс -grow: 1 на более мелкие плитки и flex-grow: 2 на больших плитах

CSS :

#content 
{ 
    margin: 0 auto; 
    width: 80%; 
    display: flex; 
    flex-wrap: wrap; 
} 

.tile 
{ 
    width: 20em; 
    height: 13em; 
    flex-grow: 1; 
    margin: 0.5em; 
    background-color: #2E3641; 
} 

.tile-big 
{ 
    width: 41em; 
    height: 27em; 
    flex-grow: 2; 
    background-color: #2E3641; 
} 
+0

Спасибо, что ответили. Проблема с вашим решением (и мой предыдущий flexbox) заключается в том, что после большой плитки отображается только одна строка. Все обернуто дальше. Хотя есть достаточно места, чтобы соответствовать другой строке после большой плитки. – RedPanda

+0

Итак, вам нужна большая плитка, затем небольшая плитка в том же ряду, а затем три маленьких плитки на следующем ряду? –

+0

С flexbox: https://i.imgur.com/S2lUGPx.png С поплавками: https://i.imgur.com/qAiIXHV.png За исключением плавающих я имею «fantom» пространство в родительском div из нет нигде. И с flexbox это нормально, но нет строки. – RedPanda

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