Скройте блок в конце страницы

#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 версию вашего вышеприведенного вопроса, и, возможно, вы сможете что-нибудь найти.