2013-11-01 118 views
3

My site具有停止滚动视差效果。我用来停止滚动的代码是:滑动视差效果在Safari中不起作用

if (parseInt($("div#bg").css("top"), 10) <= -0) { 
    $('#content').css('top', (-0) + 'px'); 
    $('#logo').css('margin-top', (-142) + 'px'); 
} 

这在Chrome,Firefox和Opera中运行良好,但在Safari中没有那么多。在Safari中是否有不同的代码?我知道Safari在滚动时存在一个错误,但我无法完全找到答案。有没有一种解决方法,使它也可以在Safari中使用?或者我可以运行我的代码的某种编辑器?

回答

1

第一件事:你在布局上有一些问题,因为我甚至没有在Safari上看到你的作品库。我的确看到,所有的画廊元素都是主格子里的独立元素,没有容器,这可能导致很难控制的情况。

回到主题

parseInt($("div#bg").css("top"), 10) 

返回NaN的,我想可能是你的问题。 #bg的最高值被设置为“auto”,所以parseInt()将返回NaN,因为第一个(和所有其他字符:D)是CHAR而不是数字。

该代码正在使用Chrome,因为它的JavaScript引擎有点弹性,但实际上它不应该在那里工作,也不适用于其他浏览器。

建议: 你见过Skrollr吗?它是一个用于视差效果的开源jQuery库。它写得很好,它看起来真的可以在这里做你的一天。

http://prinzhorn.github.io/skrollr/

+0

这帮助我清楚了很多,谢谢。我试图给bg div一个顶部,但那不起作用。我更改了使用bg滚动的元素以代替滚动文档。 if($(document).scrollTop()> = 0){$('#content')。css('top',(-0)+'px'); $('#logo')。css('margin-top',(-142)+'px'); }不幸的是,因为每次我滚动时都会激活,所以网站一直闪烁。你知道一种方法可以让网站只在关键时刻检查,或者以更静态的方式检查吗? Skrollr看起来不错,但具有讽刺意味的是,它不会在Safari上运行。 –

+1

我没有看到你的答案......有很多方法。最好的做法是“雾化”你的问题。把它分成几个小动作,看看控制台,找到我向你展示过的解决方案。 我不知道任何其他解决方案的工作一样好skrollr,但肯定谷歌可以成为你的朋友,也许与“滚动parallax JavaScript库” – Edoardoo