特定属性的jquery动画
所以我使用 gRaphael 创建一些图表。这将创建一条很酷的条形图线,其中包含一些点。这些点具有...节点,其属性为 x=10 y=20。 示例
矩形 x =“135.8”y =“115.8”宽度=“8.399999999999999”高度=“8.399999999999999”r =“0”rx =“0”ry =“0”填充=“#ff0000”笔画=“无”
我想要如果可能的话,使用 jquery 为这个家伙制作动画。问题是,如果我这样做,
$("rect").click(function({ $(this).animate({ 'x':30 }); });
为了使 x 坐标具有动画效果,我猜它会因为明显的原因而不起作用?呵呵。 我还尝试将属性 x 设置为变量并尝试为其设置动画,但什么也没有。谁能帮我用 gRaphael 制作动画和 svg?
例如,这有效
$("rect").live('click',function(){ $(this).attr('x',100);});it moves the node but ofcourse doesn't animate it
谢谢!
So I'm using gRaphael to create some charts. This is creating a cool bar chart line with some dots in it. Those dots have the ... nodes with x=10 y=20 as their attributes.
Example
rect x="135.8" y="115.8" width="8.399999999999999" height="8.399999999999999" r="0" rx="0" ry="0" fill="#ff0000" stroke="none"
I want to use jquery to animate this guy if possible. The thing is if I do
$("rect").click(function({ $(this).animate({ 'x':30 }); });
In order to animate the x coordenate it doesn't work for obvious reasons I guess?? hehe.
Also I've tried setting the attribute x to a variable and trying to animate that and nothing. Can any one help me with animation and svg with gRaphael?
This for instance works
$("rect").live('click',function(){ $(this).attr('x',100);});
it moves the node but ofcourse doesn't animate it
Thanks!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
我正在开发使用 svgs 的项目。当我完成上述工作时,动画值从 0 变为任何位置,即使它在动画之前有一个值。所以我用这个来代替(cy的初始值为150):
I'm working on project which uses svgs. While I got the above to work, the animated value went from 0 to where-ever even if it has a value before the animation. So I used this instead (initial value for cy is 150):
您绝对可以通过这样做为属性添加动画效果,
而无需将该属性保存在 CSS 中。
You can definitely animate a property by doing so
You do not need to save that property in CSS.
事实上,有一种方法可以对特定属性进行动画处理:
In fact, there is a way to animate a specific attribute:
我找到了一种使用 jQuery 调用的方法,而不会遇到动画开始时属性重置为 0 的问题,就像这里的其他一些答案
假设我们想要对
width
和height 进行动画处理id 为
属性。要将其从当前值动画到 300,我们可以这样做:image
的 img 标签元素的在这种方法中,我们使用不在 DOM 内部的 div 并对其中的值进行动画处理,然后使用 div CSS 值对元素进行动画处理。不是很漂亮,但是可以完成工作,如果您需要停止动画,可以在animationDiv上调用
.stop()
。jsfiddle
I found a way to use the jQuery call without running into the problem that the attribute gets reset to 0 when the animation starts like some other answers here
Lets say we want to animate the
width
andheight
attribute of an img tag element with idimage
. To animate it from its current value to 300 we could do this:In this approach we use a div that is not inside the DOM and animate values in it, we then use the div CSS values to animate our element. Not very pretty but gets the job done, if you need to stop the animation you can call
.stop()
on animationDiv.jsfiddle
我和 @rslm 一样,正在研究 SVG 动画并需要修改 viewBox 属性。这是我的解决方案:(
注意,我使用了 ES6,所以你可能需要重写或使用 babel 来使代码兼容 ES5)
我添加了
$(window).off('scroll.staggered')....
部分以确保完整性,但您只需更改它以根据需要调用setHeaderHeight()
即可。I, like @rslm, was working on animating an SVG and needed to modify the viewBox property. This is my solution:
(note, I used ES6 so you might have to rewrite or use babel to make the code ES5 compatible)
I added the
$(window).off('scroll.staggered')....
section for completeness, but you just need to change that to callsetHeaderHeight()
as needed.您只能对具有数值的有效 CSS 属性进行动画处理。颜色可以通过一些插件进行动画处理。由于“x”不是有效的 CSS 属性,因此您将无法使用 jQuery 的内置 .anmiate() 函数为其设置动画。
我认为您必须编写自己的动画函数来增加每次超时的
x
值。You can only animate valid CSS properties that have a numeric value. Colors can be animated via some plugins. Since 'x' is not a valid CSS property, you won't be able to animate it using jQuery's built in .anmiate() function.
I think you'd have to pretty much write your own animation function to increment the value of
x
each passthrough of a timeout.