码迷,mamicode.com
首页 > 其他好文 > 详细

强大的svg操作库——Raphael

时间:2017-12-12 21:36:25      阅读:311      评论:0      收藏:0      [点我收藏+]

标签:pat   gre   变形   linear   动画   out   click   let   nim   

先常规先引入Raphael库:

<script src="raphael.js" type="text/javascript"></script>

然后就很简单了,直接操作,也不用再手动写svg什么的。

1.新建画布

//x,y是画布的定位,w,h是画布的宽高
let paper = Raphael(x,y,w,h);

2.建立图形

// Raphael总共有6种图形画,其中path是万能的
let rect = paper.rect(50,50,200,100);
let circle = paper.circle(400,200,50);
let ellipse = paper.ellipse(750,200,100,80);
let path = paper.path(‘M 250,250 L 250,250 450,400 50,400 Z‘);
let img= paper.image(‘1.jpg‘,550,250,428,252);
let text= paper.text(250,500,‘哈哈哈‘);

3.改变图形属性和样式

//Rapheal有两种改变属性样式的方法attr和animate

//attr和jq的一样,既可以传json又可以传单个
circle.attr(‘fill‘,‘#a00‘);
ellipse.attr({‘fill‘:‘blue‘,‘stroke-width‘:‘10‘});

//animate先传改变的属性样式的json,再传动画时间,再传动画插值方法
//插值方法大概有linear,easeIn,easeOut,bounce,elastic,backIn,backOut
rect.animate({stroke:‘#a33‘,fill:‘green‘,‘stroke-width‘:‘20‘,‘stroke-opacity‘:‘.5‘,width:‘100‘,rx:‘20‘,rt:‘40‘},800,‘bounce‘);

4.图形绑定事件

事件大概有click、hover、mousedown、mousedown、mousemove、mouseup、touchstart、touchmove、touchend。。。。

//和jq绑定事件差不多,例如下面下这个,hover就执行第一个,buhover就执行第二个
path.hover(function(){
     path.animate({path:‘M 450,250 L 450,300 450,600 80,500 Z‘,‘fill‘:‘#fc0‘},800,‘bounce‘);
},function(){
     path.animate({path:‘M 250,250 L 250,250 450,400 50,400 Z‘,‘fill‘:‘#0fc‘},800,‘bounce‘);
})

5.变形

transform是被集成到了attr和animate里面了

img.attr({‘transform‘:‘t50,200 r30 s1.2,1‘})
img.animate({‘transform‘:‘t50,200 r30 s1.2,1‘},800,‘linear‘)

对应变换字母 translate:t———rotate:t———scale:s,变换都是不带单位的(所有svg操作都不应该带单位),和css3的变换是一样都是自身坐标轴变换,和原生的svg不一样

强大的svg操作库——Raphael

标签:pat   gre   变形   linear   动画   out   click   let   nim   

原文地址:http://www.cnblogs.com/amiezhang/p/8028943.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!