【发布时间】:2020-02-06 21:08:58
【问题描述】:
目标
我想创建一个动画多边形,它的部分被修剪/剪切/遮蔽,因此它下面的图层/元素/背景可以像这样看到:
我用 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>
【问题讨论】:
-
似乎 webkit 应该能够使用 -webkit-clip-path css 属性解决您的问题。 jsfiddle.net/DpfW7/3 但不幸的是,它在开始动画时完全删除了对象。您仍然可以在没有动画的情况下使用它。
-
背景位置也是一个提示:jsfiddle.net/DpfW7/4 非常接近目标,缺少封面部分...
标签: html css css-animations mask css-transforms