2015-10-22 79 views
-3

我想創建一個滾動操作,其中我想切換.clone類與它的轉換。它在Chrome中正常工作,但它不適用於Firefox。 有人可以幫我嗎?JQuery滾動無法在Firefox中工作

CSS:

header { 
    display: none; 
    position: absolute; 
    bottom: 0; 
    width: 100%; 
    height: 60px; 
    padding: 20px; 
    box-sizing: border-box; 
    font-size: 20px; 
    color: white; 
} 

header.clone { 
    display: block; 
    position: fixed; 
    top: -65px; 
    left: 0; 
    right: 0; 
    z-index: 999; 
    transition: 0.2s top cubic-bezier(.3, .73, .3, .74); 
    -webkit-transition: 0.2s top cubic-bezier(.3, .73, .3, .74); 
    -moz-transition: 0.2s top cubic-bezier(.3, .73, .3, .74); 
    -o-transition: 0.2s top cubic-bezier(.3, .73, .3, .74); 
    -ms-transition: 0.2s top cubic-bezier(.3, .73, .3, .74); 
    background: #3E3E3E; 
} 

JQuery的:

$(document).ready(function() { 
    var $header = $("header"); 
    $clone = $header.before($header.clone().addClass("clone")); 

    $(document).on("scroll", function() { 
     var fromTop = $("body").scrollTop(); 
     $("body").toggleClass("down",(fromTop > 800)); 
    }); 
}); 
+0

的演示將幫助我懷疑,因爲你沒有提供的HTML。 –

+6

你應該使用'var fromtop = $(window).scrollTop()',FF和IE使用'html'滾動並且只有webkit相關的瀏覽器使用'body' - 'window'是它們共同的因素, 。 – Shikkediel

+0

由於你的'scroll'事件被多次調用(太多),所以你最好在事件之外緩存jquery對象。所以,你的事件應該看起來像'$ body.toggleClass(「down」,$ window.scrollTop()> 800)''。 –

回答

3

更改您這樣的代碼,以更好地支持跨瀏覽器的滾動。使用window,而不是¨body¨ ...

$(document).on("scroll", function() { 
    var fromTop = $(window).scrollTop(); 
    // Rest of code 

}); 
+0

@Shikkediel我能做些什麼更好的? ':)' –

+2

就是以這種聲譽爲例,並以例如關閉問題爲例,因爲有大量重複項。在任何情況下,爲了個人動機,都不會重複已經提到的內容。 – Shikkediel

+1

@Shikkediel對不起。會接受你的建議。謝謝。 –

相關問題