Цель
Я хотел бы создать анимированный многоугольник, части которого обрезаны/вырезаны/замаскированы, чтобы слой/элемент/фон под ним можно было увидеть следующим образом:
Я создал анимацию с преобразованием CSS3. Это вращающийся блок, который выглядит так, будто его нижняя часть срезается во время движения. Я хотел бы, чтобы обрезанная часть показывала, что на самом деле находится за/под вращающимся блоком (то есть его фон).
Что я пробовал
Иллюзорное решение
Для одноцветных фонов вы можете просто добавить фигуру поверх анимации, чтобы создать иллюзию обрезания.
Это явно не работает с изображениями:
Ограниченное решение
Если вам нужно отрезать стороны прямоугольной формы, вы можете сделать это с помощью родительского элемента, но это имеет очевидные ограничения. Как сделать что-то подобное, но с произвольным полигоном? Можно ли маскировать в CSS?
body {
background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAYAAADEUlfTAAAAG0lEQVQYV2NMqL7ty4ADMIIkF7SqbsYmP+gkAbAbGgsk/ddhAAAAAElFTkSuQmCC);
}
.center {
width: 200px;
margin: 0 auto;
padding-top: 50px;
height: 100px;
overflow: hidden;
}
.block {
height: 100px;
width: 100px;
background-color: red;
z-index: -1;
transition: transform 1000s 0s linear;
margin-left: 50px;
}
@keyframes rotating {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
.rotate {
animation: rotating 2s linear infinite;
}
<div class="center">
<div class="block rotate"></div>
</div>