У меня есть заголовок, который я хотел бы контролировать видимость во время прокрутки. При прокрутке страницы заголовок должен работать, как и любой элемент. При прокрутке страницы, независимо от позиции страницы, я хотел бы показать заголовок, когда страница поднимается. Такое поведение лучше всего понять, наблюдая за simple example.Почему Chrome для мобильных устройств не перерисовывает мой фиксированный заголовок?
Я слушаю для событий прокрутки и обновления фиксированного положения DIV с отрицательным верхним значением:
$(function()
{
var $header = $("#header");
var $window = $(window);
var headerHeight = $header.outerHeight();
var headerY = $header.outerHeight();
var scrollY = $window.scrollTop();
$window.on("scroll", function()
{
headerY += scrollY - $window.scrollTop();
if (headerY > headerHeight)
{
headerY = headerHeight;
}
else if (headerY < 0)
{
headerY = 0;
}
$header.css(
{
top: headerY - headerHeight,
});
scrollY = $window.scrollTop();
});
});
Однако поведение в Chrome для мобильных устройств не совсем то, что я бы ожидать. Заголовок часто не оживляет и мгновенно появляется или исчезает, когда границы выполняются. Когда он оживляет, производительность прерывается нерегулярно и часто только рисует от одного до трех кадров. Такое поведение не проявляется при использовании мобильной эмуляции настольных компьютеров Chrome; это происходит только на самом устройстве.
Это, похоже, происходит только при работе с элементом фиксированной позиции в верхней части страницы. Если я попытаюсь изменить фиксированный элемент другим способом, например, перемещать его со стороны или снизу, все работает намного ближе к ожидаемому. Фактически, если я изменю как элемент с фиксированным положением, так и элемент с фиксированным положением, верхний элемент будет вести себя более равномерно, like so.
Почему Chrome for Mobile так неустойчив с фиксированными позициями в верхней части страницы? Есть ли способ объяснить это кратким образом?
Я попытался преобразовать: translateZ (0) изначально для ускорения GPU, но это не сработало.Переход от обновления атрибута верхнего стиля для преобразования: translateY работал отлично. В основном это: 'transform:" translateY ("+ (headerY - headerHeight) +" px) ",' –
Рад, что я могу помочь – scooterlord