<div>
  <p>스크롤을 해보자!!</p>
  <div class="wrapper">
  </div>
  <div class="wrapper">
  </div>
  <div class="wrapper">
  </div>
  <div class="wrapper">
  </div>
</div>
div {
  text-align: center;
  font-size: 50px;
  font-weight: bold;
}

.wrapper {
  width: 150px;
  height: 150px;
  margin-bottom: 100px;
  margin-left: auto;
  margin-right: auto;
  background-color: red;
  opacity: 0;
  transition: opacity 0.5s;
}

.wrapper.visible {
  opacity: 1;
}
function isElementInViewport (el) {
    var rect = el.getBoundingClientRect();
    return (
        rect.top >= 0 &&
        rect.left >= 0 &&
        rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && 
        rect.right <= (window.innerWidth || document.documentElement.clientWidth)
    );
}

window.addEventListener('scroll', () => {
    document.querySelectorAll('.wrapper').forEach((wrapper) => {
   if(isElementInViewport(wrapper)){
     wrapper.classList.add('visible');
   } else {
     wrapper.classList.remove('visible');
   }
});
});
Run Pen

External CSS

This Pen doesn't use any external CSS resources.

External JavaScript

This Pen doesn't use any external JavaScript resources.