- SVG 演示
- SVG - 加载器
- SVG - 对话框
- SVG - 图标
- SVG - 时钟
- SVG - 拖拽
- SVG - 关键点
- SVG - 地图
- SVG - amChart
- SVG - 图表
- SVG - 平坦表面阴影
- SVG - 图像滤镜
- SVG - 文本效果
- SVG - 使用 CSS 效果的文本
- SVG - 箭头效果
- SVG - 品牌效果
- SVG - 胶状效果
- SVG - 渐变效果
- SVG - 活泼效果
- SVG - 滚动效果
- SVG - 幻灯片效果
- SVG - 标签效果
- SVG - Raphael.js 效果
- SVG - Velocity.js 效果
- SVG - Walkway.js 效果
- SVG - zPath.js 效果
- SVG - Vague.js 效果
- SVG - 变换效果
- SVG - 全屏覆盖效果
- SVG - Lazylinepainter.js 效果
- SVG - 演示游戏
- SVG - 实时 SVG 广告
- SVG 有用资源
- SVG - 常见问题解答
- SVG - 快速指南
- SVG - 有用资源
- SVG - 讨论
SVG - 交互性
SVG 图像可以对用户的操作做出响应。SVG 支持指针事件、键盘事件和文档事件。请考虑以下示例。
示例
testSVG.htm<html> <title>SVG Interactivity</title> <body> <h1>Sample Interactivity</h1> <svg width="600" height="600"> <script type="text/JavaScript"> <![CDATA[ function showColor() { alert("Color of the Rectangle is: "+ document.getElementById("rect1").getAttributeNS(null,"fill")); } function showArea(event){ var width = parseFloat(event.target.getAttributeNS(null,"width")); var height = parseFloat(event.target.getAttributeNS(null,"height")); alert("Area of the rectangle is: " +width +"x"+ height); } function showRootChildrenCount() { alert("Total Children: "+document.documentElement.childNodes.length); } ]]> </script> <g> <text x="30" y="50" onClick="showColor()">Click me to show rectangle color.</text> <rect id="rect1" x="100" y="100" width="200" height="200" stroke="green" stroke-width="3" fill="red" onClick="showArea(event)"/> <text x="30" y="400" onClick="showRootChildrenCount()"> Click me to print child node count.</text> </g> </svg> </body> </html>
解释
SVG 支持 JavaScript/ECMAScript 函数。脚本块需要放在 CDATA 块中,请考虑 XML 中的字符数据支持。
SVG 元素支持鼠标事件和键盘事件。我们使用了 onClick 事件来调用 JavaScript 函数。
在 JavaScript 函数中,document 代表 SVG 文档,可用于获取 SVG 元素。
在 JavaScript 函数中,event 代表当前事件,可用于获取发生事件的目标元素。
输出
在 Chrome 浏览器中打开 textSVG.htm。您可以使用 Chrome/Firefox/Opera 直接查看 SVG 图像,无需任何插件。Internet Explorer 9 及更高版本也支持 SVG 图像渲染。点击每个文本和矩形以查看结果。
广告