前言-为什么学习snap.svg.js

前阵子webAPP的技术群里有人感觉到svg+animate的形式感觉很炫,矢量图任意放大且不需要下载图片,并且在手机端效果流畅。

(矢量图与位图最大的区别是,它不受分辨率的影响。可以任意放大或缩小图形而不会影响出图的清晰度,

可以按最高分辨率显示到输出设备上,位图即相机拍出来的,由像素块组成的图片。

svg代码可使用Adobe公司的AI软件导出,该Snap.svg也是Adobe的开源项目)

虽然svg、animate并不新鲜,但由于svg的代码是由PC计算出来的,操纵它放大或缩小翻转等更加炫酷的效果。

还是使用js封装好的方法来操作更省时省事一些。

并且移动端的火爆也导致svg这项技术也越来越多的运用在项目中。

言归正传-会用jquery就会用snap.svg.js

先点击看个Demo让您感兴趣。

直接在演示页面看那个鳄鱼头就好了,鼠标移动过去会有交互式的动画。

现在我们要做的就是分析这个效果的原理是什么,不要畏惧,即便它看上去很凶(逃

开启F12选择元素 对准那个会动的上颚点击一下看看代码:

这时候我们可以看下点击该元素的代码中有一大堆好像前端从来都不需要用到的标签..(起码我一开始接触svg是这样认为的)

那我们就需要知道这些标签的作用,才能灵活的运用它们。为了通俗易懂,我只简介demo中的标签,想知道更详细的请去查下资料。

<g></g>   :理解为一个块,即那个鳄鱼并不是一张图片,是由N个g(块)组成的,就跟平时重构一样,无数个div嵌套,分离,把它看作一个容器,我们需要操纵容器来进行动画。

<polygon> :标签用来创建含有不少于三个边的图形。

<line>        :标签用来创建线条。

接下来看下源码是什么样的

我们把F12窗口缩小点放在一边,当鼠标移动到上颚的时候,观察下F12中上颚部分的这段代码,见图。

可以看到id="upper-jaw"的g标签中 transform=matrix(1,0,0,1,0,0)这六个数值在不断的变化,也就是我们所见到的动画效果。(matrix()资料我会贴在文章尾部,现在不需要去理解,比较费劲)

上面说过了,会用jquery就会用snap.svg.js,真的很简单,下面我贴代码让我们来look look,别忘了在此之前引入snap.svg.js。(下载snap,要在wamp环境下运行)

        window.onload = function () {

            var croc = Snap.select("#crocodile"),
head = croc.select("#upper-head"),
jaw = croc.select("#upper-jaw"),//获取到了鳄鱼的上颚
symbol = croc.select("#symbol"),
timer; var pivots = [
[44, 147],//matrix动画效果的值
[92, 126]
]; //鼠标离开时触发的函数-即合上大嘴
function close() {
clearTimeout(timer); head.animate({
transform: "r" + [8, pivots[0]]
}, 500, mina.backin); jaw.animate({
transform: "r" + [37, pivots[1]]
}, 500, mina.backin); timer = setTimeout(function () {
symbol.animate({
transform: "t-70,40r40"
}, 100);
}, 400);
} //鼠标hover时触发的函数-即合上大嘴
function open() {
clearTimeout(timer); head.animate({
transform: "r" + [0, pivots[0]]
}, 700, mina.elastic); jaw.animate({
transform: "r" + [0, [92, 200]]
}, 700, mina.elastic); symbol.animate({
transform: "t0,0r0"
}, 500, mina.elastic);
} timer = setTimeout(close, 50); //定义事件触发条件
croc.hover(open,
function () {
timer = setTimeout(close, 200);
}
);
};

我相信会jquery的肯定一看就懂了,无非就是获取元素,调用封装好的方法来达到效果。

篇幅原因(或者是我饿了?感觉有些地方可能没讲细,留言我会及时回复的。

接下来我们需要做的是了解Snap.svg.js的API,我剩下要做的也就是留下一堆资料地址,两袖清风了(泪..

Snap.svg.js中文API

理解CSS3 transform中的Matrix(矩阵)

最后感谢张鑫旭博客的资料。

------------------------------最后的最后(吐个槽-----------------------------------------------

我本来想贴个天鳄食月的效果。。但是没找到CDN,没贴上来,我也懒得整了..放在电脑里自己欣赏吧。。

最后..(没完了没完了

下星期三就要入职了,昨天刚拿到离职证明,离开第一家公司还是比较怀念的,虽然有点坑吧,但还是挺美好的回忆啊 ~ 感叹下( ̄︶ ̄)↗ 涨

前端技术-svg简介与snap.svg.js开源项目的使用的更多相关文章

  1. 字节跳动Web Infra发起 Modern.js 开源项目,打造现代 Web 工程体系

    10 月 27 日举办的稀土开发者大会上,字节跳动 Web Infra 正式发起 Modern.js 开源项目,希望推动现代 Web 开发范式的普及,发展完整的现代 Web 工程体系,突破应用开发效率 ...

  2. 【前端技术】一篇文章搞掂:JS

    待补充 //以下等价 if(val) if(val!=null&&val!=undefined&&val!="") //以下等价 if(!val) ...

  3. 定了,这个vue.js开源项目,面试时,一定会考问

     因为现在的网店,都是用的商城系统, 而实体店都是入座后,扫码打开网上商城进行选购(餐饮,超市等),所以,vue.js迅速开发网上购物商城系统成为了香饽饽, 本人开源2020年4月开发的购物商城系统, ...

  4. SLAM前端技术选择思考

    以前是专门做室内定位技术研究的,先后学习和分析了多种基于电磁的室内定位技术,如WiFi指纹定位(先后出现过RSSI.CTF.CIR多种指纹特征).WiFi ToF定位.低功耗蓝牙BLE以及iBeaco ...

  5. 前端开发的使用服务器环境开源项目 D2Server 可替代Apache

    推荐一个前端开发的使用服务器环境开源项目 D2Server 可替代Apache   攻欲善其事,必先利其器.前端开发,编辑器我们有了Sublime Text2,配置Server环境用……你可能会选择A ...

  6. 推荐前端开发使用的服务器环境开源项目 D2Server 可替代Apache

    攻欲善其事,必先利其器.前端开发,编辑器我们有了Sublime Text2,配置Server环境用……你可能会选择Apache,为什么呢?因为能供选择的选项实在太少.而现在,我向大家推荐一个针对前端开 ...

  7. Snap.svg – 现代 Web 开发必备的 JavaScript SVG 库

    SVG 是一种很好的 Web 技术方案,可以用来创建互动,在任何大小的屏幕上都会很好看.与分辨率无关的矢量图形.而这里推荐的 Snap.svg 这个 JavaScript 可以让你像 jQuery 操 ...

  8. Pizza Pie Charts – 基于 Snap SVG 框架的响应式饼图

    Pizza Pie Charts 是一个基于 Adobe 的 Snap SVG 框架的响应式饼图插件.它着重于集成 HTML 标记和 CSS,而不是 JavaScript 对象,当然Pizza Pie ...

  9. SVG系列教程:SVG简介与嵌入HTML页面的方式

    地址:http://www.w3cplus.com/html5/svg-introduction-and-embedded-html-page.html 随着技术向前的推进,SVG相关的讨论也越渐频繁 ...

随机推荐

  1. C# 实现将PDF转文本的功能

    这篇文章最初只描述使用 PDFBox 来解析PDF文件.现在它已经被扩展到包括使用 IFilter 和 iTextSharp 的例程了.  这篇文章和对应的Visual Studio项目已经更新到目前 ...

  2. ubuntu下wine打开自由们找不到MFC42.DLL重新安装的解决方法

    一直在找ubuntu下的X墙工具,看到大部分的都是ssh和tor的,但是tor下载不到,找了很多方法,没有办法,只能用FG了.但是Fg是运行在windows系统下的程序. 只好再安装一遍wine,用终 ...

  3. TOP 100 MISSPELT/MISSPELLED WORDS IN ENGLISH

    acceptable accidentally accommodate acquire  acquit a lot amateur apparent argument atheist believe ...

  4. 指定Action、Category调用系统Activity

    1.Intent对象详解 Android的应用程序包含三种重要组件:Activity.Service.BroadcastReceiver,应用程序采用一致的方式来启动它们----都是依靠Intent来 ...

  5. C51系列RAM寄存器表

    特殊功能寄存器地址表 SFR 符号 字节 地址 位地址和位名称 D7 D6 D5 D4 D3 D2 D1 D0 P0口 P0 80H P0.7 P0.6 P0.5 P0.4 P0.3 P0.2 P0. ...

  6. 调试单片机内部扩展RAM

    51单片机内部只有128字节的RAM(8051),而8052有256字节的RAM,低128字节RAM直接或间接寻址都可以,高128字节RAM与SRF特殊功能寄存器共用地址,SFR只能直接寻址,高128 ...

  7. C51的编程规范

    现在单片机的程序设计,C51已经得到广泛的推广和应用,算是单片机的主流设计程序,甚至可以说作为单片机开发人员必须要掌握的一门语言了.作为一门工具,最终的目的就是实现功能.在满足这个前提条件下,我们希望 ...

  8. iOS 操作系统架构

    Mac OS 和 iOS 操作系统架构 做iOS开发已经半年多了,但是感觉对iOS开发的理解却还只停留在表面,昨天刚把两个项目结了,今天打算学了一下iOS系统的架构,以便于更好的理解和开发. 首先看一 ...

  9. HDOJ 1326 Box of Bricks(简单题)

    Problem Description Little Bob likes playing with his box of bricks. He puts the bricks one upon ano ...

  10. bzoj2019 [Usaco2009 Nov]找工作

    Description 奶牛们没钱了,正在找工作.农夫约翰知道后,希望奶牛们四处转转,碰碰运气.而且他还加了一条要求:一头牛在一个城市最多只能赚D(1 <= D <= 1,000)美元,然 ...