首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在画布对象上使用jQuery动画

在画布对象上使用jQuery动画
EN

Stack Overflow用户
提问于 2011-03-16 23:43:21
回答 2查看 14.8K关注 0票数 7

我想用一个使用路径机制绘制的简单形状来为html5画布元素设置动画。当鼠标悬停在它上面时,我想放大它,使它更不透明,并改变颜色。我能用jQuery的animate()函数做到这一点吗?最好的方法是什么?canvas有没有一种机制来做这种动画?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-16 23:52:47

不幸的是,使用canvas (不再是这种情况--参见下面的更新)会非常困难,因为一旦您在canvas上绘制了一个路径,它只是一个像素,所以您不能像使用DOM那样将事件处理程序附加到它上。

幸运的是,如果您使用SVG而不是canvas,就可以做到这一点,因为SVG中的所有形状都是DOM节点,就像HTML中的div和span一样。

不幸的是,IE不支持SVG。

幸运的是,在IE上你可以使用VML而不是SVG。

不幸的是,您不能使用jQuery轻松地对SVG和VML对象进行动画处理。

幸运的是,有Raphaël,一个受jQuery启发很大的JavaScript库,它可以为你完成所有的工作。它在IE上使用VML,在其他浏览器上使用SVG。它适用于火狐3.0+、Safari 3.0+、Chrome 5.0+、Opera 9.5+和It 6.0+。

这就是如何制作一个红色的圆圈,当鼠标悬停在上面时,它会慢慢地变成黄色:

代码语言:javascript
运行
AI代码解释
复制
// make a Raphael "paper" similarly to an HTML5 canvas:
var paper = Raphael(10, 10, 320, 240);

// make a circle on this paper:
var circle = paper.circle(100, 80, 20);

// change some attributes:
circle.attr({
    fill: 'red'
});

// register mouse enter and mouse leave event handlers:
circle.hover(
    function() {
        circle.animate({
            fill: 'yellow'
        }, 300);
    },
    function() {
        circle.animate({
            fill: 'red'
        }, 300);
    }
);

就是这样--参见。

看看这个更复杂的,它做了一个圆圈,鼠标悬停就能做你想做的事情-放大它,使它更不透明,并改变颜色。

另请参阅我为this answer编写的关于Raphaël的this demo

更新

当我最初发布这个答案时,我写道,使用canvas很难做到你所要求的,因为你必须维护一些在canvas中不存在的对象层次结构,就像在SVG或VML中一样。这仍然是正确的,但现在有一些库可以为您完成“非常困难”的部分,例如EaselJSKineticJSPaper.jsFabric.js等(有关更多信息,请参阅由Fabric.js的作者维护的这个comparison of canvas libraries )。

票数 19
EN

Stack Overflow用户

发布于 2011-03-18 23:21:31

在这个页面上,谷歌使用了一些动画画布图标。http://www.google.com/chromeos/features.html

当你深入研究代码时,你会发现他们使用了JS Tweener。http://coderepos.org/share/wiki/JSTweener

我认为如果谷歌选择它,它比raphaelJS更可靠;)。不过,Canvas动画代码非常复杂。我几乎不明白发生了什么。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5333156

