Марк К.
8 сообщений
#12 лет назад
Приветствую!
Нижеприведённый код позволяет прилеплять нужный контент на сайте к верхнему краю при прокрутке:

<script type="text/javascript">
$(function() {
var offset = $("#fixed").offset();
var topPadding = 20;
$(window).scroll(function() {
if ($(window).scrollTop() > offset.top) {
$("#fixed").stop().animate({marginTop: $(window).scrollTop() - offset.top + topPadding});
}
else {$("#fixed").stop().animate({marginTop: 0});};});
});
</script>


Как убрать эффект притормаживания?
Спасибо.
Евгений Б.
5330 сообщений
#12 лет назад
Не сам ли браузер тормозит?
Js события не возникают мгновенно, просто поставьте счетчик что бы в лог писал время точное каждого вызова события scroll, сильно удивитесь.
Максим К.
124 сообщения
#12 лет назад

$(window).scroll(function() {
console.log('scrolled');
});

Посмотрите в консоль сколько раз вызывается это событие.
Никита Липинский
403 сообщения
#12 лет назад
Я может неправильно понял, но разве одного CSS fixed не хватит?

А если по теме - это же jQuery, тормозит браузер = много add-on'ов навесили
Евгений Б.
5330 сообщений
#12 лет назад
tuls, фикс - это фикс, а тут плавно кататься будет блок
Сергей Н.
183 сообщения
#12 лет назад
Пропускайте обработчик скролла через оптимизатор debounce. Идет в комплекте с underscore.js - (хотя можно и выдрать отдельно)

<script type="text/javascript">
//...
$(window).scroll(_.debounce(function() {
//...
},150));
</script>


вкратце: обработчик будет запускаться не с каждым событием скролла, а после последнего, если после него не скроллилось 150мс.
Марк К.
8 сообщений
#12 лет назад
Благодарю всех за советы, помогло!