В приведенном ниже коде я проверяю, прокручивается ли окно за определенной точкой, и если это так, измените элемент на использование фиксированной позиции, чтобы он не прокручивался вверху страницы. Единственная проблема заключается в том, что, по-видимому, интенсивная интенсивность клиентской памяти (и действительно болит вниз скорость прокрутки), потому что на каждом отдельном пикселе прокрутки я обновляю атрибуты стиля снова и снова.
Будет ли проверка, если attr уже существует, прежде чем пытаться обновить его, имеет существенное значение? Есть ли совершенно другая и более эффективная практика для получения того же результата?
$(window).scroll(function () {
var headerBottom = 165;
var fcHeight = $("#pnlMainNavContainer").height();
var ScrollTop = $(window).scrollTop();
if (ScrollTop > headerBottom) {
$("#HeaderContentBuffer").attr("style", "margin-top:" + (fcHeight) + "px;");
$("#AddFieldsContainer").attr("style", "position:fixed;width:320px;top:70px;left:41px;");
} else {
$("#HeaderContentBuffer").attr("style", "margin-top: 0px;");
$("#AddFieldsContainer").removeAttr("style");
}
});
Когда я набираю это, я замечаю, что StackOverflow.com использует тот же тип функциональности с их желтыми "Схожие вопросы" и "Справка" меню в правой части этой страницы. Интересно, как они это делают.