浅谈前端技术中的贝赛尔曲线

  我胡汉三又回来了!闲话不多说,我们直奔主题。关于贝赛尔曲线的概述这就不说了,这里来介绍一下前端中的三种应用,分别是用在了CSS3(transition)、Canvas、SVG。以下贝塞尔曲线均指三次贝塞尔。

  一、CSS3

    这里贝塞尔其实是以transition动画的进行速度方式的角色出现的。大家都知道transition动画的timing-function默认为ease(慢-快-慢),用的比较多的也就是linear(匀速变化)。有了贝塞尔曲线,我们可以定制自己想要的transition的timing-function,因此CSS3为我们提供了一个新的东东——cubic-bezier(x1,y1,x2,y2),这里的(x1,y1)、(x2,y2)就是三次贝塞尔曲线的两个中间点。具体的用法我们可以就拿ease和linear举例:transition:all 3s ease用贝塞尔来表示就是transition:all 3s cubic-bezier(.25,.1,.25,1);transition:all 3s linear的话就更简单了,即transition:all 3s cubic-bezier(0,0,1,1)。transition的速度变化说白了就是贝塞尔曲线的斜率变化,这里有一个很好的网址,如果想知道具体变化规律的数值的话——http://cubic-bezier.com。

  二、Canvas

    canvas是啥我就不多说了。canvas为贝塞尔曲线专门建了个方法——bezierCurveTo()。如果要画一个三次贝塞尔曲线,这个方法也就是ctx.bezierCurveTo(x1,y1,x2,y2,x3,y3)。因为canvas的特性,贝塞尔曲线也是一个路径,必定要先把画笔移到某个点,才可以开始画路径。所以三次贝塞尔曲线的起始点并不包括在这个方法中,而应该是由这个方法前的ctx.moveTo(x,y)来规定。那么这个方法里的三个点就很好了解了,就是两个中间点加结束点。

  三、SVG

    SVG的画法其实说白了和canvas大同小异(个人感觉canvas和SVG的用法思想本来就差不太多,就是画出来东西差异很大而已)。这里需要用到SVG的一个path标签(路径标签)。在path这个标签中加入属性即可,而path标签中一共有10个标准指令加上一个非标准指令(感兴趣可以百度一下),画三次贝塞尔曲线的话就需要用到M和C指令。具体例子:<path d="M10 10 C 20 20, 40 20, 50 10">这里的"M"表示moveto,"C"表示curveto,是不是似曾相识。说了嘛canvas和svg其实用法上大同小异。也就一目了然了,还是靠着4个点在"搞事情"。

    

时间: 2024-10-02 21:25:20

浅谈前端技术中的贝赛尔曲线的相关文章

【开源】浅谈Hybrid技术的设计与实现第二弹

前言 接上文:浅谈Hybrid技术的设计与实现(阅读本文前,建议阅读这个先) PS:据说加个开源在前面阅读量高点,于是就试试咯...... 上文说了很多关于Hybrid的概要设计,可以算得上大而全,有说明有demo有代码,对于想接触Hybrid的朋友来说应该有一定帮助,但是对于进阶的朋友可能就不太满足了,他们会想了解其中的每一个细节,甚至是一些Native的实现,小钗这里继续抛砖引玉,希望接下来的内容对各位有一定帮助. 进入今天的内容之前我们首先谈谈两个相关技术Ionic与React Nativ

浅谈Hybrid技术的设计与实现

浅谈Hybrid技术的设计与实现 前言 随着移动浪潮的兴起,各种APP层出不穷,极速的业务扩展提升了团队对开发效率的要求,这个时候使用IOS&Andriod开发一个APP似乎成本有点过高了,而H5的低成本.高效率.跨平台等特性马上被利用起来形成了一种新的开发模式:Hybrid APP. 作为一种混合开发的模式,Hybrid APP底层依赖于Native提供的容器(UIWebview),上层使用Html&Css&JS做业务开发,底层透明化.上层多多样化,这种场景非常有利于前端介入,非

浅谈游戏开发中碰撞检测

