效果预览

在线演示

按下右侧的“点击预览”按钮可以在当前页面预览,点击链接可以全屏预览。

https://codepen.io/comehope/pen/qKwXbx

可交互视频

此视频是可以交互的,你可以随时暂停视频,编辑视频中的代码。

请用 chrome, safari, edge 打开观看。

https://scrimba.com/p/pEgDAM/cD96VUM

源代码下载

本地下载

每日前端实战系列的全部源代码请从 github 下载:

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

代码解读

定义 dom,只有 1 个元素:

<div class="loader"></div>

居中显示:

body {margin: 0;height: 100vh;display: flex;align-items: center;justify-content: center;background-color: teal;
}

画出一根木条:

.loader {width: 6em;border-bottom: 0.25em solid white;font-size: 30px;border-radius: 0.125em;
}

用伪元素在其上画出一个盒子:

.loader {position: relative;
}.loader::before {content: '';position: absolute;width: 1em;height: 1em;border: 0.25em solid white;bottom: 0;left: 0.5em;border-radius: 0.25em;
}

让图案倾斜,形成盒子在坡上的效果:

.loader {transform: rotate(-45deg);left: 1em;top: 1em;
}

接下来制作动画。

让盒子一步步爬坡,爬到坡顶再重爬:

.loader::before {animation: push 3s infinite;
}@keyframes push {0% {transform: translateX(0);}20%, 25% {transform: translateX(1em);}40%, 45% {transform: translateX(2em);}60%, 65% {transform: translateX(3em);}80% {transform: translateX(0);}
}

增加盒子在爬坡的过程中的滚动效果:

@keyframes push {0% {transform: translateX(0) rotate(0deg);}20%, 25% {transform: translateX(1em) rotate(calc(90deg * 1));}40%, 45% {transform: translateX(2em) rotate(calc(90deg * 2));}60%, 65% {transform: translateX(3em) rotate(calc(90deg * 3));}80% {transform: translateX(0) rotate(0deg);}
}

增加盒子在爬坡过程中的拟人效果:

@keyframes push {0% {transform: translateX(0) rotate(0deg);}5% {transform: translateX(0) rotate(-5deg);}20%, 25% {transform: translateX(1em) rotate(calc(90deg * 1 + 5deg));}30% {transform: translateX(1em) rotate(calc(90deg * 1 - 5deg));}40%, 45% {transform: translateX(2em) rotate(calc(90deg * 2 + 5deg));}50% {transform: translateX(2em) rotate(calc(90deg * 2 - 5deg));}60%, 65% {transform: translateX(3em) rotate(calc(90deg * 3 + 5deg));}70% {transform: translateX(3em) rotate(calc(90deg * 3 - 5deg));}80% {transform: translateX(0) rotate(-5deg);}
}

让木条在箱子爬到接近顶点时做抛掷动作:

.loader {animation: throw 3s infinite;transform-origin: 20%;
}@keyframes throw {0%, 70%, 100% {transform: rotate(-45deg);}80% {transform: rotate(-135deg);}
}

增加盒子在爬到接近顶点时的掉落效果:

@keyframes push {70% {transform: translateX(3em) translateY(0) rotate(calc(90deg * 3 - 5deg)) scale(1);filter: opacity(1);}80% {transform: translateX(0) translateY(-5em) rotate(-5deg) scale(0);filter: opacity(0.5);}90% {transform: translateX(0) translateY(0) rotate(0deg) scale(0);}
}

最后,隐藏掉可能超出页面的部分:

body {overflow: hidden;
}

大功告成!

原文地址:https://segmentfault.com/a/1190000015470411

转载于:https://www.cnblogs.com/qixidi/p/10035955.html

如何用纯 CSS 创作一个单元素抛盒子的 loader相关推荐

  1. 如何用纯 CSS 创作一个小球上台阶的动画

    如何用纯 CSS 创作一个小球上台阶的动画 效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/come ...

  2. 前端每日实战:45# 视频演示如何用纯 CSS 创作一个菱形 loader 动画

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/eKzjqK 可交互视频教程 此视频 ...

  3. 如何用纯 CSS 创作一个文本淡入淡出的 loader 动画

    效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/ERwpeG 可交互视频 ...

  4. 前端每日实战:84# 视频演示如何用纯 CSS 创作一个极品飞车 loader

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/MBbEMo 可交互视频 此视频是可 ...

  5. python绘制图形沙漏_前端每日实战:118# 视频演示如何用纯 CSS 创作一个沙漏 loader...

    效果预览 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. 可交互视频 此视频是可以交互的,你可以随时暂停视频,编辑视频中的代码. 请用 chrome, saf ...

  6. 如何用纯 CSS 创作一个沙漏 loader

    效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/VGegxr 可交互视频 ...

  7. 如何用纯 CSS 创作一个同心圆弧旋转 loader 特效

    效果预览 在线演示 按下右侧的"点击预览"按钮在当前页面预览,点击链接全屏预览. https://codepen.io/zhang-ou/pen/OZmXQX 可交互视频教程 此视 ...

  8. 如何用纯 CSS 创作一个荧光脉冲 loader 特效

    效果预览 在线演示 按下右侧的"点击预览"按钮在当前页面预览,点击链接全屏预览. https://codepen.io/zhang-ou/pen/erRzzR 可交互视频教程 此视 ...

  9. 如何用纯 CSS 创作一个冒着热气的咖啡杯

    效果预览 在线演示 按下右侧的"点击预览"按钮在当前页面预览,点击链接全屏预览. https://codepen.io/zhang-ou/pen/xjXxoz 可交互视频教程 此视 ...

最新文章

  1. MLNLP顶会论文发表总榜:谷歌最狂,清北入前十,周明、张岳、刘挺华人前三...
  2. Microsoft SQL Server 2000清理LDF日志
  3. 《大道至简》第六章读后感及本次课后习题11.9
  4. Jzoj4764 Brothers
  5. commons.apache
  6. JDK线程池CompletionService的使用
  7. win7+GPU运行py-faster-rcnn
  8. 前端圈小可爱 Vue 的自白:我年少成名,却又屡陷 React、Angular 混战
  9. 如何在苹果 M1 上安装使用 FL Studio
  10. java多线程调度_Java多线程:生命周期,实现与调度
  11. GfK十大洞见揭示物联网时代正全面开启
  12. 【广东大学生网络攻防大赛-WriteUp(非官方)】Misc | 复合
  13. 纯净的linux是没有装vim的,vim安装方式
  14. win10查看端口号、进程
  15. 解决File.Delete()删除不掉文件
  16. 【solidity入门】4. 函数输出 Return
  17. 乳山金岭中学校计算机老师,乳山市金岭中学
  18. 沙特认证_所有的沙特机器人去哪儿了
  19. python-电信宽带提速器软件
  20. 浅谈服务治理、微服务与服务网格(Service Mesh)

热门文章

  1. PHP开发如何实现多线程?
  2. 2016年宜昌楼市将迎来史上最激烈一战
  3. 简单删除我的电脑里的wps云文档图标
  4. 爬虫(beautifulSoup)
  5. BZOJ2588 Count on a tree 【树上主席树】
  6. springmvc-配置文件
  7. dedecms首页去掉index.html怎么设置
  8. nvm 解决nodejs无法全局/usr/bin/node问题
  9. 杭电1000 A + B Problem
  10. C++字符串函数与C字符串函数比较