Menu
×
   ❮     
HTML CSS JAVASCRIPT SQL PYTHON JAVA PHP HOW TO W3.CSS C C++ C# BOOTSTRAP REACT MYSQL JQUERY EXCEL XML DJANGO NUMPY PANDAS NODEJS R TYPESCRIPT ANGULAR GIT POSTGRESQL MONGODB ASP AI GO KOTLIN SASS VUE DSA GEN AI SCIPY AWS CYBERSECURITY DATA SCIENCE
     ❯   

SVG 脚本


SVG + JavaScript

SVG 可以与 JavaScript 结合使用来修改和动画 SVG 元素。


SVG 简单脚本

在这个示例中,我们创建一个半径为 25 的红色圆形。单击按钮将半径更改为 50。

Sorry, your browser does not support inline SVG.

以下是 SVG 代码

示例

<svg width="200" height="100" xmlns="http://www.w3.org/2000/svg">
  <circle id="circle1" cx="50" cy="50" r="25" style="fill:red;" />
</svg>

<input type="button" value="更改半径" onclick="changeRadius()" />

<script>
function changeRadius() {
  document.getElementById("circle1").setAttribute("r", "50");
}
</script>
试试看 »

代码解释

  • <circle> 元素中添加一个 id 属性
  • <script> 标签内创建一个脚本
  • 使用 getElementById() 函数获取对 SVG 元素的引用
  • 使用 setAttribute() 函数更改 r 属性
  • 添加一个 <input type="button"> 元素,以便在单击时运行 JavaScript


SVG 更改 CSS

在这个示例中,我们创建一个红色圆形。单击按钮将填充颜色更改为绿色。

Sorry, your browser does not support inline SVG.

以下是 SVG 代码

示例

<svg width="200" height="100" xmlns="http://www.w3.org/2000/svg">
  <circle id="circle2" cx="50" cy="50" r="25" style="fill:red;" />
  抱歉,您的浏览器不支持内联 SVG。
</svg>

<input type="button" value="更改样式" onclick="changeStyle()" />

<script>
function changeStyle() {
  document.getElementById("circle2").style.fill="green";
}
</script>
试试看 »

代码解释

  • <circle> 元素中添加一个 id 属性
  • <script> 标签内创建一个脚本
  • 使用 getElementById() 函数获取对 SVG 元素的引用
  • 使用 style.fill 设置新的填充颜色
  • 添加一个 <input type="button"> 元素,以便在单击时运行 JavaScript

SVG 更改属性值和 CSS

在这个示例中,我们创建一个红色圆形。单击按钮将更改半径、x 坐标位置、填充颜色,并添加描边颜色。

Sorry, your browser does not support inline SVG.

以下是 SVG 代码

示例

<svg width="200" height="120" xmlns="http://www.w3.org/2000/svg">
  <circle id="circle3" cx="50" cy="60" r="25" style="fill:red;" />
</svg>

<input type="button" value="更改圆形" onclick="changeMe()" />

<script>
function changeMe() {
  var c = document.getElementById("circle3");
  c.setAttribute("r", "50");
  c.setAttribute("cx", "150");
  c.style.fill="green";
  c.style.stroke="red";
}
</script>
试试看 »

SVG 动画脚本

在这个示例中,我们创建一个红色圆形。单击两个按钮来启动和停止动画。

Sorry, your browser does not support inline SVG.

以下是 SVG 代码

示例

<svg width="600" height="100" xmlns="http://www.w3.org/2000/svg">
  <circle id="circle4" cx="50" cy="50" r="50" style="fill:red;" />
</svg>

<script>
var t = null;

function start() {
  if(t == null) {
    t = setInterval(animate, 20);
  }
}

function stop() {
  if(t != null) {
    clearInterval(t);
    t = null;
  }
}

function animate() {
  var circle = document.getElementById("circle4");
  var cx = circle.getAttribute("cx");
  var newCX = 2 + parseInt(cx);
  if(newCX > 600) {
    newCX = 50;
  }
  circle.setAttribute("cx", newCX);
}
</script>

<br/>
<input type="button" value="开始" onclick="start()" />
<input type="button" value="停止" onclick="stop()" />
试试看 »

代码解释

  • start()stop() 函数启动和停止动画
  • 动画通过设置一个计时器 (t) 来启动,该计时器使用 setInterval() 函数每 20 毫秒调用一次 animate() 函数
  • 动画通过清除 t 计时器来停止
  • 动画在 animate() 函数内执行
  • 使用 getElementById() 函数获取对 <circle> 元素的引用
  • 使用 getAttribute() 函数获取 cx 属性的值
  • 使用 parseInt() cx 属性的值转换为数字。然后在 cx 值中添加 2
  • 测试 newCX 值是否大于 600(这是 SVG “窗口” 的宽度),然后将其重置为 50(这是原始起始位置)
  • 使用 setAttribute() 函数将 newCX 值放入 <circle> 元素的 cx 属性中。这将圆形移动到新的 cx 位置

×

Contact Sales

If you want to use W3Schools services as an educational institution, team or enterprise, send us an e-mail:
[email protected]

Report Error

If you want to report an error, or if you want to make a suggestion, send us an e-mail:
[email protected]

W3Schools is optimized for learning and training. Examples might be simplified to improve reading and learning. Tutorials, references, and examples are constantly reviewed to avoid errors, but we cannot warrant full correctness of all content. While using W3Schools, you agree to have read and accepted our terms of use, cookie and privacy policy.

Copyright 1999-2024 by Refsnes Data. All Rights Reserved. W3Schools is Powered by W3.CSS.