原创整理不易,转载请注明出处:使用Memcached.Spring AOP构建数据库前端缓存框架 代码下载地址:http://www.zuidaima.com/share/1781569917635584.htm 数 据库访问可能是很多网站的瓶颈.动不动就连接池耗尽.内存溢出等.前面已经讲到如果我们的网站是一个分布式的大型站点,那么使用memcached实现数 据库的前端缓存是个很不错的选择:但如果网站本身足够小只有一个服务器,甚至是vps的那种,不推荐使用memcached,使用Hiberna

浅谈前端性能优化(移动端)

上一篇讲了PC端的部分:前端性能优化(PC端),这次继续说移动端的.相对于PC端的,移动web浏览器上有一些明显的特点:设备的屏幕小.新特性兼容性较好.支持一些比较新的HTML5和CSS3.需要与Native应用交互等.但移动端可用的CPU资源和网络资源极为有限,因此要做好移动端web上的优化往往需要考虑做更多的事情.首先在移动web的前端页面渲染中,PC的优化规则同样适用,此外针对浏览器也要做一些更细节的优化达到更好的效果.需要注意的是,并不是移动端的优化在PC端不适用,而是由于兼容性的原因,

浅谈PHP技术应用

序号:1210-41 黑龙江省高等教育自学考试 本科毕业论文 题    目    浅谈PHP技术 学员姓名    夏滟 专    业    计算机及应用 准考证号    010311192585 指导教师    马大龙 学    院    地理科学学院 哈 尔 滨 师 范 大 学 2012年10月1日 目    录 摘  要………………………………………………………………………………1 一.PHP技术简介…………………………………………………………………1 二.PHP开发语言的特点…………………

浅谈信息加密技术和算法

1单向散列加密 单向散列加密是指通过对不同输入长度的信息进行散列计算,得到固定长度的输出,这个散列计算过程是单向的,不可逆的.常用的单向散列算法有MD5,SHA等. 比如网站中,用户密码,一般可以进行MD5加密后保存,用户登录时,对用户输出的密码进行加密后和数据库密文进行比较,如果一致,则验证成功. 为了加强计算的安全性,可以对数据加上密钥,增加破解的难度. 推荐使用 apache common的 commons-codec的 jar包 比如(commons-codec-1.8.jar)    

浅谈SQL Server中的事务日志(二)----事务日志在修改数据时的角色

浅谈SQL Server中的事务日志(二)----事务日志在修改数据时的角色 本篇文章是系列文章中的第二篇,以防你还没有看过第一篇.上一篇的文章地址如下: 浅谈SQL Server中的事务日志(一)----事务日志的物理和逻辑构架 简介 每一个SQL Server的数据库都会按照其修改数据(insert,update,delete)的顺序将对应的日志记录到日志文件.SQL Server使用了Write-Ahead logging技术来保证了事务日志的原子性和持久性.而这项技术不仅仅保证了ACID

浅谈二维中的树状数组与线段树

一般来说,树状数组可以实现的东西线段树均可胜任,实际应用中也是如此.但是在二维中,线段树的操作变得太过复杂,更新子矩阵时第一维的lazy标记更是麻烦到不行. 但是树状数组在某些询问中又无法胜任,如最值等不符合区间减法的询问.此时就需要根据线段树与树状数组的优缺点来选择了. 做一下基本操作的对比,如下图. 因为线段树为自上向下更新,从而可以使用lazy标记使得矩阵的更新变的高校起来,几个不足就是代码长,代码长和代码长. 对于将将矩阵内元素变为某个值,因为树状数组自下向上更新,且要满足区间加法等限制

转: 浅谈C/C++中的指针和数组(二)

转自:http://www.cnblogs.com/dolphin0520/archive/2011/11/09/2242419.html 浅谈C/C++中的指针和数组(二) 前面已经讨论了指针和数组的一些区别,然而在某些情况下,指针和数组是等同的,下面讨论一下什么时候指针和数组是相同的. C语言标准对此作了说明: 规则1:表达式中的数组名被编译器当做一个指向该数组第一个元素的指针: 注:下面几种情况例外 1)数组名作为sizeof的操作数 2)使用&取数组的地址 规则2:下标总是与指针的偏移量