2013-10-24 35 views
0

我目前使用的是與混合媒體可變寬度類一起使用的smoothdivscroll - 它實際上沒有設置做的事情(它喜歡所有的類都是固定寬度的,但是加上空白代碼似乎大部分工作正常使用smoothdivscroll修復多線加載

我遇到的問題是,當頁面加載內容時,它將div垂直放置在彼此之上,然後在加載所有內容時正確顯示它們。例子:

http://www.betweenmanandbeast.com/bmb_om

我明白,這是不太什麼插件在應該做的 - 但它幾乎工作正常(如果每個人都在100MB線,它會沒事的!),我覺得它只是需要一些額外的代碼的地方。

這裏是該代碼的jsfiddle:

http://jsfiddle.net/wnD3r

另外值得一提的是,當它是一個單一的自動調寬後(比如,如果你點擊「博客」),這一切都停留在一條線加載,這意味着它正確地計算一個自動寬度的類,而不是當頁面上有多個時。初始化代碼是:

$("#content").smoothDivScroll({ 
    mousewheelScrolling: "allDirections", 
    manualContinuousScrolling: true, 
    autoScrollingMode: "onStart", 
    hiddenOnStart: false 
    }); 

任何想法?

非常感謝提前!

回答

0

我不是100%確定我理解這個問題,但Smooth Div Scroll需要知道滾動條中每個元素的寬度,以便能夠設置可滾動區域的總寬度。它通過迭代滾動器中的所有元素來完成此操作,將每個元素的寬度添加到所有元素的組合寬度。

如果你總是會在你的標記中設置固定的元素寬度(在CSS中指定,或者甚至是HTML標籤上的屬性,就像你可以對圖像所做的那樣),Smooth Div Scroll在計算總寬度時沒有問題在滾動條的實際內容加載之前的所有元素。這意味着我可以在jQuery事件$(document).ready中設置可滾動區域的總寬度。

但問題是許多用戶沒有設置他們的內容的寬度,有時他們不能指定寬度,因爲內容是動態的或以某種方式通過AJAX加載,所以元素的寬度不是事先已知。因此,Smooth Div Scroll會在嘗試計算可滾動區域內所有元素的總寬度之前等待內容加載(發生在$(window).load上)。

所以,這就是今天Smooth Div Scroll加載內容的背景。如果有什麼事情你認爲可以更有效地或以不同的方式做,我很樂意聽到它,因爲寬度計算是我得到許多問題的東西。

0

感謝您對此做出的個人回覆,以及一個偉大的插件,它允許我做一些我無法做到的事情!

爲了進一步描述問題 - 當你點擊第一個鏈接時,你看到多線加載(在所有內容加載之前)?如果沒有,我可以嘗試設置另一個例子。

根據插件如何計算寬度;我完全理解它爲什麼會這樣做,並且我不知道足夠的JS能夠親自提出解決方案,但是有一些東西 - 例如,是否可以將臨時寬度設置爲像9999這樣的東西,所以雖然插件是合計寬度的內容不會破壞線?

我實際上是通過從0 - 9999改變來嘗試的,但它並沒有真正改變,也許它需要別的東西改變工作?

0

您應該可以將可滾動區域的寬度設置爲CSS中的任何寬度,然後它將被內聯樣式屬性覆蓋,該屬性指定計算所有元素的總寬度時的寬度。事情是這樣的:

div.scrollableArea 
{ 
    position: relative; 
    width: 9999px; 
    height: 100%; 
} 

您也可以嘗試與溢出的工作:隱藏應用於滾動,使其只是如此之高,只有一個元素是可見的。然後,在所有內容加載並計算寬度之前,元素垂直堆疊並不重要。

當然,這些只是建議 - 我沒有自己嘗試過。