| 
		
			Сообщение от Сергей Ракипов
			
		
	 | 
	
		Я пытаюсь понять 
условия функции 
 
берем высоту элемента вычитает проскороленые значение и если они меньше или равны видимой части окна то 
из блока заменяем контент на ширину блока и присваивает 100 процентов
	 | 
	
 А зачем вам отдельно обрабатывать такой случай?
Для того, чтобы вычислить процент прокрутки у элемента, вам следует текущее значение прокрутки разделить на максимально возможное. 
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;
}
	
	| 
		
			Сообщение от рони
			
		
	 | 
	| 
		анимировать opacity меняя класс элемента вместо style.display
	 | 
	
 Зачем менять класс, разве сразу непрозрачность анимировать нельзя?
	
	| 
		
			Сообщение от Сергей Ракипов
			
		
	 | 
	| 
		и как добавить плавности
	 | 
	
 transition
Исправленный пример — 
https://codepen.io/Malleys/pen/RwWowmd?editors=1000