复制
相关文章
JointJS 拖动画布
效果 画布外套一层画板和一层画框,拖动画布时让画板在画框中滚动 源码 <div id="wrap" style="overflow: auto;height:300px;width:300px;background-color: darkgrey"> <div id="board" style="padding:20px"> <div id="paper"></div> </div> </div> <script> const paper = new joint.dia
路过君
2021/12/07
2K0
JointJS 拖动画布
jQuery源码研究:jQuery原型对象上的属性方法(上)
今天看下简化框架的第二部分:line: (146 - 225) 为jQ对象添加一些方法和属性。
前端_AWhile
2019/08/29
1.1K0
jQuery对象的使用
jQuery对象是由选择器选择的HTML元素的集合。它是一个类似数组的对象,可以对其进行遍历和操作。通过使用jQuery选择器选择元素后,将返回一个jQuery对象。
堕落飞鸟
2023/05/18
7060
jQuery 编程 | jQuery 动画
jQuery提供了一些列的动画基本方法,同时也提供了自定动画方案.animate()。
闻说社
2022/08/10
6.3K0
jQuery 动画
jQuery动画相关方法概况 方法 说明 实例 hide()和show() 隐藏和显示 HTML 元素。 $("#hide").click(function(){    
静默虚空
2018/01/05
2.9K0
JavaScript 动画_jquery 动画
回调函数原理:函数可以作为一个参数。将这个函数作为参数传到另一个函数里面,当那个函数执行完之后,再执行传进去的这个函数,这个过程叫做回调。
全栈程序员站长
2022/11/04
2.4K0
解决innerHtml 在Jquery上使用无效果的问题
**innerHTML是JavaScript原生的一种写法,给指定标签赋内容(并且若内容中有HTML标签,可以进行编译后显示,例:
用户9131103
2023/07/17
5070
JQuery Deferred对象使用小结
如下,打开页面时,获取默认选中的项目,同时也会初始化Combobox下拉框下拉列表数据
授客
2019/08/21
8240
JQuery Deferred对象使用小结
jQuery源码研究:jQuery原型对象上的属性方法(下)
each()方法:为每个匹配的元素集合执行回调函数,是一个jQuery版的遍历方法。
前端_AWhile
2019/08/29
9030
jQuery源码研究:jQuery对象及原型上的extend()方法
现在看到jQuery的227行,本篇读jQ的继承方法jQuery.extend()。
前端_AWhile
2019/08/29
9750
jQuery动画,案例
1.显示动画 show([s,[e],[fn]]) 内部实现原理根据当前操作的元素是块级还是行内决定, 块级内部调用display:block;,行内内部调用display:inline;
不愿意做鱼的小鲸鱼
2022/08/24
5.1K0
jQuery动画,案例
jquery animate 动画
点击动画的按钮,div的宽高就会放大。这次的放大是同时实现了width和height的变化。
Devops海洋的渔夫
2019/05/30
2.4K0
js动画效果大全_jquery 动画
在一些动画设置中,我们可以用CSS中已有的动画属性方便的设置动画效果,比如说animation动画,transition过渡,它们结合一些2D,3D变换可以达到可观的动画效果,但是涉及到更多更加复杂的动画这个时候我们还要基于JavaScript实现。在这里我们定义一个JavaScript中一个实用的函数以便今后的设置。
全栈程序员站长
2022/09/27
12.4K0
使用 jQuery Easing Plugin 增强动画过渡效果
jQuery 提供了一些诸如 show, hide, slideUp, fadeIn 等动画方法,可以方便的切换元素的显隐。更有强大的自定义动画方法 animate ,可以实现很多动画效果。为了让动画有好的过渡变化过程,官方为这些方法设置 easing 属性,但是官方没有给出很多过渡效果。
Denis
2023/04/15
6390
jQuery对象
当创建新元素(或选择现有元素)时,jQuery返回集合中的元素。jQuery的许多开发人员都认为这个集合是一个数组。.length毕竟,它有一个零索引序列的DOM元素,一些熟悉的数组函数和一个属性。实际上,jQuery对象比这更复杂。
用户7293182
2022/01/18
1.1K0
jQuery 事件对象、 jQuery 拷贝对象、jQuery 多库共存
​ jQuery 对DOM中的事件对象 event 进行了封装,兼容性更好,获取更方便,使用变化不大。事件被触发,就会有事件对象的产生。
梨涡浅笑
2020/10/27
2K0
jQuery stop() 方法用于在动画或效果完成前
可选的 stopAll 参数规定是否应该清除动画队列。默认是 false,即仅停止活动的动画,允许任何排入队列的动画向后执行。 可选的 goToEnd 参数规定是否立即完成当前动画。默认是 false。
用户7718188
2021/10/07
6750
jQuery动画与ajax
1: jQuery $(document).ready()与window.onload的区别? Jquery中$(document).ready()的作用类似于传统JavaScript中的window.onload方法,不过与window.onload方法还是有区别的。 1.执行时间 window.onload必须等到页面内包括图片的所有元素加载完毕后才能执行。 $(document).ready()是DOM结构绘制完毕后就执行,不必等到加载完毕 . 2.编写个数不同 window.onload不能同时编
小胖
2018/06/27
2.9K0
JQuery中的动画
  这两种方法是jQuery动画的最基本方法。当为元素调用show方法时相当于将该元素的display样式改为block或者inline,同理,如果当元素调用hide方法时,相当于将该元素的样式改为none;因此:$("element").hide()等同于$("element").css("display","none");
小小许
2018/09/20
2.7K0
jQuery基础--动画操作
三组基本动画 <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <title>Title</title>
eadela
2019/09/29
4.1K0
jQuery基础--动画操作

相似问题

jQuery动画以在画布上移动文本

35

在画布中动画对象

21

动态移动画布上的对象

12

可以使用ObjectAnimator在画布上为对象设置动画吗?

13

画布和Javascript对象上的Javascript动画

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档