【问题标题】:my javascript code looks weird in chrome我的 javascript 代码在 chrome 中看起来很奇怪
【发布时间】:2012-12-18 12:35:56
【问题描述】:

谁能帮我找出为什么这个页面在 FireFox 和 safari 中看起来不错 但在 Chrome 和 IE 中,它看起来几乎没有烦人的跳帧。

我正在使用延迟为 0 的动画来根据滚动向上或向下移动 ,所以看起来一个部分吃掉了前一个部分是一种视差,但不仅是背景,而且整个部分.

http://bksn.mx/tequilaarsenal/public/index/arsenal

我的 javascript 代码 cmets 是西班牙语,但如果需要,我很乐意翻译任何内容。

这是执行此操作的 JavaScript 代码的简短示例

tempScrollTop=0;
$(window).scroll(function(e) {

    windowTop = $(window).scrollTop(); 

    scrollDiff = tempScrollTop-windowTop;

    $("#sectionToMove").parallaxMio(p0,scrollDiff);
    tempScrollTop = windowTop;

});


$.fn.parallaxMio = function(pInicial,scrollDiff){
    if (scrollDiff < 0 ){
        //scroll down
        $(this).stop().animate({ top: '+='+scrollDiff }, 0);
    else if (scrollDiff > 0){
        //scroll up
        $(this).stop().animate({ top: '+='+scrollDiff }, 0);

    }

};

【问题讨论】:

  • @JonathandeM。它是 Javascript - 所有代码都在线...
  • 我没有发现任何区别。
  • 我也没有。看起来这可能不是问题:/
  • 尝试使用小图片作为背景;可能是图像太大,浏览器无法流畅地制作动画。试试看吧。
  • 问题在于 FF 在事件上实现了一个 delta 并为您提供了一个平滑级别。对于其他浏览器,您必须自己实现这一点,特别是如果用户有带步进器的轮子。

标签: javascript google-chrome


【解决方案1】:

你可以这样使用:

$(window).scroll(function(evt) {
    var e = window.event || evt
    var scrollDiff = e.detail?e.detail*(-120):e.wheelDelta;
    $("#sectionToMove").parallaxMio(p0,scrollDiff);
});

e.wheelDelta 存在于 FF 中,而 e.detail 存在于其余部分中,并告诉您滚动的方向和数量。另外e.wheelDelta 大部分时间是e.detail * (-120)

附:作为一个建议,尝试声明你的私有变量(例如scrollDiff),因为你会“污染”你的全局空间,并且有一刻会想知道“为什么这个变量存在于窗口中”,以及“为什么我的函数使用相同的变量名不能正常工作”。

编辑:

另见此链接:http://phrogz.net/js/wheeldelta.html

【讨论】:

  • 这个:console.log(e.details?e.details*(-120):e.wheelDelta);显示未定义,我错过了什么吗?
  • 这意味着 jQuery 不会传递 e 参数,您必须为此执行类似 var e = window.event || e 的操作。顺便说一句,我讨厌 jQuery。请人们在尝试任何库之前学习一些真正的 JavaScript。
  • 还没有:(我刚刚上传了js中的更改,包括console.log
  • 好吧...现在我疯了。 jQuery 似乎只是将该事件包装成太多麻烦。给我 10 到 15 分钟的时间来弄清楚 JavaScript 做错了什么才值得 jQuery。
  • 好的...经过长时间的搜索和 2 支雪茄,我不知道在哪里可以找到原始事件。 jQuery 就是不给你,人们说 jQuery 很好。我只是放弃,在jQuery中找到增量的唯一方法就是你这样做的方式,而且它似乎没有任何好处。按照其他人的建议尝试使用较小的图像,但我知道我已经使用过这段代码,它就像没有任何其他库的魔法一样工作。玩得开心,在您接受答案后,我将删除我的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-28
  • 1970-01-01
  • 2021-07-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多