效果预览

在线演示

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

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. loj#2542. 「PKUWC2018」随机游走(树形dp+Min-Max容斥)

    传送门 首先,关于\(Min-Max\)容斥 设\(S\)为一个点的集合,每个点的权值为走到这个点的期望时间,则\(Max(S)\)即为走遍这个集合所有点的期望时间,\(Min(S)\)即为第一次走到 ...

  2. Java | 基础归纳 | Gson && Json

    JSON: JSON就是一种数据的组织形式,用于数据传输. 地址:https://mvnrepository.com/artifact/net.sf.json-lib/json-lib/2.4 Mav ...

  3. 香港药品 ref

    --公牛牌风湿骨刺丹30粒 参考网站--http://item.jd.com/1955815605.html?gjz=0#comments-list 88 --参考网站1,没有 http://www. ...

  4. 抽象类 abstract

    抽象类就是拿来继承的抽象方法就是拿来重写的 1.用abstract可以用来修饰类或方法,分别叫抽象类和抽象方法. 2.含有抽象方法的类必须被声明为抽象类.,抽象类必须被继承,抽象方法也必须被重写. 3 ...

  5. 为页面添加favicon

    <link rel="shortcut icon" href="favicon.ico" /> 还有另一种写法,但是IE对它的支持不够好: < ...

  6. Log4net系列二:Log4net邮件日志以及授权码

    Log4net邮件发送 上篇文章我们主要介绍Log4net生成文本格式,本篇文章主要配置邮箱发送.关于项目的引用,搭建我们就不在描述,如果不太清楚,请看上篇文章, 老规矩,我们现在配置文件中添加一个a ...

  7. 原创 Repeater radio 单选和多选混合

    希望高手朋友给我留下美好的意见,在此先感谢您! 前台代码repeater: <script src="../Scripts/jquery-1.9.1.js"></ ...

  8. 进程间通信的两种实现方式(IPC)

    进程间通信的两种实现方式(IPC) IPC: iter processing communicate 进程间通信:IPC(iter process communicate)linux free-m 可 ...

  9. [ CQOI 2018 ] 异或序列

    \(\\\) Description 给出一个长为 \(n\) 的数列 \(A\) 和 \(k\),多次询问: 对于一个区间 \([L_i,R_i]\),问区间内有多少个不为空的子段异或和为 \(k\ ...

  10. 【学习笔记】深入理解js原型和闭包(7)——原型的灵活性

    在Java和C#中,你可以简单的理解class是一个模子,对象就是被这个模子压出来的一批一批月饼(中秋节刚过完).压个啥样,就得是个啥样,不能随便动,动一动就坏了. 而在javascript中,就没有 ...