Я пытаюсь реализовать простую сетку с 3 квадратными элементами в строке, и каждый элемент может иметь до 3 строк / столбцов. Вот что у меня есть:
https://jsfiddle.net/dt3u6840/
HTML:
<div class="layout-grid">
<a href="#" class="block" data-rows="2" data-cols="2"></a>
<a href="#" class="block" data-rows="1" data-cols="1"></a>
<a href="#" class="block" data-rows="1" data-cols="1"></a>
<a href="#" class="block" data-rows="1" data-cols="1"></a>
<a href="#" class="block" data-rows="1" data-cols="1"></a>
<a href="#" class="block" data-rows="1" data-cols="1"></a>
<a href="#" class="block" data-rows="1" data-cols="3"></a>
</div>
CSS:
.layout-grid { overflow: hidden; max-width: 800px; width: 100%; }
.layout-grid .block { position: relative; display: block; float: left; background-color: green; height: auto; transition: all .3s ease; }
.layout-grid .block:hover { opacity: .2; }
.layout-grid .block:nth-child(odd) { background-color: blue; }
.layout-grid .block[data-cols="1"] { width: 33.33333333333%; }
.layout-grid .block[data-cols="2"] { width: 66.66666666666%; }
.layout-grid .block[data-cols="3"] { width: 100%; }
.layout-grid .block[data-rows="1"] { padding-top: 33.33333333333%; }
.layout-grid .block[data-rows="2"] { padding-top: 66.66666666666%; }
.layout-grid .block[data-rows="3"] { padding-top: 100%; }
Это прекрасно работает. Однако, если я пытаюсь добавить элемент с> 1 строк, это не так:
https://jsfiddle.net/pz4vhjw6/
НОВЫЙ HTML:
<div class="layout-grid">
<a href="#" class="block" data-rows="2" data-cols="2"></a>
<a href="#" class="block" data-rows="1" data-cols="1"></a>
<a href="#" class="block" data-rows="1" data-cols="1"></a>
<a href="#" class="block" data-rows="1" data-cols="1"></a>
<a href="#" class="block" data-rows="1" data-cols="1"></a>
<a href="#" class="block" data-rows="2" data-cols="1"></a>
<a href="#" class="block" data-rows="1" data-cols="1"></a>
<a href="#" class="block" data-rows="1" data-cols="1"></a>
</div>
Могу ли я что-нибудь сделать, чтобы сделать эту работу?