【开源宝藏】30天学会CSS - DAY8 第八课 跳动的爱心动画

下面是一个逐步拆解教程 ,带你手把手复刻这个 跳动的爱心动画 。你将学到如何通过 CSS 画出一个心形,并配合 @keyframes 实现心跳效果。


🎯 效果简介

  • 页面背景为深灰色。
  • 页面中央显示一个粉红色爱心图案。
  • 爱心随着节奏跳动(缩放 + 放大)。

🧱 第 0 步:项目结构

复制代码
heart-beat-animation/
├── index.html     # HTML 文件,定义结构
└── style.css      # CSS 文件,控制样式与动画

🔤 第 1 步:HTML 结构

打开 index.html,内容非常简单:

html 复制代码
<!DOCTYPE html>
<html lang="pt-br">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="style.css">
    <title>Coração</title> <!-- 葡萄牙语:心脏/爱心 -->
</head>
<body>
    <div class="coracao"></div> <!-- 一个 div 就是爱心 -->
</body>
</html>

✅ 说明:

  • <div class="coracao"></div>:整个爱心动画就是靠这一个 div 完成的。
  • 后续我们会用 ::before 和 ::after 做出两个圆,与主方块合并成一个"心形"。

🎨 第 2 步:页面背景与居中

在 style.css 中,先设置全屏背景和居中布局:

css 复制代码
body {
    height: 100vh;                     /* 让 body 高度占满整个视口 */
    display: flex;
    justify-content: center;          /* 水平居中 */
    align-items: center;              /* 垂直居中 */
    font-family: 'Lato', sans-serif;  /* 可选字体 */
    background-color: #262626;        /* 深灰背景 */
}

❤️ 第 3 步:构造心形图案

接下来看 .coracao 这个类:

css 复制代码
.coracao {
    position: relative;
    width: 100px;
    height: 100px;
    background-color: rgb(247, 72, 72);  /* 红色主心块 */
    transform: rotate(45deg);            /* 旋转出心形倾角 */
    animation: batidao 1.4s linear infinite; /* 执行跳动动画 */
}

🧠 原理

  • 一个方块 100x100px,填充红色。
  • 旋转 45 度后就变成了一个"菱形"。
  • 后面会用 ::before 和 ::after 添加两个圆形,分别贴在左上和右上。
  • 三者合体就是一个心形图案。

💡 第 4 步:添加圆形伪元素

这是关键 ------ 用两个伪元素完成心形的"上两个圆"。

css 复制代码
.coracao::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgb(247, 72, 72);
    transform: translateY(-50%);
    border-radius: 50%;
}

.coracao::after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-color: rgb(247, 72, 72);
    transform: translateX(-50%);
    border-radius: 50%;
}

🔍 解析

  • .coracao::before
    • 向上移动 50%,形成左上角的半圆。
  • .coracao::after
    • 向左移动 50%,形成右上角的半圆。
  • 二者分别是一个完整圆,但我们只露出一半,使它们和主方块组合起来看起来像一个 ❤️。

💓 第 5 步:定义心跳动画

接下来是最有趣的部分:心跳效果!

css 复制代码
@keyframes batidao {
    0%   { transform: rotate(45deg) scale(1); }
    25%  { transform: rotate(45deg) scale(1); }
    30%  { transform: rotate(45deg) scale(1.4); }
    50%  { transform: rotate(45deg) scale(1.2); }
    70%  { transform: rotate(45deg) scale(1.4); }
    100% { transform: rotate(45deg) scale(1); }
}

❤️ 心跳节奏说明:

  • 0% → 25%:保持不动(收缩)
  • 30%:快速放大(跳一下)
  • 50%:稍微缩回一点点
  • 70%:再次跳起
  • 100%:回到原状态,准备下一轮

这个节奏让爱心 "砰砰跳动",形成有生命感的效果。


✅ 最终效果预览

  • 页面背景是深灰色。
  • 屏幕正中央有一个粉红色爱心。
  • 爱心以一定节奏不断跳动,大小变换显得非常有律动感。

🧪 可选拓展

  1. 调整颜色

    css 复制代码
    background-color: hotpink; /* 更少女心风格 */
  2. 添加阴影

    css 复制代码
    box-shadow: 0 0 20px rgba(255, 0, 0, 0.4);
  3. 加个"LOVE"文字

    html 复制代码
    <div class="coracao">
      <div class="texto">LOVE</div>
    </div>

    然后在 CSS 里:

    css 复制代码
    .coracao .texto {
        position: absolute;
        top: 50%;
        left: 50%;
        transform: translate(-50%, -50%) rotate(-45deg);
        color: white;
        font-weight: bold;
        z-index: 1000;
    }

📌 总结

技术点 用法说明
::before/after 制作半圆补足爱心上半部分
transform: rotate 旋转主方块成心形基本形状
scale() 缩放模拟跳动感
animation + @keyframes 完成节奏控制与循环跳动
相关推荐
DisonTangor5 分钟前
MOSS-Image-Base 实战:从文生图到 JSON 布局精准控图
人工智能·ai作画·开源·aigc·1024程序员节
舰长11512 分钟前
将百万数据插入到 Redis,有哪些实现方案?
数据结构·redis·开源
分布式存储与RustFS31 分钟前
机器要下线,数据先线上搬家:RustFS 存储池退役实操
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
计算机魔术师1 小时前
管谷歌的不是Pichai一个人,是一整层AI智能体
前端
米米商聊1 小时前
图标能点,按钮就可用了吗?键盘、名称与收藏状态
前端·javascript
Younglina2 小时前
三个晚上,我和 WorkBuddy 做了个生图网站
前端·后端·ai编程
xy34532 小时前
Axure 9.0 内联框架加载方式
前端·ui·html·axure·原型·产品设计
35岁程序员的自救之路2 小时前
10个开源免费的社区系统推荐
开源
陈随易3 小时前
副业搞钱点子之收入查看器
前端·后端
Profile排查笔记3 小时前
浏览器指纹逆向怎么分析:从网络请求追踪到 JavaScript 采集链
前端·人工智能·后端·自动化