2013-07-09 51 views
0

被禁用滾動我想使用jQuery動畫以滾動頁面,但滾動的CSS禁用它不允許動畫發生:使用jQuery滾動時的CSS

$('html, body').css({ 
    'overflow': 'hidden', 
    'height': '100%' 
}); 


$('html, body').animate({ 
    scrollTop: 939 
}, 2500); 

這裏的小提琴:http://jsfiddle.net/AKPHB/1/

+1

它除了基於webkit的瀏覽器外無處不在。當然,這不是一個答案,只是有趣的說明。 – Tommi

+0

Nop,它不:) – Alvaro

+0

@Tommi「無處不在」 - 真的嗎? – David

回答

3

如果設置溢出:隱藏,滾動事件不會發生。所以你也不能使用動畫來觸發它。真的,什麼是動畫滾動的,如果用戶無法反正滾動點:P

一種解決辦法是包裝在另一個容器中的內容和動畫的容器,而不是像這樣:

演示: http://jsfiddle.net/AKPHB/10/

<div id="content"> 
    <div class="text">text</div> 
    <div class="text">text</div> 
</div> 

CSS:

#content{position:relative} 

和JavaScript:

$('#content').animate({ top: -939 }); 
+0

有趣的是,您看到您使用屬性'top'而不是'scrollTop'作爲動畫。我也嘗試過使用容器,但它似乎不適用於'scrollTop'。謝謝! – Alvaro

+0

@alvaro這裏沒有魔法。滾動被禁用,「scrollTop」動畫屬性也被禁用,因爲它會觸發滾動本身。 – David

0

我可以建議使用margin-top來代替。對用戶的影響將是相同的,因爲沒有滾動條:

Demo

$('html, body').animate({ 
    "margin-top": -100, 
    "height": "+=200"  // Fix height to show additional content 
}, 2500); 
+0

這似乎是一種比正確的方式來做到這一點。此外,是不是那麼順利比較所需的結果:http://jsfiddle.net/AKPHB/4/ – Alvaro

+0

我確定應該有辦法。只要看看這個網站溢出隱藏在它的身體:http://onlinedepartment.nl/about-us/#designprinciples – Alvaro

+0

我只是使用較小的值:http://jsfiddle.net/AKPHB/6/看起來很順利我 – mishik