效果预览

在线演示

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

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#2541. 「PKUWC2018」猎人杀

    传送门 思路太清奇了-- 考虑容斥,即枚举至少有哪几个是在\(1\)号之后被杀的.设\(A=\sum_{i=1}^nw_i\),\(S\)为那几个在\(1\)号之后被杀的人的\(w\)之和.关于杀了人 ...

  2. 如何正确访问Redis中的海量数据?服务才不会挂掉!

    一.前言 有时候我们需要知道线上的Redis的使用情况,尤其需要知道一些前缀的key值,让我们怎么去查看呢?并且通常情况下Redis里的数据都是海量的,那么我们访问Redis中的海量数据?如何避免事故 ...

  3. Luogu P1262 间谍网络 【强连通分量/缩点】By cellur925

    题目传送门 真是一道好题呀~~~~qwq 知道这题是tarjan,但是想了很久怎么用上强连通分量.因为样例们...它显然并不是一个强联通分量! (被样例迷惑的最好例子) 然后...就没有然后了...感 ...

  4. Codeforces Round #510 (Div. 2) A&B By cellur925

    第一次CF祭== 由于太菜了只做了前两题== 因为在第一题上耗费时间太多了,我还是太菜了==. A. Benches time limit per test 1 second memory limit ...

  5. iOS WKWebView 加载进度条、导航栏返回&关闭 (Swift 4)

    导航: 1.加载进度条 2.导航栏增加返回.关闭按钮 加载进度条 效果图 代码如下: self.progressView.trackTintColor = UIColor.white self.pro ...

  6. 线段树(成段更新) POJ 3468 A Simple Problem with Integers

    题目传送门 /* 线段树-成段更新:裸题,成段增减,区间求和 注意:开long long:) */ #include <cstdio> #include <iostream> ...

  7. Elipse 无法启动问题(转)

    来源: <http://www.cnblogs.com/coding-way/archive/2012/10/17/2727481.html> 当选择完workspace之后,eclips ...

  8. SpringCloud开发学习总结(七)—— 声明式服务调用Feign(二)

    参数绑定 在上一章的示例中,我们使用Spring Cloud Feign实现的是一个不带参数的REST服务绑定.然而现实系统中的各种业务接口要比它复杂得多,我们有时会在HTTP的各个位置传入各种不同类 ...

  9. 482 License Key Formatting 注册码格式化

    详见:https://leetcode.com/problems/license-key-formatting/description/ C++: class Solution { public: s ...

  10. 【C#】什么时候使用virtual什么时候使用abstract,(另附override/new区别)

    一.C#中virtual与abstract的区别(引用“姓吕名布字子乔”的文章) C#的virtual & abstract经常让人混淆,这两个限定词都是为了让子类进行重新定义,覆盖父类的定义 ...