我已经写了一堆jQuery的东西来帮助我的朋友用他的在线作品集,可以在这里找到:http://bradleyrogerson.com/(以供我将要描述的参考)。
这里也是javascript的直接链接:http://bradleyrogerson.com/static/js/actions-take2.js
这是一个相当长的文件,所以如果我不直接将它全部放在Stack Overflow的代码块中,那可能是最好的。
问题本身非常简单,你可以在网站上轻松看到破碎的动画(上面的链接)。
本质上我的hideProject()
函数基本上隐藏了项目,然后将所有项目的原始概述滑回到视图中,因为一个我根本找不到的原因而触发了4次。
这方面的关键问题是,在动画的最后一次回调中,我为scrollLeft
&的body
属性设置了动画。 html
元素,以便在转到“更多信息”视图之前可视地滑回到您停止的位置。
因为动画被触发了4次,所以大约有1.2秒的窗口,其中视口是动画的,这有效地破坏了在此期间向右滚动的能力。
这可以通过立即转到his site并点击最右边的图像(水平滚动页面布局)轻松复制,然后一旦查看了项目,只需单击其中一个图像即可触发hideProject()
函数,一旦视口动画,尽可能立即向左滚动。
你会注意到你仍然无法使用动画仍然按下你的尝试向左推出窗口,一次又一次地强制scrollLeft
值(4次)。
我已经很好地评论了javascript file(至少我是这么认为的)所以一旦打开就应该很容易阅读和理解。
我真的很感激这个问题的答案,如何解决它,但最重要的是一些关于为什么它首先破坏的建议,这样我就可以从中吸取教训而不再犯这个错误。
非常感谢您阅读。
Jannis
注意:相关功能(至少我认为这是原因)位于this file的line 212
。
答案 0 :(得分:1)
添加断点后,我只能看到此函数触发两次,一次因为你将它绑定到元素#project-media的click事件,另一个因为你将它绑定到hashchange()事件。只需使click事件触发hashchange()而不是调用hideProject()或简单地删除绑定。绑定在331行进行。