一个loading等待效果,用vue写的

loading

直接上代码

<template>
  <div class="loading-frame">
    <div v-bind:style="styles" class="spinner spinner--circle-9">
      <div v-bind:style="innerStyles" class="spinner-inner">
        <div class="loading spin-1">
          <div class="loading spin-2">
            <div class="loading spin-3">
              <div class="loading spin-4">
                <div class="loading spin-5">
                  <div class="loading spin-6"></div>
                </div>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
  </div>
</template>
<script>
export default {
  props: {
    size: {
      default: '40px'
    }
  },
  computed: {
    innerStyles() {
      let size = parseInt(this.size);
      return {
        transform: 'scale(' + size / 120 + ')'
      };
    },
    styles() {
      return {
        width: this.size,
        height: this.size
      };
    }
  }
};
</script>
<style lang="scss" scoped>
.loading-frame {
  .spinner {
    position: fixed;
    top:50%;
    left:50%;
    z-index: 99999;
    transform: translate(-50%, -50%);
    // display: flex;
    // justify-content: center;
    // align-items: center;
    * {
      line-height: 0;
      box-sizing: border-box;
    }
  }
  .spinner-inner {
    width: 120px;
    height: 120px;
  }

  @keyframes circle-9-loading {
    0% {
      transform: rotate(0deg);
    }
    25% {
      transform: rotate(90deg);
    }
    50% {
      transform: rotate(180deg);
    }
    75% {
      transform: rotate(270deg);
    }
    100% {
      transform: rotate(360deg);
    }
  }

  .loading {
    background-color: transparent;
    border-radius: 50%;
    margin: 5px auto;
    animation: circle-9-loading 3s infinite linear;
  }

  .spin-1 {
    border: 5px solid #f7484e;
    border-top: 5px solid transparent;
    border-left: 5px solid transparent;
    width: 120px;
    height: 120px;
  }
  .spin-2 {
    border: 5px solid #41b883;
    border-top: 5px solid transparent;
    border-left: 5px solid transparent;
    width: 100px;
    height: 100px;
    //animation-delay: 1s;
  }
  .spin-3 {
    border: 5px solid #d2d947;
    border-top: 5px solid transparent;
    border-left: 5px solid transparent;
    width: 80px;
    height: 80px;
    //animation-delay: 1s;
  }
  .spin-4 {
    border: 5px solid #f2a342;
    border-top: 5px solid transparent;
    border-left: 5px solid transparent;
    width: 60px;
    height: 60px;
    //animation-delay: 1s;
  }
  .spin-5 {
    border: 5px solid #34495e;
    border-top: 5px solid transparent;
    border-left: 5px solid transparent;
    width: 40px;
    height: 40px;
    //animation-delay: 1s;
  }
  .spin-6 {
    border: 5px solid #fff;
    width: 20px;
    height: 20px;
    //animation-delay: 1s;
  }
}
</style>
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容