我正在尝试制作动画以使圆圈看起来像是装满了水。
我遇到了两个错误,甚至无法通过第三个:
- 使用填充是错误的解决方案。
- 圆圈在填充后恢复为空(黑色)颜色
- 目前我正在使用 tags
<img>,但我想将此效果移动到身体{background-image:}上,并且需要一些关于如何做到这一点的指导。
到目前为止我所尝试的:http: //jsfiddle.net/um0rnL56/1/
#banner {
width: 300px;
height: 300px;
position: relative;
}
#banner div {
position: absolute;
}
#banner div:nth-child(2) {
-webkit-animation: wipe 6s;
-webkit-animation-delay: 0s;
-webkit-animation-direction: up;
-webkit-mask-size: 300px 3000px;
-webkit-mask-position: 300px 300px;
-webkit-mask-image: -webkit-gradient(linear, left bottom, left top, color-stop(0.00, rgba(0, 0, 0, 1)), color-stop(0.25, rgba(0, 0, 0, 1)), color-stop(0.27, rgba(0, 0, 0, 0)), color-stop(0.80, rgba(0, 0, 0, 0)), color-stop(1.00, rgba(0, 0, 0, 0)));
}
@-webkit-keyframes wipe {
0% {
-webkit-mask-position: 0 0;
}
100% {
-webkit-mask-position: 300px 300px;
}
}
<div id="banner">
<div>
<img src="http://i.imgur.com/vklf6kK.png" />
</div>
<div>
<img src="http://i.imgur.com/uszeRpk.png" />
</div>
</div>
来源:注水动画@Arian Faurtosh
这里有四种不同的选择:
1. 使用缓动
如果你在一个圆碗里装满液体,它的底部和顶部会比中间填充得更快(因为更宽的中间部分有更多的空间可以覆盖)所以,记住这个粗略的解释,动画应该:快速开始,在中间放慢速度,然后随着碗在顶部再次变窄而迅速结束。
为此,我们可以使用 CSS3 的缓动特性:
cub-bezier (.2, .6, .8, .4).请参阅下面的示例。
(如果你想在
easing这里定制,那么这里有一个很好的资源:http ://cubic-bezier.com/#.2,.6,.8,.4 )2. SVG 美味
让我们更进一步。假设我们想用 为“水”添加一个波浪表面
CSS。我们可以使用SVG.我在 中创建了一个波浪形 SVG 图像
Adobe Illustrator,然后使用单独的 CSS 动画对图像进行动画处理,使其在循环中从左向右移动:例子
3.带灌装线
此示例包括一条填充线(大多数碗从顶部填充,而不是底部填充)。填充线首先从上到下进行动画处理,而该属性会
animation-delay阻止填充进行动画处理,直到填充完成。4. 有严重的金光闪闪(具有美丽的美学)
此示例添加了更多属性
CSS以使其更逼真。来源:注水动画@Chris Spittles