Сергей Ракипов,
ок |
Цитата:
<script> let percentage = document.querySelector(".percentage"); let percentageVal = document.querySelector("#percentage-value"); let fact = document.querySelector(".fact"); let updateScrollPercentage = function() { let heightOfWindow = window.innerHeight; let contentScrolled = window.pageYOffset; let bodyHeight = document.body.offsetHeight; if(bodyHeight - contentScrolled <= heightOfWindow) { percentageVal.textContent = percentage.style.height = "100%" } else { let total = bodyHeight - heightOfWindow; let got = contentScrolled; let percent = parseInt((got/total) * 100); percentageVal.textContent = percentage.style.height = percent + "%"; if (percent>=20 && percent<=30){ fact.style.display = "block"; } else{ fact.style.display = "none"; } } } window.addEventListener('scroll', updateScrollPercentage) </script> |
Цитата:
|
Цитата:
и у меня есть ощущение что это коряво когда в одной функции написано if else с разными так сказать действиями одно отвечает за процент а втрое за ввод. и как добавить плавности |
Цитата:
|
Цитата:
Для того, чтобы вычислить процент прокрутки у элемента, вам следует текущее значение прокрутки разделить на максимально возможное. const progress = document.querySelector("progress"); function scrollHandler() { const p = document.body.scrollTop / (document.body.scrollHeight - document.body.clientHeight); progress.value = p; } addEventListener("load", scrollHandler); document.body.addEventListener("scroll", scrollHandler); Чтобы прокрутка у элемента заработала, вам следует указать размеры элемента (иначе прокрутка у элемента не будет, а только у корневого элемента) html, body { height: 100%; overflow: auto; margin: 0; } Цитата:
Цитата:
Исправленный пример — https://codepen.io/Malleys/pen/RwWowmd?editors=1000 |
Цитата:
|
А как прочитать эту запись
let scrollTop = window.pageYOffset ? window.pageYOffset : (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop); pageYOffset я понимаю что на сколько окно браузера было проскорелно scrollTop на сколько элемент было проскролено. но вот языком нормальным не могу сказать что значит эта запись |
function sticky(){ let scrollTop = window.pageYOffset ? window.pageYOffset : (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop); if(scrollTop >= 0 & scrollTop <= 220){ imgArticle.style.position = "absolute"; imgArticle.style.top = "220"; } else if(scrollTop >= 220 & scrollTop <= 500){ imgArticle.style.position = "fixed"; imgArticle.style.top = "0"; } else{ imgArticle.style.position = "absolute"; imgArticle.style.top = "280" + "px"; } } window.addEventListener("scroll", sticky); Почему если я выношу эту переменную за функцию let scrollTop = window.pageYOffset ? window.pageYOffset : (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop); то функция не работает |
Цитата:
изменений не вносилось, значит будет значение на момент создания. |
Часовой пояс GMT +3, время: 11:30. |