#javascript #jquery
#язык JavaScript #jquery
Вопрос:
У меня есть блок, который появляется после прокрутки 1000 пикселей на странице
const navShareLink = document.getElementById('navShareLink'); document.addEventListener('scroll', function(e) { if(window.scrollY gt; 1000 amp;amp; window.innerWidth gt; 576) { navShareLink.style.display = "block"; } else { navShareLink.style.display = "none"; } });
Но когда он дойдет до конца страницы, где находится нижний колонтитул, мне нужно, чтобы он спрятался обратно, чтобы он не забрался в нижний колонтитул
Это легко сделать, если страница имеет одинаковую высоту, но для меня она может быть либо 2500 пикселей, либо 5000 пикселей
Можно ли как-то посчитать пиксели в обратном порядке, но не с начала страницы, а, скажем, 300 пикселей с конца?
В моем примере я пытаюсь получить высоту страницы и вычесть из нее 300 пикселей, чтобы установить желаемое значение
const navShareLink = document.getElementById('navShareLink'); let pageHeight = document.documentElement.scrollHeight; let endPageHeight = alert(pageHeight - 300); document.addEventListener('scroll', function(e) { if(window.scrollY gt; 1000 amp;amp; window.innerWidth gt; 576) { navShareLink.style.display = "block"; } else if(window.scrollY gt; endPageHeight amp;amp; window.innerWidth gt; 576) { navShareLink.style.display = "none"; } else { navShareLink.style.display = "none"; } });
Но эта строка document.documentElement.scrollHeight;
не принимает числовое значение, но отображает это число на странице во всплывающей вкладке, и на самом деле дальше ничего не работает
Комментарии:
1. У меня нет ответа, но является ли использование абсолютных значений пикселей лучшим подходом? Есть ли способ поместить это в такой элемент, как lt;divgt;lt;divgt;lt;/divgt; в разметке (например, HTML), а затем использовать этот элемент в javascript ???
2. @JosephDoggie можете ли вы продемонстрировать пример? как будто у нас есть какой-то lt;divgt;, и если мы доберемся до него, то спрячем блок?
3. Извини, у меня сейчас нет времени. Но, возможно, это может стать отправной точкой на пути к решению. Я бы поискал в Google версию вашего вышеприведенного вопроса, и, возможно, вы сможете что-нибудь найти.