Для решения этой проблемы я использую две своих примитивных функции:
// Фиксация body
function bodyFixPosition() {
if (!document.body.hasAttribute('body-scroll-position-fixed')) {
var scrollPosition = window.pageYOffset || document.documentElement.scrollTop; // Получаем позицию прокрутки
document.body.setAttribute('body-scroll-position-fixed', 'true');
document.body.style.overflow = 'hidden';
document.body.style.position = 'fixed';
document.body.style.top = '-' + scrollPosition + 'px';
document.body.style.left = '0';
}
}
// Расфиксация body
function bodyUnfixPosition() {
var scrollCSSPosition = document.body.style.top.replace(/[^0-9.]/g, ''); // Получаем числовое значение позиции прокрутки из CSS
document.body.removeAttribute('body-scroll-position-fixed');
document.body.style.overflow = '';
document.body.style.position = '';
document.body.style.top = '';
document.body.style.left = '';
window.scroll(0, scrollCSSPosition);
}
Соответственно, вызываю их, когда нужно. Этот подход фиксирует прокрутку body во всех браузерах (проверял в т. ч. в древних Safari 8+ и IE10+). Код тоже можно оптимизировать, наверное, но я в JS — более чем так себе.
tendkuh, ну пусть сами думают, если так нужно скрыть h1. Главное в таком деле — понимание того, что они делают, ведь нарушать правила тоже нужно правильно.
Вот ребята BBC знают, как правило нарушать, — и у них всё в порядке.
BBC на своём сайте h1 подобным путём прячет. Знаю один сайт, где тоже спрятан h1 — у него отличные показатели SEO, но при этом знаю другой, где из-за этого были проблемы.
В целом, лучше не прятать, но если уж очень нужно, то точно не в display: none; opacity: 0: visibility: hidden;
Набор свойств visually-hidden может помочь, словом.
tendkuh, а, вы про код выше. Это не мой код, я его скидывал как пример фона, а в примере он там играет роль разделителя. Думаю, автор вопроса бы и так не стал использовать hr тут.
Соответственно, вызываю их, когда нужно. Этот подход фиксирует прокрутку body во всех браузерах (проверял в т. ч. в древних Safari 8+ и IE10+). Код тоже можно оптимизировать, наверное, но я в JS — более чем так себе.