我们可以像 CSS3 一样在 jQuery 中使用类转换吗?

Posted

技术标签:

【中文标题】我们可以像 CSS3 一样在 jQuery 中使用类转换吗?【英文标题】:Can we use class transitions in jQuery like with CSS3? 【发布时间】:2012-01-18 09:53:00 【问题描述】:

有没有人知道以下问题的答案。找不到解决方案让我发疯。

我想在 jQuery 中通过添加/替换一个类并在两者之间转换来制作动画,而不是使用内联样式。

这正是 CSS3 过渡的工作原理,它非常棒,可以快速制作原型。但我想在 jQuery 中执行此操作,因为我希望它在所有浏览器中都被规范化。

我使用 jQuery animate 很长时间了,但我只用它来添加内联样式。管理起来真的很麻烦,意味着我不能用 CSS 编写最终结果并将表示层与逻辑分开。

考虑以下示例。在 CSS3 中,如果我想通过更改 div 的高度来设置 div 高度的动画,我可以这样做:

    一个 div 有一个 .object 类,它的初始高度为 100 像素。 一个事件运行,div 现在有 .object 和 .active 类。 使用 .active 类,CSS 现在将高度设置为 150 像素 使用 CSS3 过渡,我可以在 2 秒内通过缓动实现两者之间的平滑过渡。

如果我想在 jQuery 中做同样的事情:

    一个 div 有一个 .object 类,它的初始高度为 100 像素。 一个事件运行,我使用 .animate 将对象的高度设置为 150 像素 因此,CSS 现在使用内联样式将高度设置为 150 像素 使用参数,我可以通过缓动设置以毫秒为单位的速度。

您可能知道 jQuery UI 允许在 toggleClass 和 switchClass 上进行转换:

http://jqueryui.com/demos/toggleClass/

但是,令人讨厌的是,它不适用于上面的示例,因为它仅在初始类没有设置特定高度时才有效。要对此进行测试,请检查演示中的元素并为其指定高度并观察演示中断。

希望有人能帮我解决这个问题

【问题讨论】:

【参考方案1】:

您可以尝试 DOM 突变事件,例如调度。当元素的属性发生变化时。

有一些 jQuery 插件,可以模拟事件突变的行为(尽管我没有尝试过任何这些)。

但请随意在 google 上搜索有关 jQuery 中的突变事件,这可能会对您有所帮助。

【讨论】:

【参考方案2】:

你可以用http://jqueryui.com/demos/switchClass/做到这一点

(几周前我也提出了类似的问题can a .classA styles to .classB styles be animated easly?)

【讨论】:

我在问题中承认了这一点 - 如果您想保留旧课程并添加新课程怎么办?不切换。例如,我可能希望 .object 保持宽度和背景颜色,并希望 .active .object 改变高度。我很确定它不会起作用。 您需要哪些浏览器支持? 是的,所以我认为这不适合你。你可以有双重分类(.class1; .class2 然后 .class1.class2)但 IE7 不会接受它们 .class.class 在 IE7 中不受支持,但 .class .class 支持。这足以覆盖样式。您没有抓住重点,我们在这里谈论语义而不是回答问题。我希望能够在 CSS 更改之间进行转换。 很抱歉,我无法提供更多帮助...我可以为您提供使用 css3 的解决方案;抱歉,我没有看到我愿意为这个问题编程的 IE 微不足道的解决方案

以上是关于我们可以像 CSS3 一样在 jQuery 中使用类转换吗?的主要内容,如果未能解决你的问题,请参考以下文章

我怎样才能实现像jQuery的slideDown一样的向下滑动效果,但只使用CSS?

如何消除此 JQuery/CSS3 动画中的闪烁

HTML5 3D 波浪效果图片切换动画

用于获取和设置 css3 变换样式的 jQuery 插件

10款超实用jQuery/CSS3动画应用!

[小技巧]如何用css3实现导航栏像音符一样跳动起来