这是只用了一个 div
来做的小动画,纯粹利用 CSS3 的 animation
来完成,就像是一个正方形在地上弹跳,碰到地面的时候尖角还会压缩变圆,阴影的部分也会随着正方形升高而缩小,至于到底该怎么完成呢?让我们继续看下去。
利用伪元素
由于只使用了一个 div
,要同时达到正方形旋转与阴影缩放的效果,这里必须使用两个伪元素( before
与 after
)来完成,严格来说,虽然只有一个 div
,但是却是把这个 div
当作外框,让伪元素 before
作为旋转的正方形,让伪元素after作为阴影。
1 | .box{ |
CSS动画
画出正方形与阴影之后,再来就是要做动画了,为了避免太过复杂,这里我们先不要旋转,先单纯让正方形上下跳动,然后阴影会放大缩小,下面的示例的动画,又新增了20%与80%的keyframe,目的是为了让接触的时候角落才会变圆,不然就会变成刚开始移动时尖角就变圆,就会很怪异了。
1 | .box:before{ |
加入旋转效果
了解原理之后,我们只要再加上旋转的属性,就可以达到弹跳起来的时候有旋转的效果,不过这里又有用到一个小技巧,就是落下的时候是90度转到45度,弹上去的时候从45旋转到0度,然后在这一瞬间从0度变成90度(100%到0%),如此一来我们就会产生错觉,感觉好像一直在旋转了。
1 | @-webkit-keyframes box{ |
举一反三,我们也可以把角度反转,就会往另外一边弹跳。
如果我们把动画里头添加linear,就会变成线性的连续方式喔。
Author | 王平安 |
---|---|
pingan8787@qq.com | |
博 客 | www.pingan8787.com |
微 信 | pingan8787 |
每日文章推荐 | https://github.com/pingan8787/Leo_Reading/issues |
ES小册 | js.pingan8787.com |
微信公众号