javascript - 如何解决错误的 jQuery 动画

标签 javascript jquery html css

最近,我正在为一个需要一些元素动画的网站模板编写代码。自然地,我决定启用我的 jQuery 并使用它的一些标准库来为我的 div 设置动画。在这种情况下,我想使用 slideUp() 函数。当我编写代码并进行试验时,我注意到动画非常不稳定,所以我决定在这里和互联网上寻找线索,结果很短。

问题Div slideUp and slideDown animation choppy with inline-block display提供了一些提示,但没有任何我最终会实际使用的提示。所以我想知道:你过去是如何处理这种情况的?我将发布一个答案,其中包含我认为有用的解决方案。

最佳答案

可怕的最小高度/最小宽度

我遇到的第一个也是最常见的错误是使用最小高度或最小宽度。如前所述here ,无论您的标准高度设置如何,它都会导致动画跳动。为什么会这样?

假设您有一个高度为 75 像素且最小高度为 50 像素的 div,并且您希望使用一些动画函数将该 div 的高度降低为零(例如 slideUp())当动画开始时,它将开始从已知的总高度中减去。当它达到设置的最小高度时,它会尝试将 div 高度设置得更低,但在 display:none 被添加到元素的样式之前,它无法坚持下去,导致假定“断断续续的动画”。它实际上并不不稳定:它正在失败。如果您要在设置了最小高度(大于 0)的 div 上运行标准 animate(),例如 $("div").animate({ height:'0px' )}) ,您会发现动画只是停留在设置的最小高度。

enter image description here

这个问题的解决方案是简单地在 css 中取消设置 div 的任何最小高度,或者设置 min-height: 0; 如果最小高度在别处声明。

不幸的是没有高度/宽度

另一个常见的错误是根本不设置对象的高度(或宽度,取决于动画的方向)。这可能会导致动画功能跳转,因为它需要调整的高度计算不正确。未设置的宽度/高度可能会产生不同的结果,并且可能会成功或失败,具体取决于周围的 DOM 和包含在其中的 DOM。最佳做法是在任何想要设置动画的元素上设置高度和宽度。百分比高度/宽度很好。

填充/边距血腥填充/边距

您可能会遇到动画断断续续的问题,原因是您尝试设置动画的元素或其中的任何元素的填充/边距折叠。这是一个简单的问题,通过将 border: 1px solid transparent; 添加到您正在设置动画的元素即可解决。这为 jQuery 使用创建了一个边界,因此它基本上忽略了折叠的填充/边距。

关于javascript - 如何解决错误的 jQuery 动画,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27512908/

相关文章:

jquery - 将 CSS 样式应用于右侧的最后一个元素?

html - 获得 25% 宽度的 div 并排放置并边缘到容器 div 的边缘

html - Chrome (Mac/Windows) 中的第一个子列表项未对齐

javascript - IBM Web 操作调用 https API 不起作用

javascript - 限制来自 AJAX 响应的元素数量

javascript - 按字母顺序排列歌曲列表,不区分大小写

javascript - 根据div的最大高度排列元素

javascript - jquery promise 在解析之前可以被垃圾收集吗?

javascript - 当子元素的不透明度发生变化时,mac 上的边距会出现奇怪的行为

javascript - 如何使用@inject 绑定(bind)函数?