使用CSS3+SVG绘制沿固定路径飞行的纸飞机

使用 CSS3 + SVG 绘制沿固定路径飞行的纸飞机

在现代网页设计中,动画效果可以显著提升用户体验。本文将介绍如何使用 CSS3 和 SVG 绘制一架纸飞机,并使其沿着一个固定的路径飞行。下面的示例将涵盖从创建 SVG 图像到实现动画的整个过程。

1. 创建纸飞机的 SVG 图像

首先,我们需要设计一架简单的纸飞机。使用 SVG,我们可以轻松创建一个纸飞机的形状。以下是 SVG 代码示例:

html 复制代码
<svg id="paper-plane" width="100" height="100" viewBox="0 0 100 100">
  <polygon points="10,90 50,10 90,90 50,70" fill="lightblue" stroke="blue" stroke-width="2"/>
</svg>

在这个示例中,我们使用了 <polygon> 元素来绘制纸飞机的形状。points 属性定义了纸飞机的四个顶点坐标。

2. 创建动画路径

接下来,我们需要定义纸飞机飞行的路径。我们将使用 SVG 的 <path> 元素来创建一个贝塞尔曲线作为动画路径。以下示例定义了一个简单的路径:

html 复制代码
<svg width="500" height="500">
  <path id="flight-path" d="M 50 400 C 150 100, 350 100, 450 400" fill="transparent" stroke="lightgray" />
</svg>

此路径从坐标 (50, 400) 出发,经过两个控制点,最终到达 (450, 400)。

3. 结合纸飞机和路径

接下来,我们将纸飞机和路径放在同一个 SVG 中,以便我们可以对纸飞机进行动画处理。

html 复制代码
<svg width="500" height="500">
  <path id="flight-path" d="M 50 400 C 150 100, 350 100, 450 400" fill="transparent" stroke="lightgray" />
  <polygon id="paper-plane" points="10,90 50,10 90,90 50,70" fill="lightblue" stroke="blue" stroke-width="2"/>
</svg>

4. 使用 CSS3 实现动画

最后,我们使用 CSS3 的 @keyframes 动画来实现纸飞机沿路径飞行。我们将通过 transform 属性移动纸飞机。

css 复制代码
@keyframes fly {
  0% {
    transform: translate(0, 0) rotate(0deg);
  }
  100% {
    transform: translate(400px, 0) rotate(360deg);
  }
}

#paper-plane {
  animation: fly 4s linear infinite;
}

在这个动画中,纸飞机从起点 (0, 0) 开始,经过 4 秒到达终点,并且在飞行过程中不断旋转。

5. 完整代码示例

以下是完整的代码示例,将所有部分结合在一起:

html 复制代码
<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <style>
        @keyframes fly {
            0% {
                transform: translate(0, 0) rotate(0deg);
            }
            100% {
                transform: translate(400px, 0) rotate(360deg);
            }
        }

        #paper-plane {
            animation: fly 4s linear infinite;
            transform-origin: center; /* 设置旋转中心 */
        }
    </style>
    <title>纸飞机动画</title>
</head>
<body>
    <svg width="500" height="500">
        <path id="flight-path" d="M 50 400 C 150 100, 350 100, 450 400" fill="transparent" stroke="lightgray" />
        <polygon id="paper-plane" points="10,90 50,10 90,90 50,70" fill="lightblue" stroke="blue" stroke-width="2"/>
    </svg>
</body>
</html>

6. 总结

通过以上步骤,我们成功地使用 CSS3 和 SVG 绘制了一架纸飞机,并使其沿固定路径飞行。这一过程展示了 SVG 的灵活性和 CSS 动画的强大功能。您可以根据自己的需要修改路径和动画效果,创造出更加精彩的动画效果。

相关推荐
鬼手点金8 小时前
nanoGPT/nanochat 能做出 DeepSeek/Qwen 这样的大模型吗?
服务器·前端·javascript·bug·openclaw
软件技术NINI8 小时前
美妆商城html+Css+js 4页
javascript·css·html
蛋蛋的就会顺顺的8 小时前
hot100 p0——栈,贪心算法,动态规划
java·前端·javascript·算法·leetcode·力扣
程序员Sunday8 小时前
TypeScript 的 any、unknown、never 有什么区别?
前端·面试·typescript
朱涛的自习室9 小时前
70 美金的 Beyond Compare,我让 Gemini 4 和 DeepSeek 造个开源免费版(Day 2)
android·前端·人工智能
码艺-Alimjan9 小时前
Tauri 源码备份 · 打包 & 解压 总结,源码收集之路
前端·javascript·vue.js
小马不起床9 小时前
零基础玩转 FastAPI_11:前端后台管理页面
前端·状态模式·fastapi
子非鱼a11 小时前
【文件上传】一个普普通通的edu16
前端
美狐美颜SDK开放平台11 小时前
直播APP如何实现美白滤镜功能?视频美颜SDK技术开发方案详解
前端·数据库·人工智能·音视频·美颜sdk·直播美颜sdk·视频美颜sdk
pride.li12 小时前
第03章 Python 教程-基础语法:注释与变量
服务器·前端·后端·python·算法·计算机视觉