Как то так.Я использовал пользовательские свойства CSS, чтобы сделать вычисления немного более очевидными.
Обратите внимание: порядок свойств преобразования очень важен.Оценивается справа налево:
От MDN-преобразование CSS
Функции преобразования умножаются слева направо, что означает, что составные преобразованияэффективно применяется в порядке справа налево.
Это означает, что transform: rotateX(90deg) translateX(100px)
- это не то же самое, что transform: translateX(100px) rotateX(90deg)
.Первый сначала переводит, а затем вращается, в то время как последний выполняет вращение перед переводами.
.box {
width: 130px;
height: 268px;
background-size: cover;
}
.box:nth-child(4n+1) {
background: url(https://picsum.photos/id/100/136/276);
}
.box:nth-child(4n+2) {
background: url(https://picsum.photos/id/200/136/276);
}
.box:nth-child(4n+3) {
background: url(https://picsum.photos/id/300/136/276);
}
.box:nth-child(4n+4) {
background: url(https://picsum.photos/id/400/136/276);
}
.container {
transform: perspective(1200px) rotateX(60deg) rotateZ(-35deg) translate3d(-100px, -200px, -500px);
}
.skew {
position: absolute;
top: 200px;
left: 50%;
--width: 140px;
--height: 278px;
--x: 0;
--y: 0;
--offsetX: calc(var(--x) * var(--width));
--offsetY: calc(var(--y) * var(--height));
transform: translate(var(--offsetX), var(--offsetY));
}
.skew:nth-child(5n + 1) {
--x: -2;
}
.skew:nth-child(5n + 2) {
--x: -1;
}
.skew:nth-child(5n + 3) {
--x: 0;
}
.skew:nth-child(5n + 4) {
--x: 1;
}
.skew:nth-child(5n + 5) {
--x: 2;
}
.skew:nth-child(n + 1):nth-child(-n + 5) {
--y: -2;
}
.skew:nth-child(n + 6):nth-child(-n + 10) {
--y: -1;
}
.skew:nth-child(n + 11):nth-child(-n + 15) {
--y: 0;
}
.skew:nth-child(n + 16):nth-child(-n + 20) {
--y: 1;
}
.skew:nth-child(n + 21):nth-child(-n + 25) {
--y: 2;
}
<div class="container">
<div class="skew box"></div>
<div class="skew box"></div>
<div class="skew box"></div>
<div class="skew box"></div>
<div class="skew box"></div>
<div class="skew box"></div>
<div class="skew box"></div>
<div class="skew box"></div>
<div class="skew box"></div>
<div class="skew box"></div>
<div class="skew box"></div>
<div class="skew box"></div>
<div class="skew box"></div>
<div class="skew box"></div>
<div class="skew box"></div>
<div class="skew box"></div>
<div class="skew box"></div>
<div class="skew box"></div>
<div class="skew box"></div>
<div class="skew box"></div>
<div class="skew box"></div>
<div class="skew box"></div>
<div class="skew box"></div>
<div class="skew box"></div>
<div class="skew box"></div>
</div>