我是靠谱客的博主 昏睡山水,最近开发中收集的这篇文章主要介绍svg的深入学习(二),觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

svg的继续探讨与研究

通过最近的学习,对svg结合javaScript方面实现了一些特效

1.鼠标触发事件的应用:

在svg中,鼠标移入移出目标区域的事件:mouseover、mouseout

例如,在svg的rect中:

<set attributeName="fill" to="#FFB5B5" begin="mouseover"/>
<set attributeName="fill" to="#FFAAD5" begin="mouseout"/>
注意:attributeName:rect的属性,to:颜色值    begin:触发的事件

2.图片移动事件:onmousedown

 在svg的rect中:οnmοusedοwn="selectElement(evt)"

 以下代码是我做项目时的js函数

    function selectElement(evt) {
        selectedElement = evt.target;
        currentX = evt.clientX;
        currentY = evt.clientY;
        currentMatrix = selectedElement.getAttributeNS(null, "transform").slice(7,-1).split(' ');

        for(var i=0; i<currentMatrix.length; i++) {
            currentMatrix[i] = parseFloat(currentMatrix[i]);
        }

        selectedElement.setAttributeNS(null, "onmousemove", "moveElement(evt)");
        selectedElement.setAttributeNS(null, "onmouseout", "deselectElement(evt)");
        selectedElement.setAttributeNS(null, "onmouseup", "deselectElement(evt)");
    }
    function moveElement(evt){
        dx = evt.clientX - currentX;
        dy = evt.clientY - currentY;
        currentMatrix[4] += dx;
        currentMatrix[5] += dy;
        newMatrix = "matrix(" + currentMatrix.join(' ') + ")";

        selectedElement.setAttributeNS(null, "transform", newMatrix);
        currentX = evt.clientX;
        currentY = evt.clientY;
    }
    function deselectElement(evt){
        if(selectedElement != 0){
            selectedElement.removeAttributeNS(null, "onmousemove");
            selectedElement.removeAttributeNS(null, "onmouseout");
            selectedElement.removeAttributeNS(null, "onmouseup");
            selectedElement = 0;
        }
    }
3.鼠标滚轮放大缩小图片事件: onmousewheel

  onmousewheel="return bigimg(this)

function bigimg(i)
    {
        var zoom = parseInt(i.style.zoom,10)||100;
        zoom += event.wheelDelta / 12;
        if(zoom > 0 )
            i.style.zoom=zoom+'%';
        return false;
    }
4.在svg中跳转到另一个页面

  <a xlink:href="xxx.html">

5.对svg图片进行渐变渲染:

<defs>
   <linearGradient id="color" x1="0%" y1="0%" x2="0%" y2="100%">
      <stop offset="0%" style="stop-color:#ffffaa;stop-opacity:1"/>
      <stop offset="100%" style="stop-color:#ffb5b5;stop-opacity:1"/>
   </linearGradient>
</defs>
以上几种效果都是我在近期项目中遇到的,查阅了好多,才得到解决,希望大家多提出意见。







最后

以上就是昏睡山水为你收集整理的svg的深入学习(二)的全部内容,希望文章能够帮你解决svg的深入学习(二)所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(67)

评论列表共有 0 条评论

立即
投稿
返回
顶部