效果预览

在线演示

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

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

可交互视频教程

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

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

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

源代码下载

本地下载

请从 github 下载。

https://github.com/comehope/f...

代码解读

定义 dom,描绘出 8 行 9 列的心形像素图案,其中 <dot> 是指要填充颜色的像素点:

&lt;div class="heart"&gt;
&lt;!-- line 1 --&gt;
&lt;span&gt;&lt;/span&gt;
&lt;dot&gt;&lt;/dot&gt;
&lt;dot&gt;&lt;/dot&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;dot&gt;&lt;/dot&gt;
&lt;dot&gt;&lt;/dot&gt;
&lt;span&gt;&lt;/span&gt; &lt;!-- line 2 --&gt;
&lt;dot&gt;&lt;/dot&gt;
&lt;dot&gt;&lt;/dot&gt;
&lt;dot&gt;&lt;/dot&gt;
&lt;dot&gt;&lt;/dot&gt;
&lt;span&gt;&lt;/span&gt;
&lt;dot&gt;&lt;/dot&gt;
&lt;dot&gt;&lt;/dot&gt;
&lt;dot&gt;&lt;/dot&gt;
&lt;dot&gt;&lt;/dot&gt; &lt;!-- line 3 --&gt;
&lt;dot&gt;&lt;/dot&gt;
&lt;dot&gt;&lt;/dot&gt;
&lt;dot&gt;&lt;/dot&gt;
&lt;dot&gt;&lt;/dot&gt;
&lt;dot&gt;&lt;/dot&gt;
&lt;dot&gt;&lt;/dot&gt;
&lt;dot&gt;&lt;/dot&gt;
&lt;dot&gt;&lt;/dot&gt;
&lt;dot&gt;&lt;/dot&gt; &lt;!-- line 4 --&gt;
&lt;dot&gt;&lt;/dot&gt;
&lt;dot&gt;&lt;/dot&gt;
&lt;dot&gt;&lt;/dot&gt;
&lt;dot&gt;&lt;/dot&gt;
&lt;dot&gt;&lt;/dot&gt;
&lt;dot&gt;&lt;/dot&gt;
&lt;dot&gt;&lt;/dot&gt;
&lt;dot&gt;&lt;/dot&gt;
&lt;dot&gt;&lt;/dot&gt; &lt;!-- line 5 --&gt;
&lt;span&gt;&lt;/span&gt;
&lt;dot&gt;&lt;/dot&gt;
&lt;dot&gt;&lt;/dot&gt;
&lt;dot&gt;&lt;/dot&gt;
&lt;dot&gt;&lt;/dot&gt;
&lt;dot&gt;&lt;/dot&gt;
&lt;dot&gt;&lt;/dot&gt;
&lt;dot&gt;&lt;/dot&gt;
&lt;span&gt;&lt;/span&gt; &lt;!-- line 6 --&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;dot&gt;&lt;/dot&gt;
&lt;dot&gt;&lt;/dot&gt;
&lt;dot&gt;&lt;/dot&gt;
&lt;dot&gt;&lt;/dot&gt;
&lt;dot&gt;&lt;/dot&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt; &lt;!-- line 7 --&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;dot&gt;&lt;/dot&gt;
&lt;dot&gt;&lt;/dot&gt;
&lt;dot&gt;&lt;/dot&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt; &lt;!-- line 8 --&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;dot&gt;&lt;/dot&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;span&gt;&lt;/span&gt;
&lt;/div&gt;

居中显示:

html,body{
height: 100%;
display: flex;
align-items: center;
justify-content: center;
background: linear-gradient(silver, white);
}

设置心形的样式:

.heart {
display: grid;
grid-template-columns: repeat(9, 1fr);
grid-gap: 2px;
} .heart &gt; * {
width: 1em;
height: 1em;
border-radius: 0.1em;
font-size: 30px;
} .heart dot{
background: red;
}

定义淡入淡出动画:

.heart dot{
filter: opacity(0);
animation: animation 5s ease-out infinite;
} @keyframes animation{
0%{
filter: opacity(0);
transform: translateY(-10em);
} 25%{
filter: opacity(1);
transform: translateY(0);
} 75%{
filter: opacity(1);
transform: translateY(0);
} 100%{
filter: opacity(0);
transform: translateY(10em);
}
}

最后,让各像素点按不同时间入场,增强动画效果:

