当前位置:Gxlcms > css > 如何使用CSS实现圆点移动的动图效果

如何使用CSS实现圆点移动的动图效果

时间:2021-07-01 10:21:17 帮助过:18人阅读

这篇文章给大家分享的内容是关于如何使用CSS实现圆点移动的动图效果,有一定的参考价值,有需要的朋友可以从参考一下,希望对你有所帮助。

效果预览

2502301622-5b63593984314_articlex.gif

源代码下载

https://github.com/comehope/front-end-daily-challenges

代码解读

定义 dom,容器中包含 5 个元素,每个元素代表 1 个小球:

  1. <p class="loader">
  2. <span></span>
  3. <span></span>
  4. <span></span>
  5. <span></span>
  6. <span></span>
  7. </p>

居中显示:

  1. body {
  2. margin: 0;
  3. height: 100vh;
  4. display: flex;
  5. align-items: center;
  6. justify-content: center;
  7. background: radial-gradient(circle at center, sienna, maroon);
  8. }

定义容器尺寸:

  1. .loader {
  2. width: 6em;
  3. height: 1em;
  4. font-size: 40px;
  5. }

画出圆点:

  1. .loader {
  2. position: relative;
  3. }
  4. .loader span {
  5. position: absolute;
  6. width: 1em;
  7. height: 1em;
  8. background-color: white;
  9. border-radius: 50%;
  10. left: 5em;
  11. }

定义小球从右到左移动以及从左侧返回到右侧的动画效果:

  1. .loader {
  2. --duration: 5s;
  3. }
  4. .loader span {
  5. animation:
  6. walk linear infinite;
  7. animation-duration: var(--duration);
  8. }
  9. @keyframes walk {
  10. 0%, 95%, 100% {
  11. left: 5em;
  12. }
  13. 80%, 85% {
  14. left: 0;
  15. }
  16. }

再增加小球在最左端向上跳起和在最右端向下落下的动画效果:

  1. .loader span {
  2. animation:
  3. walk linear infinite,
  4. jump linear infinite;
  5. }
  6. @keyframes jump {
  7. 80%, 100% {
  8. top: 0;
  9. }
  10. 85%, 95% {
  11. top: -1em;
  12. }
  13. }

再增加小球在从左侧返回到右侧时,因运动得快而稍被压扁的效果:

  1. .loader span {
  2. animation:
  3. walk linear infinite,
  4. jump linear infinite,
  5. squash linear infinite;
  6. }
  7. @keyframes squash {
  8. 80%, 100% {
  9. width: 1em;
  10. height: 1em;
  11. }
  12. 90% {
  13. width: 2em;
  14. height: 0.8em;
  15. }
  16. }

为 5 个小球分别定义变量:

  1. .loader span:nth-child(1) {
  2. --n: 1;
  3. }
  4. .loader span:nth-child(2) {
  5. --n: 2;
  6. }
  7. .loader span:nth-child(3) {
  8. --n: 3;
  9. }
  10. .loader span:nth-child(4) {
  11. --n: 4;
  12. }
  13. .loader span:nth-child(5) {
  14. --n: 5;
  15. }

声明小球的数量:

  1. .loader {
  2. --dots: 5;
  3. }

设置动画延时:

  1. .loader span {
  2. animation-delay: calc(var(--n) * var(--duration) / var(--dots) * -1);
  3. }

最后,把点的尺寸改小一些:

  1. .loader {
  2. font-size: 20px;
  3. }

大功告成!

相关推荐:

如何用CSS和D3实现宇宙飞船的动态效果

如何使用CSS实现变色旋转动画的动态效果

以上就是如何使用CSS实现圆点移动的动图效果的详细内容,更多请关注Gxl网其它相关文章!

人气教程排行