2012-02-14 3 views

ответ

1

Вы не можете прокручивать window. Вы не можете анимировать окно scolling (спасибо Kato). Попробуйте следующее:

var offset = $(".box", this).offset().top; 
$("html,body").animate({scrollTop:offset}, 500); 
+0

$ (окно) .scrollTop() [отлично работает] (http://jsfiddle.net/katowulf/w43T6/). Вы имели в виду сказать, что вы не можете анимировать прокрутку окна? – Kato

+0

@ Като: Я стою исправлено. Да, я хотел сказать, что вы не можете анимировать прокрутку окна. Исправлена. ;) –

+0

Полезно знать, поскольку я никогда не пробовал анимированный подход. Мне нравится решение html, body (это оживляет его дважды в реальных браузерах? Стоит ли делать некоторые нюансы браузера, чтобы избежать двойного вызова?) – Kato

1

Следующие действия будут работать как для IE, так и для других браузеров.

$('body,html').animate({scrollTop: offset}, 500); 
0

offset(). Top - это расстояние относительно документа. Поэтому, если документ прокручивается полностью, анимация неточна.

$ ("body"). Animate ({scrollTop: offset + $ ("body"). ScrollTop()}, 500);

+0

Нет, смещение jQuery() относительно документа, независимо от положения прокрутки. –

+0

В вашем случае это то же самое. offset + scrolltop === position. Но позиция - это чистая минуса :-) – terjeto

1

я в конечном итоге пришлось использовать позицию(), а не смещение

var offset = item.position().top; 
$("html, body").animate({scrollTop:offset}, 500); 

И читая документы он предложенные замечания, лучше использовать $ («HTML, тело») для кросс-браузеров

Смежные вопросы