使用 JQuery 的水平页面动画

Posted

技术标签:

【中文标题】使用 JQuery 的水平页面动画【英文标题】:Horizontal Page Animation with JQuery 【发布时间】:2012-11-02 01:33:48 【问题描述】:

我正在尝试制作一个带有水平页面动画的网站。目前,我正在使用在此站点上找到的插件。 http://manos.malihu.gr/horizontal-page-animation-to-id-with-jquery/

这是我的问题:

我决定添加更多页面,例如#c7 和 #c8。我还将容器的宽度调整为 13500px 以适应 8 个页面。现在,如果您单击内容 7 和内容 8,则滑动可以工作。但是,如果您从第 8 页单击第 1 - 7 页,它将捕捉到这些页面。我怎样才能有一个干净的页面过渡?例如如果从第 6 页点击第 4 页,则过渡是平滑的。

我已经浏览了 js 文件,并使用了 css,但我似乎无法解决我遇到的问题。希望能有一双新的眼睛来看看这个谢谢。

希望你能帮忙。

编辑: 添加了指向示例页面的链接。尝试单击第 8 页或第 9 页。在该页面中,单击第 1 -7 页。它有那种活泼的动画,而且过渡并不流畅。

http://dl.dropbox.com/u/57617407/Websites/horizontal-animate-page-to-id-jquery.html

非常感谢。

哈基莫

【问题讨论】:

无法确认这一点,但我想我读到某处的宽度限制为 10,000 像素 默认宽度为 10,000 像素。如果我添加一个新页面 #c7 并将宽度更改为 13,500,过渡仍然可以顺利进行。但是,如果我添加#c8 并将宽度更改为 17,000 或更高,则过渡变得活泼。不知道我应该玩css还是js :( 【参考方案1】:

我对此进行了调查。 简短地说:使用您那里拥有的更新版本的库。

“有点”更长的解释:

首先 - 这是什么?“活泼”的动画之所以会发生,是因为点击时(动画开始时),它会立即在容器上“向左”下降到 0(无论您选择什么)。然后它会平滑地将“左”属性设置为您选择的条目(从零开始)。而且因为它必须滚动浏览所有条目(就像选择了第一个条目一样),这看起来很尴尬。人眼无法注意到这种快速变化。调试器是我们的朋友。

下一步 - 什么时候发生?通过反复试验,我发现了一个条件:如果在动画开始时“左”甚至小于 -10000 像素(或者可能是 -11000,不确定)。

最后 - 为什么会发生? 答案很简单。这是一个错误。这已经被修复了。 因此,请尝试将支持此页面的所有脚本更新为最新版本。 That's the change I found about that (clickable).

我是如何发现的:

如果您选择了一个已经被选中的条目怎么办?大多数行为正常 - 保持空闲状态。但最后一个会降到第一个,然后自己制作动画。 Chrome 开发者工具可以创造奇迹(Chrome 中的 F12)。类似的东西:Opera 中的 Dragonfly(基于 Presto,即 12.XX 或更早版本,在 v15 中与 Chrome 相同)和 Firefox 中的 Firebug。 我偶然发现了this entry on jQuery bug tracker (clickable as well),它可能包含立即修复的信息,无需更新。如果您不介意挖掘缩小的 JS,这很难。 选择具有第一个活动的最后一个条目会产生与您所说的“快速动画”完全相同的效果。

【讨论】:

非常感谢。说实话,我实际上停止在该网站上工作。我想现在我会再次打开它。【参考方案2】:

它似乎在演示页面http://manos.malihu.gr/tuts/horizontal-animate-page-to-id-jquery.html 上工作得很好(我用 firefox 10 和 chromium 22 进行了测试),所以我怀疑问题是与您页面中的其他脚本有冲突..

我的建议是,尽量禁用其他可能干扰的东西,然后(如果滑动效果正常)重新启用它们,以找出导致故障的原因。 .

【讨论】:

感谢您的回复。实际上,出于测试目的,我只包含插件中的 js 脚本。演示页面工作正常,但只有第 1 - 6 页。我添加了第 7,8 和 9 页。第 7 页适用于我,但第 8 页和第 9 页有那个奇怪的过渡的东西。我将编辑我的帖子以包含一个示例页面来向您展示我的意思。

以上是关于使用 JQuery 的水平页面动画的主要内容,如果未能解决你的问题,请参考以下文章

jQuery:动画宽度/高度,但保持居中

使用水平滚动处理 React 动画

如何在jQuery中无限水平滚动图像?

jQuery图片水平滑动延迟加载动画

如何使用 jQuery 连续移动对象

为啥 jQuery 必须接收 2 个对象:使用动画滚动整个页面时的 body 和 html?