cssLoading 加载动画

154 阅读1分钟

效果

企业微信截图_16534425519111.png

代码

<template>
  <view class="loader">
    <view class="loaders">
      <view class="shadow"></view>
      <view class="box"></view>
    </view>
  </view>
</template>

<script lang="ts" setup>
</script>

<style lang="scss">
.loader {
  width: 100vw;
  height: 100vh;
  z-index: 9999;
  background-color: #fff;
  position: fixed;
  top: 0;
  left: 0;

  .loaders {
    position: absolute;
    top: calc(50% - 20px);
    left: calc(50% - 20px);
  }

  @keyframes loader {
    0% {
      left: -100px;
    }
    100% {
      left: 110%;
    }
  }

  .box {
    width: 50px;
    height: 50px;
    background: $motif-color;
    animation: animate 0.5s linear infinite;
    position: absolute;
    top: 0;
    left: 0;
    border-radius: 3px;
  }

  @keyframes animate {
    17% {
      border-bottom-right-radius: 3px;
    }
    25% {
      transform: translateY(9px) rotate(22.5deg);
    }
    50% {
      transform: translateY(18px) scale(1, 0.9) rotate(45deg);
      border-bottom-right-radius: 40px;
    }
    75% {
      transform: translateY(9px) rotate(67.5deg);
    }
    100% {
      transform: translateY(0) rotate(90deg);
    }
  }

  .shadow {
    width: 50px;
    height: 5px;
    background: #000;
    opacity: 0.1;
    position: absolute;
    top: 59px;
    left: 0;
    border-radius: 50%;
    animation: shadow 0.5s linear infinite;
  }

  @keyframes shadow {
    50% {
      transform: scale(1.2, 1);
    }
  }
}
</style>