kilogram
kilogram

Reputation: 717

Making a loading spinner

I need your help, friends, in creating a loading spinner for ajax request. It is looking like this:working sample video

Here is the HTML for the spinner

This is css for this spinner:

$(document).ready(function() {
	$loading_indicator = $(document).find( '.loading-indicator' );
	$loading_indicator.addClass( 'active' );
	$loading_indicator.removeClass( 'active' );
});
.loading-indicator {
  width: 40px;
  height: 40px;
  background-color: #ddd;
  border-radius: 100%;
  -webkit-animation: sk-scaleout 1.0s infinite ease-in-out;
  animation: sk-scaleout 1.0s infinite ease-in-out;
  visibility: hidden;
  opacity: 0;
  transition: opacity 0.2s linear, visibility 2s ease;
  position: absolute;
  top: 0;
  margin: 0 auto;
  left: 0;
  right: 0;
}

.loading-indicator.active {
visibility: visible;
opacity: 1;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<div class="loading-indicator" style=""></div>

Please help me to make it work, as I want it blinking like on the video while ajax request is processing

Upvotes: 2

Views: 1159

Answers (2)

Vijay Kanaujia
Vijay Kanaujia

Reputation: 479

window.addEventListener("load", (event) => {
        console.log("page is fully loaded");
        setTimeout(function () {
          document.getElementsByClassName("preloader").style.display = "none";
        }, 0);
      });
/********** Preloader **********/
span{
  display: inline-block
}
.preloader {
  position: fixed;
  top: 0;
  left: 0;
  height: 100vh;
  width: 100vw;
  background-color: #2C2D2F;
  z-index: 10000; }
  .preloader .loader {
    position: absolute;
    top: 50%;
    width: 100%;
    -webkit-transform: translateY(-50%);
    -ms-transform: translateY(-50%);
    transform: translateY(-50%);
    text-align: center; }
    .preloader .loader h4 {
      text-transform: uppercase;
      margin-bottom: 10px;
      font-weight: 700;
      color: heading-color; }

.loader span {
  width: .6em;
  height: .6em;
  margin: .19em;
  background: #007DB6;
  -webkit-border-radius: .6em;
  border-radius: .6em;
  -webkit-animation: loading 1s infinite alternate;
  animation: loading 1s infinite alternate; }

.loader span:nth-of-type(2) {
  background: #008FB2;
  -webkit-animation-delay: 0.2s;
  animation-delay: 0.2s; }

.loader span:nth-of-type(3) {
  background: #009B9E;
  -webkit-animation-delay: 0.4s;
  animation-delay: 0.4s; }

.loader span:nth-of-type(4) {
  background: #00A77D;
  -webkit-animation-delay: 0.6s;
  animation-delay: 0.6s; }

.loader span:nth-of-type(5) {
  background: #00B247;
  -webkit-animation-delay: 0.8s;
  animation-delay: 0.8s; }

.loader span:nth-of-type(6) {
  background: #5AB027;
  -webkit-animation-delay: 1.0s;
  animation-delay: 1.0s; }

.loader span:nth-of-type(7) {
  background: #A0B61E;
  -webkit-animation-delay: 1.2s;
  animation-delay: 1.2s; }

/*
 * Animation keyframes
 * Use transition opacity instead of keyframes?
 */
@-webkit-keyframes loading {
  0% {
    opacity: 0; }
  100% {
    opacity: 1; } }
@keyframes loading {
  0% {
    opacity: 0; }
  100% {
    opacity: 1; } }
<div class="preloader">
      <div class="loader">
        <!--Your Name-->
        <h4>Vijay Kanaujia</h4>
        <span></span>
        <span></span>
        <span></span>
        <span></span>
        <span></span>
        <span></span>
        <span></span>
      </div>
    </div>

Upvotes: 0

Punit Gajjar
Punit Gajjar

Reputation: 4987

html,
body {
  background: #ed5565;
  color: #fff;
}

.ball-scale>div {
  background-color: #fff;
  width: 15px;
  height: 15px;
  border-radius: 100%;
  margin: 2px;
  -webkit-animation-fill-mode: both;
  animation-fill-mode: both;
  display: inline-block;
  height: 60px;
  width: 60px;
  -webkit-animation: ball-scale 1s 0s ease-in-out infinite;
  animation: ball-scale 1s 0s ease-in-out infinite;
}

@keyframes ball-scale {
  0% {
    -webkit-transform: scale(0);
    transform: scale(0);
  }
  100% {
    -webkit-transform: scale(1);
    transform: scale(1);
    opacity: 0;
  }
}
<div class="loader">
  <div class="ball-scale">
    <div></div>
  </div>
</div>

Upvotes: 2

Related Questions