来源:自学PHP网 时间:2018-02-07 18:28 作者: 阅读:次
[导读] 我们可以通过javascript来修改SVG元素,使它产生动画效果,或者在SVG图像上监听鼠标事件等等。...
我们可以通过javascript来修改SVG元素,使它产生动画效果,或者在SVG图像上监听鼠标事件等等。 当SVG嵌入到HTML页面的时候,你可以使用javascript来操作SVG元素,就像操作其他HTML元素一样。 SVG脚本的例子下面是一个简单的SVG脚本的例子,它在按钮被点击的时候,动态修改SVG矩形的尺寸。 <svg width="500" height="100"> <rect id="rect1" x="10" y="10" width="50" height="80" style="stroke:#000000; fill:none;"/> </svg> <button id="button1" type="button" class="btn btn-primary" onclick="changeDimensions()"> 修改SVG矩形的尺寸</button> <script> function changeDimensions() { document.getElementById("rect1").setAttribute("width", "100"); } </script> 点击上面的按钮查看效果。 通过ID获取SVG的引用我们可以使用 var svgElement = document.getElementById("rect1"); 这个例子获取ID为 修改属性值在你获取了一个SVG元素的引用之后,你就可以使用 var svgElement = document.getElementById("rect1"); svgElement.setAttribute("width", "100"); 这个例子设置ID为 你还可以使用 var svgElement = document.getElementById("rect1"); var width = svgElement.getAttribute("width"); 修改CSS属性我们可以通过SVG元素的 var svgElement = document.getElementById("rect1"); svgElement.style.stroke = "#ff0000"; 同样你可以通过这个方法来设置任何CSS属性。 你还可以通过 var svgElement = document.getElementById("rect1"); var stroke = svgElement.style.stroke; 要注意的是,在某些SVG的CSS属性中,属性名称带有 element.style.stroke-width 你需要像下面这样来书写代码: element.style['stroke-width'] 事件监听你可以直接在SVG元素上添加js事件监听。这种操作和HTML元素是一样的。下面的代码中,为一个SVG矩形添加了 <rect x="10" y="10" width="100" height="75" style="stroke: #000000; fill: #eeeeee;" onmouseover="this.style.stroke = '#ff0000'; this.style['stroke-width'] = 5;" onmouseout="this.style.stroke = '#000000'; this.style['stroke-width'] = 1;" /> 这个例子在鼠标滑过SVG矩形时修改它的描边颜色和描边宽度,并在鼠标离开矩形是将描边颜色和描边宽度复位。下面是上面代码的返回结果,你可以用鼠标放上去试试。 你还可以使用 var svgElement = document.getElementById("rect1"); svgElement.addEventListener("mouseover", mouseOver); function mouseOver() { alert("事件被触发!"); } 这个例子为SVG元素添加了一个名称为 驱动SVG图形动画为了使用js来驱动SVG图形动画,你需要重复的调用javascript函数。这个函数用于改变图形的大小和尺寸。当我们使用极小的时间来改变图形的位置和尺寸的时候,图形看起来就像是在动画一样。 下面是一个简单的例子。有两个按钮,一个用于使SVG圆形水平无限循环的移动,一个用于暂停移动。 上面例子的代码如下: <svg width="500" height="100"> <circle id="circle1" cx="20" cy="20" r="10" style="stroke: none; fill: #ff0000;"/> </svg> <button type="button" class="btn btn-primary" onclick="startAnimation()"> 开始动画</button> <button type="button" class="btn btn-success" onclick="stopAnimation()"> 暂停动画</button> var timerFunction = null; function startAnimation() { if(timerFunction == null) { timerFunction = setInterval(animate, 20); } } function stopAnimation() { if(timerFunction != null){ clearInterval(timerFunction); timerFunction = null; } } function animate() { var circle = document.getElementById("circle1"); var x = circle.getAttribute("cx"); var newX = 2 + parseInt(x); if(newX > 500) { newX = 20; } circle.setAttribute("cx", newX); } 两个 在 要想使用js来更好的控制SVG图形,建议使用一些优秀的js库插件,如Snap.svg。这些js库提供大量的方法来控制SVG的动画,可以制作出非常炫酷的效果。 返回SVG教程目录 |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com