Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Плавность скролла. (https://javascript.ru/forum/misc/13794-plavnost-skrolla.html)

Got 14.12.2010 08:36

Плавность скролла.
 
Здравствуйте. Существует ли возможность с помощью JS настраивать плавность прокрутки страницы? Если да, то не могли бы вы описать эту возможность? Желательно поподробнее и попроще, т.к. я новичок в этом языке. Заранее благодарю.

Skipp 14.12.2010 09:26

Got,
Нельзя.

exec 14.12.2010 10:12

Как вариант:

var Scroll = function ( element, to, time ) {
	var start = new Date().getTime(),
	from = element.scrollTop;
	if (element.animated) return;
	element.animated = true;
	setTimeout(function () {
		var progress = (new Date().getTime() - start) / time;
		element.scrollTop = (to - from) * progress + from;
		if (progress < 1) {
			setTimeout(arguments.callee, 10);
			element.animated = false;
		}
	}, 10);
};
document.onmousewheel = function (event) {
	Scroll(document.body, document.body.scrollTop + event.detail * 30, 300);
	return false;
};


Вариант для Opera и FF, но и под остальные браузеры можно подогнать.

monolithed 14.12.2010 10:38

еще что-то типа такого наверное нужно добавить/подправить, дабы onmousewheel поддрежать:
document.addEventListener('DOMMouseScroll', function(event) {
    Scroll(document.body, document.body.scrollTop + event.detail * 30, 300);
    return false;
}, false);

exec 14.12.2010 10:50

monolithed, return false при добавлении обработчика через addEventListener/attachEvent не сработает, нужен event.preventDefault() (для IE — event.returnValue = false). Отвыкайте от jQuery.

monolithed 14.12.2010 11:30

exec да я не про отмену действия по умолчанию. onmousewheel не кроссбраузерно как минимум для firefox, в этом случае его поддержку можно осуществить через DOMMouseScroll

Got 15.12.2010 01:32

Благодарю за ответы.


Часовой пояс GMT +3, время: 07:12.