如何为 jQueryUI 定位元素设置动画

Posted

技术标签:

【中文标题】如何为 jQueryUI 定位元素设置动画【英文标题】:How to animate a jQueryUI positioned element 【发布时间】:2011-12-14 13:16:20 【问题描述】:

我有一个使用 jqueryUI 的位置定位的元素。

我需要能够通过调整偏移量来为这个元素设置动画(以便它保持相对于在初始化 jQueryUI 位置时指定的另一个元素。

我正在定位元素,如图所示:-

$('#toparrow').position (

            of: $('#relative_element'),
            my: 'center top',
            at: 'center top',
            offset: "0 0"

        )

并且想将偏移量设置为“0 -30”。

我怎样才能做到这一点?

【问题讨论】:

【参考方案1】:

定位后,您可以制作相对动画:

$('#toparrow').position(
  of: $('#relative_element'),
  my: 'center top',
  at: 'center top',
  offset: '0 0'
);

$('#toparrow').animate(
    top: '-=30px'
);

由于缺少 = 符号的混乱,这里有一个 jsfiddle 来说明:

http://jsfiddle.net/bryanjamesross/Vz4WV/

【讨论】:

感谢 bryan,但不幸的是,这不会产生我想要的效果,因为我需要为“顶部”属性设置动画。这对于一个元素当然很好,但是我动态生成了许多这些元素,它们在另一个元素下显示。这意味着“顶部”属性最终对于所有元素都是相同的。我需要元素从它的原始位置移动 30px,而不是从顶部移动到 30px,如果这有意义的话。我的问题没有更清楚是我的错,我很抱歉。 好的,我已经改成这样了。就从它的原始位置动画它而言,它确实如此。这就是为什么它是一个 relative 动画。这就是'-30px'的作用。它告诉 jQuery 动画,从 它当前的位置,-30px 向上。 对不起...我应该提到我在设置元素样式时使用 position:absolute ,以免它们影响任何周围的元素,您的解决方案当然适用于将它们设置为 position:relative ,不幸的是,这在这种情况下不适合,并且 position:absolute 通过 css 设置(为了将元素堆叠在页面布局的顶部)它们都动画到相同的高度,而不是相对于原始位置的 -30px。再次为没有提供足够的细节而道歉。 我的错,我错过了一个字符(一个 = 符号)。它现在应该做你想做的事 太棒了!它工作得很好!也很简单......我实际上不知道你可以这样做来强制相对动画。非常感谢 Bryan,非常感谢。

以上是关于如何为 jQueryUI 定位元素设置动画的主要内容,如果未能解决你的问题,请参考以下文章

如何为具有约束的 UIView 设置动画?

如何为 JQuery addClass/removeClass 函数设置动画?

SwiftUI 和 MVVM:当视图模型更改“数据源”(`@Publish items`)本身时,如何为“列表元素更改”设置动画

如何为 iphone 应用程序设置动画以逐字显示文本?

如何为手动“动画”重新排队对 UIView drawRect 的请求

如何为 CAShapeLayer 路径和填充颜色设置动画