2015-01-17 69 views
0

我遇到了Firefox處理我構建的網站的方式問題。我認爲這個問題與FF測量元素高度的方式以及Stellar.js與這些高度相互作用的方式有關。因此,當我在IE,Chrome或Safari中訪問它時,第一次訪問它時,所有內容都會正常加載。您會注意到,在這些瀏覽器中,當您單擊導航項目並對它們產生視差效果時,照片會出現在粉色前景圖形內的指定位置。但是,當我在FF中訪問它時,首次訪問的圖像處於奇怪的位置。如果我點擊刷新/按'f5',問題突然被修復,圖像都在正確的位置。但是,一旦我清除我的緩存並重新加載頁面,圖片就再次出現在錯誤的地方,直到我再次刷新。當使用Stellar.js時,絕對定位的元素在FireFox中未正確定位

(我會建議首先訪問網站比FF以外的東西,所以你能明白我的意思與圖像位置)http://www.thelovestrange.com/

頁面的基本結構是5格的設置是這樣的:

<div class='slide' id="slide1" > 

    <img class='parallaxing_image_in_background' /> 

    <div class='foreground' > 
      <img class='portion_of_pink_foreground_image' /> 
    </div> 

</div> 

幾乎所有的網站定位和寬度/高度都是用百分比完成的。 .slide的大小由.foreground的寬度設置爲200%,然後.foreground img設置寬度:100%,height:auto。因此,.foreground最終成爲窗口的200%,高度是圖像最終縮放到的任何值。

我認爲問題出在FF讀取.slide div高度的方式。這幾乎就像你第一次訪問這個頁面,在stellar.js加載之前它沒有註冊.slide的時間高度,因爲高度沒有在css中明確聲明。所以,stellar.js不知道如何正確定位元素。但是,刷新時,高度已被緩存,因此下次加載時,它可以正確定位元素。我可以確認,如果我在CSS中設置了.slide的高度,則問題不會發生,並且元素每次都能正確定位。問題是,如果我這樣做,網站的響應速度就會崩潰。

我試過檢查一些關於FF如何處理元素高度的文檔時,他們沒有聲明,但我找不到任何解釋這一點。我試圖對stellar.js對象進行一些調整,但最終,在第一次頁面訪問中唯一能夠正確定位的是如果這些.slide div的高度在css中明確定義的話。

很顯然,這是不是一個很好的思考爲用戶訪問我的客戶的網站,而不是正確地看到它的第一次嘗試:)

任何想法或意見?任何額外的信息,我可以給或測試運行?我很難過。

回答

0

我找到了解決辦法:

高度不正在$(文件)。就緒(前),因爲它們是基於.forground圖像高度的調用的腳本stellar.js。該文件已準備好,但圖像不一定加載(據我瞭解)。我在$(window).load()中包裝了stellar.js調用,因此所有的內容(包括圖像)都會在它嘗試執行它的計算和放置parallaxing圖像之前加載,WA LA!問題解決了。