效果预览

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

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

可交互视频教程

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

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

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

源代码下载

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

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

代码解读

定义 dom,容器中包含 9 个 <span>:

<div class="heart">
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
<span></span>
</div>

居中显示:

body {
margin: 0;
height: 100vh;
display: flex;
align-items: center;
justify-content: center;
background: radial-gradient(circle at center, navy, black);
}

定义容器尺寸:

.heart {
width: 14em;
height: 11em;
}

布局容器中的竖条纹:

.heart {
display: flex;
justify-content: space-between;
} .heart span {
width: 1em;
background-color: lightblue;
border-radius: 0.5em;
}

为竖条纹配色,条纹的样式是左右对称的:

.heart span {
background-color: var(--c);
} .heart span:nth-child(1),
.heart span:nth-child(9) {
--c: orangered;
} .heart span:nth-child(2),
.heart span:nth-child(8) {
--c: gold;
} .heart span:nth-child(3),
.heart span:nth-child(7) {
--c: limegreen;
} .heart span:nth-child(4),
.heart span:nth-child(6) {
--c: dodgerblue;
} .heart span:nth-child(5) {
--c: mediumpurple;
}

为竖条纹设置高度,组成心形图案:

.heart span {
height: var(--h);
position: relative;
top: var(--t);
} .heart span:nth-child(1),
.heart span:nth-child(9) {
--h: 3em;
--t: 2.2em;
} .heart span:nth-child(2),
.heart span:nth-child(8) {
--h: 6em;
--t: 0.6em;
} .heart span:nth-child(3),
.heart span:nth-child(7) {
--h: 8em;
--t: 0;
} .heart span:nth-child(4),
.heart span:nth-child(6) {
--h: 9em;
--t: 0.8em;
} .heart span:nth-child(5) {
--h: 9.4em;
--t: 1.6em;
}

设置位移动画效果:

.heart span {
animation: beating 5s infinite;
} @keyframes beating{
0%, 30% {
top: var(--t);
height: var(--h);
} 60%, 70% {
top: 25%;
height: 50%;
}
}

最后,为动画过程中的条纹设置去色、模糊和变窄效果,加强与彩色条纹的差异对比:

@keyframes beating{
0%, 30% {
background-color: var(--c);
filter: blur(0);
width: 1em;
} 60%, 70% {
background-color: lightblue;
filter: blur(5px);
width: 0.1em;
}
}

大功告成!

最新文章

  1. Angular企业级开发(2)-搭建Angular开发环境
  2. Linux下命令行安装weblogic10.3.6
  3. 分享一个UI与业务逻辑分层的框架(一)
  4. HTML5自定义属性之data-*
  5. nodevalue
  6. iOS阶段学习第二天笔记(数据类型与进制)
  7. 正则表达式学习笔记(附:Java版示例代码)
  8. drupal module 自定义
  9. 手把手教你从购买vps到搭建一个node服务器
  10. hdu3911 线段树 区间合并
  11. hdu 4712
  12. Spring4.0整合Hibernate3 .6
  13. ControlStyles(枚举)
  14. 解决VS2010批量替换时经常由于内存较低而导致VS2010自动关闭的问题
  15. php 便利数组方法
  16. MongoDB入门系列(二):Insert、Update、Delete、Drop
  17. Java面向对象进阶篇(内部类)
  18. ajax(2)
  19. MapReduce的工作原理
  20. php.ini中文翻译版--转载

热门文章

  1. i春秋web作业2.25
  2. O - Snacks(DFS序)
  3. Dangal 观影感受,(摘录)
  4. linux下常用命令查看端口占用
  5. FastDFS安装部署
  6. HttpClient简介与案例分析
  7. 安装与使用django-restframework
  8. 体验vSphere 6之1-安装VMware ESXi 6 RC版(转载)
  9. win10安装3DSMAX失败,怎么强力卸载删除注册表并重新安装
  10. Linux和git使用