当前位置:首页 > CSS

css制作svg动画

2026-04-01 17:31:37CSS

SVG 动画基础

SVG(Scalable Vector Graphics)动画可通过 CSS 的 @keyframes 和动画属性实现,结合 SVG 元素的特性(如路径、填充、描边)创造动态效果。

关键方法

使用 CSS @keyframes 定义动画

通过 @keyframes 定义动画关键帧,控制 SVG 属性的变化(如 fillstroketransform):

@keyframes fadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}
@keyframes movePath {
  0% { transform: translateX(0); }
  50% { transform: translateX(50px); }
  100% { transform: translateX(0); }
}

应用动画到 SVG 元素

通过 animation 属性将动画绑定到 SVG 元素:

svg circle {
  animation: fadeIn 2s ease-in-out infinite;
}
svg path {
  animation: movePath 3s linear infinite;
}

控制 SVG 属性动画

直接修改 SVG 原生属性(如 stroke-dasharraystroke-dashoffset)实现路径绘制效果:

@keyframes draw {
  to { stroke-dashoffset: 0; }
}
svg path {
  stroke-dasharray: 1000;
  stroke-dashoffset: 1000;
  animation: draw 3s forwards;
}

响应交互事件

通过伪类(如 :hover)触发动画:

svg rect:hover {
  animation: pulse 0.5s ease-out;
}
@keyframes pulse {
  50% { transform: scale(1.2); }
}

示例代码

完整示例:

css制作svg动画

<svg width="200" height="200">
  <circle cx="100" cy="100" r="50" fill="blue" class="circle-anim"/>
  <path d="M20,100 Q100,20 180,100" stroke="red" stroke-width="2" fill="none" class="path-anim"/>
</svg>

<style>
  .circle-anim {
    animation: fadeIn 2s infinite, pulse 1.5s infinite;
  }
  .path-anim {
    stroke-dasharray: 500;
    stroke-dashoffset: 500;
    animation: draw 3s forwards;
  }
  @keyframes fadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
  }
  @keyframes pulse {
    50% { transform: scale(1.1); }
  }
  @keyframes draw {
    to { stroke-dashoffset: 0; }
  }
</style>

注意事项

  • 性能优化:优先使用 transformopacity 属性,避免频繁触发重绘。
  • 浏览器兼容性:部分 SVG 属性(如 stroke-dasharray)需在支持 SVG 的浏览器中使用。
  • 动态控制:通过 JavaScript 动态添加/移除 CSS 类实现更复杂的交互逻辑。

标签: 动画css
分享给朋友:

相关文章

css菜单制作

css菜单制作

基础水平菜单制作 使用无序列表<ul>和<li>标签构建结构,CSS设置横向排列: <ul class="horizontal-menu"> <li&g…

css表单制作

css表单制作

基础表单结构 使用HTML创建表单的基本结构,包含<form>标签及输入字段。表单通常需要action(提交地址)和method(提交方法)属性。 <form action="/s…

纯css制作幻灯片

纯css制作幻灯片

纯CSS制作幻灯片的方法 使用纯CSS制作幻灯片主要依赖CSS动画和关键帧(@keyframes)技术,结合HTML结构实现轮播效果。以下是两种常见的实现方式: 方法一:使用CSS动画和无限循环 H…

css制作相册

css制作相册

使用CSS Grid布局制作相册 CSS Grid布局非常适合创建响应式相册,能够灵活调整行列和间距。 .photo-gallery { display: grid; grid-templa…

网页制作中css中运行

网页制作中css中运行

CSS 动画基础 CSS 动画通过 @keyframes 和 animation 属性实现动态效果。@keyframes 定义动画关键帧,animation 控制动画的持续时间、速度曲线等。 定…

css制作网页

css制作网页

CSS 网页设计基础 CSS(层叠样式表)用于控制网页的视觉呈现,包括布局、颜色、字体等。以下为关键方法和示例: 基础结构 HTML 文件需链接 CSS: <link rel="styles…