当前位置:首页 > CSS

css制作svg动画

2026-04-01 17:31:37CSS

SVG 动画基础

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

关键方法

使用 CSS @keyframes 定义动画

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

css制作svg动画

@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)实现路径绘制效果:

css制作svg动画

@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); }
}

示例代码

完整示例:

<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制作菜单

水平菜单制作 使用display: inline-block或flexbox布局创建水平菜单。设置list-style: none移除默认列表样式,添加padding和margin调整间距。 <…

css制作导航条

css制作导航条

导航条的基本结构 使用HTML的<nav>标签和<ul>列表创建导航条的基本结构。导航项通常包含链接,示例代码如下: <nav> <ul>…

css样式表制作

css样式表制作

CSS样式表制作基础 CSS(层叠样式表)用于控制网页的视觉呈现。通过CSS可以定义字体、颜色、布局等样式属性。 内联样式 直接在HTML标签中使用style属性定义样式: <p style…

css怎么制作三角形

css怎么制作三角形

使用边框制作三角形 通过设置元素的边框宽度和颜色,可以创建不同方向的三角形。将元素的宽度和高度设为0,利用边框的透明属性实现。 .triangle-up { width: 0; he…

旋转相册制作css

旋转相册制作css

旋转相册制作CSS 旋转相册通常通过CSS动画和3D变换实现,以下是一个完整的实现方法: 基础HTML结构 <div class="photo-album"> <div cla…

css表格制作

css表格制作

CSS表格制作方法 使用CSS创建表格可以通过多种方式实现,以下是常见的几种方法: 使用HTML原生表格标签结合CSS样式 <table class="styled-table">…