JSFiddle - React, Tailwind, and code Playground

by Van Hai Le

HTML

<div class="container">
  <div id="result"></div>
</div>
<p class="box">What about getting back for more?</p>
<!-- <div class="box">
  
</div>
 -->
 <div class="container"></div>

CSS

.container  {
  width: 100%;
  height: 1000px;
  position: relative;
}

#result {
  position: fixed;
}

.box {
  /* height: 100px;
  width: 100%;
  background: pink; */
  position: relative;
  top: -0px;
  opacity: 0;
  transition: all 1s linear;
}

p {
  margin: 0;
}

JavaScript

let box = document.querySelector('.box');

let boxTop = box.offsetTop;
document.getElementById('result').innerHTML = window.pageYOffset + window.innerHeight;
function elementInViewport(el) {
  var top = el.offsetTop;
  var left = el.offsetLeft;
  var width = el.offsetWidth;
  var height = el.offsetHeight;

  while(el.offsetParent) {
    el = el.offsetParent;
    top += el.offsetTop;
    left += el.offsetLeft;
  }

  return (
    top >= window.pageYOffset &&
    left >= window.pageXOffset &&
    (top + height) <= (window.pageYOffset + window.innerHeight) &&
    (left + width) <= (window.pageXOffset + window.innerWidth)
  );
}

document.addEventListener('scroll', function() {
document.getElementById('result').innerHTML = (window.innerHeight ) + ' ' + boxTop + ' ' + window.pageYOffset + ' ' + (window.pageYOffset + window.innerHeight);
console.log(window.pageYOffset + window.innerHeight);
let test = window.pageYOffset + window.innerHeight;
	//if (elementInViewport(box)) {
  if (window.pageYOffset < boxTop && window.pageYOffset >= boxTop - window.innerHeight) {
	box.style.opacity = '1';
  box.style.top = '0';
} else  {
	box.style.opacity = '0';
  box.style.top ='-10px';
}
});