Rossoll Webdesign | Code Library

Skeleton Loading

HTML

<div class="loading-effect">
  <img class="hidden-until-loaded" src="" alt="">
</div>

CSS

.hidden-until-loaded {
  visibility: hidden;
}

.loading-effect {
  position: relative;
  overflow: hidden;
}

.loading-effect:before {
  position: absolute;

  content: "";

  width: 100%;
  height: 100%;

  transform: translateX(-100%);
  animation: loading 1.5s infinite;

  background: linear-gradient(
    90deg
    transparent,
    rgba(255,255,255,0.3),
    transparent
  ),
}

@keyframes loading {
  100% {
    transform: translateX(100%);
  }
}

JS

window.addEventListener("load", () => {
  document
    .querySelectorAll(".loading-effect, .hidden-until-loaded")
    .forEach((element) => {
      element.classList.remove("loading-effect", "hidden-until-loaded");
    });
});