当前位置:首页 > JavaScript

js实现svg

2026-04-07 03:18:16JavaScript

SVG 基础概念

SVG(Scalable Vector Graphics)是一种基于 XML 的矢量图形格式,可直接嵌入 HTML 或通过 JavaScript 动态操作。

在 HTML 中嵌入 SVG

直接通过 <svg> 标签嵌入静态 SVG 内容:

<svg width="200" height="200">
  <circle cx="100" cy="100" r="50" fill="red" />
</svg>

使用 JavaScript 动态创建 SVG

通过 DOM API 动态生成 SVG 元素并添加到页面:

js实现svg

const svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
svg.setAttribute("width", "200");
svg.setAttribute("height", "200");

const circle = document.createElementNS("http://www.w3.org/2000/svg", "circle");
circle.setAttribute("cx", "100");
circle.setAttribute("cy", "100");
circle.setAttribute("r", "50");
circle.setAttribute("fill", "blue");

svg.appendChild(circle);
document.body.appendChild(svg);

操作 SVG 属性

通过 JavaScript 修改已有 SVG 元素的属性:

const circle = document.querySelector("circle");
circle.setAttribute("fill", "green"); // 修改填充颜色
circle.setAttribute("r", "30");      // 修改半径

事件监听

为 SVG 元素添加交互事件(如点击、悬停):

js实现svg

const circle = document.querySelector("circle");
circle.addEventListener("click", () => {
  circle.setAttribute("fill", "purple");
});

动画实现

通过 CSS 或 JavaScript 实现 SVG 动画:
CSS 动画示例

circle {
  transition: fill 0.3s ease;
}
circle:hover {
  fill: orange;
}

JavaScript 动画示例
使用 requestAnimationFrame 实现动态效果:

let angle = 0;
function animate() {
  const circle = document.querySelector("circle");
  const x = 100 + 50 * Math.cos(angle);
  const y = 100 + 50 * Math.sin(angle);
  circle.setAttribute("cx", x);
  circle.setAttribute("cy", y);
  angle += 0.05;
  requestAnimationFrame(animate);
}
animate();

使用第三方库

简化复杂操作可使用库如 Snap.svgD3.js
D3.js 示例

d3.select("body")
  .append("svg")
  .attr("width", 200)
  .attr("height", 200)
  .append("circle")
  .attr("cx", 100)
  .attr("cy", 100)
  .attr("r", 50)
  .attr("fill", "teal");

注意事项

  • 创建 SVG 元素需使用 document.createElementNS 并指定命名空间 http://www.w3.org/2000/svg
  • SVG 属性(如 cxfill)需通过 setAttribute 修改,而非直接赋值。
  • 动态生成的 SVG 需确保插入到 DOM 中可见。

标签: jssvg
分享给朋友:

相关文章

jquery.js

jquery.js

jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互等操作。以下是关于 jQuery.js 的核心信息和使用方法: 获…

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整数…

js实现防洪

js实现防洪

防抖(Debounce)实现 防抖的核心思想是在事件触发后延迟执行回调函数,若在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口调整等场景。 function debounce(func,…

利用js实现

利用js实现

使用 JavaScript 实现 在 JavaScript 中,可以通过多种方式实现功能,具体取决于需求。以下是几种常见的方法: 方法一:使用原生 JavaScript // 示例代码 funct…

js实现视口

js实现视口

js实现视口检测的方法 使用JavaScript检测元素是否进入视口(viewport)可以通过Intersection Observer API或手动计算元素位置实现。以下是两种常见方法: Int…

js计算器的实现

js计算器的实现

实现基础结构 HTML部分需要创建计算器的基本框架,包含显示区域和按钮。使用<div>容器包裹整个计算器,内部设置一个显示屏和多个按钮。 <div class="calculato…