效果预览

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

https://codepen.io/zhang-ou/pen/erRzzR

可交互视频教程

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

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

https://scrimba.com/c/cwrJys7

源代码下载

请从 github 下载。

https://github.com/comehope/front-end-daily-challenges/tree/master/011-ripple-pulse-loader-animation

代码解读

定义 dom,只有一个元素:

<div class="circle"></div>

居中显示:

html,
body,
.circle {
height: 100%;
display: flex;
align-items: center;
justify-content: center;
background-color: black;
}

画出中间的实心圆:

:root {
--innerRadius: 2em;
} .circle {
width: calc(var(--innerRadius) * 2);
height: calc(var(--innerRadius) * 2);
background-color: lime;
border-radius: 50%;
}

画出圆环:

.circle {
box-shadow: 0 0 0 calc(var(--innerRadius) - 0.4em) black,
0 0 0 var(--innerRadius) lime;
}

用伪元素 ::before 画出动画用到的圆环:

.circle::before {
content: '';
position: absolute;
width: calc(var(--innerRadius) * 2 * 2);
height: calc(var(--innerRadius) * 2 * 2);
border: 2px solid lime;
border-radius: 50%;
}

增加动画效果:

.circle::before
animation: pulse 2s linear infinite;
} @keyframes pulse {
from {
transform: scale(1);
} to {
transform: scale(2);
}
}

优化动画——增加渐淡和弹性效果:

.circle::before
animation: pulse 2s ease-out infinite;
} @keyframes pulse {
from {
filter: opacity(0.9);
} to {
filter: opacity(0);
}
}

最后,用伪元素 ::after 再画出一个动的圆环:

.circle::after {
content: '';
position: absolute;
width: calc(var(--innerRadius) * 2 * 2);
height: calc(var(--innerRadius) * 2 * 2);
border: 2px solid lime;
border-radius: 50%;
animation: pulse 2s ease-out infinite;
} .circle::after {
animation-delay: 1s;
}

大功告成!

知识点

最新文章

  1. Java 发送邮件
  2. 【转】 shell 判断语句
  3. 使用jxl,poi读取excel文件
  4. find_first_of()和 find_last_of() 【获取路径、文件名】
  5. Unity 3D学习之 Prime31 Game Center插件用法
  6. 通知---iOS
  7. C#中常见的委托(Func委托、Action委托、Predicate委托)
  8. Linux select TCP并发服务器与客户端编程
  9. [OJ] Search for a Range
  10. MySQL推出Applier,可实时复制数据到Hadoop
  11. offsetLeft
  12. html5 contenteditable 实现table可编辑(网页版EXCEL)
  13. rsync 安装
  14. C# 基础之const
  15. websocket项目电子签字使用场景
  16. java.lang.IllegalStateException: Fragment bb{42261900} not attached to Activity
  17. JavaScript将具有父子关系的原始数据格式化成树形结构数据(id,pid)
  18. Golang把所有包括底层类库,输出到stderr的内容, 重新定向到一个日志文件里面?
  19. 重构改善既有代码设计--重构手法12:Extract Class (提炼类)
  20. Tomcat热启动

热门文章

  1. c++11多线程---std::ref和std::cref
  2. visudo编辑sudoers
  3. hook工具
  4. Type.MakeGenericType 方法 (Type[]) 泛型反射
  5. WPF DevExpress Chart控件 需要引用的类库
  6. 3.k8s资源控制器rs Deployment Job
  7. C#读取xml节点数据方法小结
  8. 手把手教你SOAP访问webservice并DOM解析返回的XML数据(转)
  9. vue+express利用token 完成前后端登录
  10. 傻傻分不清?Integer、new Integer() 和 int 的面试题