当前位置:首页 > JavaScript

js实现svg

2026-02-02 09:49:49JavaScript

SVG 基础概念

SVG(Scalable Vector Graphics)是一种基于 XML 的矢量图形格式,可直接嵌入 HTML 或通过 JavaScript 动态操作。其优势在于缩放不失真,适合图标、图表等场景。

在 HTML 中嵌入 SVG

直接内联 SVG 到 HTML 中,可通过 DOM 操作修改属性或结构:

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

通过 JavaScript 创建 SVG

使用 document.createElementNS 创建 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", "50");
circle.setAttribute("cy", "50");
circle.setAttribute("r", "40");
circle.setAttribute("fill", "blue");

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

动态修改 SVG 属性

通过 JavaScript 直接操作已有 SVG 元素的属性:

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

实现动画效果

使用 requestAnimationFrame 或 CSS 动画实现 SVG 动态效果:

js实现svg

let angle = 0;
function animate() {
  angle += 0.02;
  const x = 50 + Math.cos(angle) * 30;
  const y = 50 + Math.sin(angle) * 30;
  myCircle.setAttribute("cx", x);
  myCircle.setAttribute("cy", y);
  requestAnimationFrame(animate);
}
animate();

事件交互

为 SVG 元素添加事件监听器实现交互:

myCircle.addEventListener("click", () => {
  myCircle.setAttribute("fill", "purple");
});

使用第三方库

若需复杂功能,可借助库如 Snap.svgD3.js

// 使用 D3.js 示例
d3.select("#mySvg circle")
  .transition()
  .duration(1000)
  .attr("r", 50);

注意事项

  • SVG 元素必须使用 createElementNS 而非 createElement
  • 坐标系统以左上角为原点 (0, 0),X 轴向右,Y 轴向下。
  • 路径(<path>)通过 d 属性定义,支持复杂图形绘制。

标签: jssvg
分享给朋友:

相关文章

js实现变形

js实现变形

使用 CSS 和 JavaScript 实现元素变形 在 JavaScript 中实现变形效果通常结合 CSS 的 transform 属性,通过动态修改该属性实现元素的旋转、缩放、倾斜或平移。 基…

js类实现

js类实现

使用类实现 JavaScript 功能 在 JavaScript 中,类(Class)是一种语法糖,基于原型继承机制。通过 class 关键字可以更直观地定义对象模板。 基本类定义 class…

js实现祖玛

js实现祖玛

实现祖玛游戏的核心思路 祖玛游戏的核心玩法是发射彩色珠子,形成三个或以上相同颜色的珠子即可消除。以下是使用JavaScript实现的基本框架。 游戏初始化 创建画布并初始化游戏状态: const…

js怎么实现异步

js怎么实现异步

异步实现方法 JavaScript中实现异步操作主要通过以下几种方式: Promise Promise是ES6引入的异步解决方案,用于处理异步操作的成功或失败状态。 const promise =…

js实现搜索

js实现搜索

实现搜索功能的方法 在JavaScript中实现搜索功能可以通过多种方式完成,以下是几种常见的实现方法。 使用数组的filter方法 通过数组的filter方法可以筛选出符合条件的数据项。假设有一个…

js实现复选框

js实现复选框

实现复选框的基本方法 使用HTML的<input type="checkbox">元素创建复选框,并通过JavaScript监听其状态变化。 <input type="checkb…