.heart dot:nth-of-type(2n) {
animation-delay: 0.2s;
} .heart dot:nth-of-type(3n) {
animation-delay: 0.3s;
} .heart dot:nth-of-type(4n) {
animation-delay: 0.4s;
} .heart dot:nth-of-type(5n) {
animation-delay: 0.5s;
} .heart dot:nth-of-type(6n) {
animation-delay: 0.6s;
} .heart dot:nth-of-type(7n) {
animation-delay: 0.7s;
} .heart dot:nth-of-type(8n) {
animation-delay: 0.8s;
} .heart dot:nth-of-type(9n) {
animation-delay: 0.9s;
} .heart dot:nth-of-type(10n) {
animation-delay: 1.0s;
} .heart dot:nth-of-type(11n) {
animation-delay: 1.1s;
}

大功告成!

知识点

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

如何用纯 CSS 为母亲节创作一颗像素画风格的爱心的更多相关文章

  1. 前端每日实战:20# 视频演示如何用纯 CSS 为母亲节创作一颗像素画风格的爱心

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

  2. 20.纯 CSS 为母亲节创作一颗像素画风格的爱心

    原文地址:https://segmentfault.com/a/1190000014837536 感想: 网格grid 又来了: fr : (剩余空间长度)单位, 1.当(50px,nfr),nfr代 ...

  3. 如何用纯 CSS 和 D3 创作一艘遨游太空的宇宙飞船

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

  4. 如何用纯 CSS 和 D3 创作一只扭动的蠕虫

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

  5. 前端每日实战:96# 视频演示如何用纯 CSS 和 D3 创作一艘遨游太空的宇宙飞船

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

  6. 如何用纯CSS布局两列,一列固定宽度,另一列自适应?

    大家都知道好多网站都是左右布局的,很多公司在笔试和面试环节也常常问这个问题.一个去网易的师兄说14年腾讯面试的时候问过这个问题,网易在笔试和面试时候也问过这个问题,还有很多互联网公司也都涉及到这个问题 ...

  7. 如何用纯 CSS 创作文本滑动特效的 UI 界面

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

  8. 如何用纯 CSS 创作一种有削铁如泥感觉的菜单导航特效

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

  9. 如何用纯 CSS 创作 404 文字变形为 NON 文字的交互特效

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

随机推荐

  1. tpframe免费开源框架又一重大更新

    tpframe在为Pc站.app接口.微信mobile站各种功能完善的基础上,又更新了一项重新的更新突破,以后你用tpframe开发网站,不须要在写那么多繁琐的依赖程序了,现在只须要写你关注的程序模块 ...

  2. 6.while循环正向反向打印一句话

    message = "伤情最是晚凉天,憔悴厮人不堪言."' count=0 num=-1 while count<len(message): print(message[co ...

  3. SQL 实战语句(9)

    1.如何同步根据部门表同步另外一个项目表的部门字段 update A set A.auditownerid=(select lp.epleaderId from (select ep.userid a ...

  4. 在服务器上执行hbase的jar包

    hadoop命令执行hbase应用jar包时的环境变量加载问题 Apache HBase ™ Reference Guide HBase, MapReduce, and the CLASSPATH

  5. 【Helvetic Coding Contest 2018】B2. Maximum Control (medium)

    Description 传送门(翻译就别想了,本人英语太垃圾) Solution 设ans[i]为设置i个船时能控制的最多星球数(看到这你可能因为是dp,然而我可以很负责地告诉你是假的) 首先一个显然 ...

  6. DP+高精度 URAL 1036 Lucky Tickets

    题目传送门 /* 题意:转换就是求n位数字,总和为s/2的方案数 DP+高精度:状态转移方程:dp[cur^1][k+j] = dp[cur^1][k+j] + dp[cur][k]; 高精度直接拿J ...

  7. cpp extern 关键字用法

    语法说明: extern 可以置于变量或者函数前,以标示变量或者函数的在别的文件中定义,提示编译器遇到此变量和函数后,在其他模块中寻找其定义.此外extern也可用来进行链接指定. 即 extern ...

  8. H5页面快速搭建之高级字体应用实践

    原文出处: 淘宝前端团队(FED)- 龙驭 背景 最近在开发一个 H5 活动页快速搭建平台,可以通过拖拽编辑图片,文字等元素组件,快速搭建出一个移动端的活动页面,基本交互和成品效果类似 PPT 软件. ...

  9. vs直接IP访问运行项目

    找到IIS Express 正在运行的项目应用程序,点击网站,会出现配置路径,找到配置路径,显示隐藏的文件夹 localhost替换成本地IP,重新运行项目,然后就可以直接通过IP访问项目,好处就是便 ...

  10. ES6—带默认值的函数参数及其作用域

    在学习ES6函数一章时,发现了一个有意思的现象,原文描述如下: 这段话主要state了3个事实: ①函数参数有默认值时,会在声明初始化阶段形成一个单独的作用域 ②这个作用域在初始化结束后消失 ③没默认 ...