TL; DR:如何強制IE7加載所有被滾動div隱藏的元素?IE7不會加載滾動div內的內容,直到滾動
我正在構建一個「可摺疊」菜單來瀏覽一組頁面。這個菜單有兩個狀態爆炸和爆炸。
菜單項就像一本書的章節一樣,隨着用戶進入內容,「主動」菜單項向下移動。
在頁面加載時,我想讓項目所在的<div>
立即向下滾動(!)到活動菜單項,減去一些偏移量。與往常一樣,這對Chrome和ff完美起作用,但在ie7上不起作用。
在爆炸狀態下,看起來ie7並不打擾在頁面加載時不可見的情況下「加載」項目。發生什麼事是ie7啓動沒有滾動條(或一個非常小的)的菜單div。當我將scrollTop設置爲所需的數量。 div向下滾動,直到滾動條'碰到'底部的div',然後ie7開始加載下一個比特的內容,並且我可以進一步滾動,直到找到另一個'底部'等。
我設法通過使用長度爲1000ms的動畫(只是選擇了一個數字)來解決此問題。它不符合指定的要求(並且看起來很醜),我不知道我可以如何強制ie7在請求之前加載此內容,因爲它似乎沒有加載它。
IE7用戶是我們最大的目標羣體,所以沒有跳過這個。並且讓沒有javascript的用戶可以使用它是一個巨大的優勢。
在內爆狀態下沒有問題,我嘗試在爆炸狀態下使用部分爆裂狀態CSS,稍後將它們設置爲正確的值,但沒有幫助。
下面是一些代碼:
scrollToCurrent = function(length){
var prev = $("div.scroller div.selected").prev();
// Check if previous exists
if($(prev).length > 0) {
// number of previous items * height of an item - half an items height
var scrollY = ($(prev).prevAll().length * $(prev).outerHeight()) - ($(prev).outerHeight()/2);
if(length === 0) {
$("div.scroller").scrollTop(scrollY);
} else {
$(".scroller").animate({
scrollTop : scrollY
}, length);
}
}
};
如果你需要更多的,讓我知道。
編輯: 基本的jsfiddle: http://jsfiddle.net/AmazingDreams/keeUY/ http://jsfiddle.net/AmazingDreams/keeUY/embedded/result/
'IE7用戶是我們最大的目標羣體 - 嚴重嗎?你有一個悲傷的現實。順便說一句,你已經嘗試過一些插件?我知道,這不是你真正的問題,但可以節省時間 - 即使在與保守派人士合作時也是如此。要完成,[請看這裏](http://manos.malihu.gr/jquery-custom-content-scroller/) - 這是一個非常好的選擇。最後,爲了幫助你真正的問題,你可以發佈一個jsFiddle嗎? –
'IE7用戶是我們最大的目標羣體'我認爲你是唯一擁有IE7的人...... 0.8%擁有IE7 ... –
這0.8%是我們的目標羣體,我無法提供幫助。我會看看我能不能把一個jsFiddle放在一起。並仔細看看這個插件。 – AmazingDreams