<div id="wrap">
<!-- section -->
<div class="section">
<div class="center">
<div id="gallery" class="contains-1">
<div class="gal"><span>1</span></div>
</div>
<div id="add">
<span>Добавить</span>
</div>
</div>
</div>
<!--/section -->
</div>
html,
body {
margin: 0;
padding: 0;
font-family: sans-serif;
font-size: 16px;
line-height: 1.4;
color: #555;
background: #fff;
}
* {
box-sizing: border-box;
}
#wrap {
position: relative;
}
.section {
padding: 40px;
}
#gallery {
margin: auto;
width: 900px;
display: grid;
grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
grid-auto-flow: row dense;
grid-auto-rows: 300px;
&.contains {
&-1 {
.gal {
grid-row-end: span 2;
}
}
&-2 {
.gal {
grid-row-end: span 2;
&:nth-child(2) {
grid-column-start: span 2;
}
}
}
&-3 {
.gal {
grid-row-end: unset;
&:nth-child(1) {
grid-column-end: span 2;
}
&:nth-child(3) {
grid-column-end: span 3;
}
}
}
&-4 {
.gal {
&:nth-child(1) {
grid-row-end: span 2;
}
&:nth-child(4) {
grid-column-start: span 2;
}
}
}
&-5 {
.gal {
&:nth-child(5) {
grid-column-end: span 2;
}
}
}
}
}
.gal {
max-height: 100%;
overflow: hidden;
position: relative;
span {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
font-size: 24px;
font-weight: 700;
}
&:nth-child(1) {
background: #aaa;
}
&:nth-child(2) {
background: #bbb;
}
&:nth-child(3) {
background: #ccc;
}
&:nth-child(4) {
background: #ddd;
}
&:nth-child(5) {
background: #eee;
}
}
#add {
width: 100%;
padding: 10px;
text-align: center;
text-transform: uppercase;
cursor: pointer;
background: #ccc;
font-weight: 700;
margin-top: 20px;
user-select: none;
&:hover {
background: #bbb;
}
&.hide {
display: none;
}
}
View Compiled
$(function() {
var $gallery = $('#gallery'),
i = 1;
function checkGal() {
var $gals = $gallery.children().length;
$gallery.attr('class', 'contains-' + i);
}
$('#add').click(function() {
i++;
if(i >= 5) {
$('#add').addClass('hide');
}
$('.gal').last().clone().html('<span>' + i + '</span>').appendTo('#gallery');
checkGal();
});
});
This Pen doesn't use any external CSS resources.