轻松掌握 CSS,实现 loading 加载中的多种形式

这篇具有很好参考价值的文章主要介绍了轻松掌握 CSS,实现 loading 加载中的多种形式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

现如今网页越来越趋近于动画,相信大家平时浏览网页或多或少都能看到一些动画效果,今天我们来做一个有意思的动画效果,纯 css 实现 loading 加载中(多种展现形式),下面一起看看吧。


1. 常规 loading

实现效果

css写一个加载,动画,前端,html

代码如下

<template>
  <div class="parentBox">
    <div class="loadBox">
      <div class="loaderContantBox"></div>
    </div>
  </div>
</template>
<style lang="less" scoped>
.parentBox {
  height: 100%;
  background: rgb(31, 31, 31);
  padding: 100px;
  .loadBox .loaderContantBox {
    color: white;
    font-size: 40px;
    overflow: hidden;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    transform: translateZ(0);
    /* animation:规定完成动画所花费的时间,该属性必须规定,否则动画时长为0,无法播放 */
    animation: loadBox 1.7s infinite ease, round 1.7s infinite ease;
  }

  @keyframes loadBox {
    0% {
      box-shadow: 0 -0.83em 0 -0.4em, 0 -0.83em 0 -0.42em, 0 -0.83em 0 -0.44em,
        0 -0.83em 0 -0.46em, 0 -0.83em 0 -0.477em;
    }

    5%,
    95% {
      box-shadow: 0 -0.83em 0 -0.4em, 0 -0.83em 0 -0.42em, 0 -0.83em 0 -0.44em,
        0 -0.83em 0 -0.46em, 0 -0.83em 0 -0.477em;
    }

    10%,
    59% {
      box-shadow: 0 -0.83em 0 -0.4em, -0.087em -0.825em 0 -0.42em,
        -0.173em -0.812em 0 -0.44em, -0.256em -0.789em 0 -0.46em,
        -0.297em -0.775em 0 -0.477em;
    }

    20% {
      box-shadow: 0 -0.83em 0 -0.4em, -0.338em -0.758em 0 -0.42em,
        -0.555em -0.617em 0 -0.44em, -0.671em -0.488em 0 -0.46em,
        -0.749em -0.34em 0 -0.477em;
    }

    38% {
      box-shadow: 0 -0.83em 0 -0.4em, -0.377em -0.74em 0 -0.42em,
        -0.645em -0.522em 0 -0.44em, -0.775em -0.297em 0 -0.46em,
        -0.82em -0.09em 0 -0.477em;
    }

    100% {
      box-shadow: 0 -0.83em 0 -0.4em, 0 -0.83em 0 -0.42em, 0 -0.83em 0 -0.44em,
        0 -0.83em 0 -0.46em, 0 -0.83em 0 -0.477em;
    }
  }

  @keyframes round {
    0% {
      transform: rotate(0deg); /* 开始旋转 div 元素 */
    }

    100% {
      transform: rotate(360deg); /* 结束旋转 div 元素 */
    }
  }
}
</style>

2. 抛出线条式 loading

实现效果

css写一个加载,动画,前端,html

代码如下

<template>
  <div class="parentBox">
    <svg class="scalableBox" viewBox="0 0 128 256" width="128px" height="256px" xmlns="http://www.w3.org/2000/svg">
      <defs>
        <linearGradient id="ap-grad1" x1="0" y1="0" x2="0" y2="1">
          <stop offset="0%" stop-color="hsl(223,90%,55%)" />
          <stop offset="100%" stop-color="hsl(253,90%,55%)" />
        </linearGradient>
        <linearGradient id="ap-grad2" x1="0" y1="0" x2="0" y2="1">
          <stop offset="0%" stop-color="hsl(193,90%,55%)" />
          <stop offset="50%" stop-color="hsl(223,90%,55%)" />
          <stop offset="100%" stop-color="hsl(253,90%,55%)" />
        </linearGradient>
      </defs>
      <circle class="apringBox" r="56" cx="64" cy="192" fill="none" stroke="#ddd" stroke-width="16" stroke-linecap="round" />
      <circle class="apwormOneBox" r="56" cx="64" cy="192" fill="none" stroke="url(#ap-grad1)" stroke-width="16" stroke-linecap="round"
        stroke-dasharray="87.96 263.89" />
      <path class="apwormTwoBox" d="M120,192A56,56,0,0,1,8,192C8,161.07,16,8,64,8S120,161.07,120,192Z" fill="none" stroke="url(#ap-grad2)"
        stroke-width="16" stroke-linecap="round" stroke-dasharray="87.96 494" />
    </svg>
  </div>
</template>
<style lang="less" scoped>
.parentBox {
  height: 100%;
  background: rgb(31, 31, 31);
  padding: 100px;
  .scalableBox {
    width: 40px;
    height: 70px;
  }
  .apringBox {
    transition: stroke 0.3s;
  }

  .apwormOneBox,
  .apwormTwoBox {
    animation-duration: 3s;
    animation-iteration-count: infinite;
  }
  .apwormTwoBox {
    animation-name: worm2;
    visibility: hidden;
  }
  .apwormOneBox {
    animation-name: worm1;
  }
}

@media (prefers-color-scheme: dark) {
  :root {
    --bg: hsl(var(--hue), 10%, 10%);
    --fg: hsl(var(--hue), 10%, 90%);
  }

  .apringBox {
    stroke: hsla(var(--hue), 10%, 90%, 0.9);
  }
}

@keyframes worm1 {
  from {
    animation-timing-function: ease-in-out;
    stroke-dashoffset: -87.96;
  }

  20% {
    animation-timing-function: ease-in;
    stroke-dashoffset: 0;
  }

  60% {
    stroke-dashoffset: -791.68;
    visibility: visible;
  }

  60.1%,
  to {
    stroke-dashoffset: -791.68;
    visibility: hidden;
  }
}

@keyframes worm2 {
  from,
  60% {
    stroke-dashoffset: -87.96;
    visibility: hidden;
  }

  60.1% {
    animation-timing-function: cubic-bezier(0, 0, 0.5, 0.75);
    stroke-dashoffset: -87.96;
    visibility: visible;
  }

  77% {
    animation-timing-function: cubic-bezier(0.5, 0.25, 0.5, 0.88);
    stroke-dashoffset: -340;
    visibility: visible;
  }

  to {
    stroke-dashoffset: -669.92;
    visibility: visible;
  }
}
</style>

3. 进度条颜色覆盖式 loading

实现效果

css写一个加载,动画,前端,html

代码如下

<template>
  <div class="parentBox">
    <div class="contantBox"></div>
  </div>
</template>
<style lang="less" scoped>
.parentBox {
  height: 100%;
  background: rgb(31, 31, 31);
  padding: 100px;
  .contantBox {
    width: 120px;
    height: 20px;
    background: linear-gradient(rgb(12, 132, 223) 0 0) 0/0% no-repeat #ddd;
    animation: cartoon 2s infinite linear;
  }

  @keyframes cartoon {
    100% {
      background-size: 100%;
    }
  }
}
</style>

4. 椭圆式进度条 loading

实现效果

css写一个加载,动画,前端,html

代码如下

<template>
  <div class="parentBox">
    <div class="contantBox"></div>
  </div>
</template>
<style lang="less" scoped>
.parentBox {
  height: 100%;
  background: rgb(31, 31, 31);
  padding: 100px;
  .contantBox {
    width: 120px;
    height: 22px;
    border-radius: 20px;
    color: #514b82;
    border: 2px solid;
    position: relative;
  }
  .contantBox::before {
    content: "";
    position: absolute;
    margin: 2px;
    inset: 0 100% 0 0;
    border-radius: inherit;
    background: #514b82;
    animation: cartoon 2s infinite;
  }

  @keyframes cartoon {
    100% {
      inset: 0;
    }
  }
}
</style>

5. 卡顿式进度条 loading

实现效果

css写一个加载,动画,前端,html

代码如下

<template>
  <div class="parentBox">
    <div class="contantBox"></div>
  </div>
</template>
<style lang="less" scoped>
.parentBox {
  height: 100%;
  background: rgb(31, 31, 31);
  padding: 100px;
  .contantBox {
    width: 120px;
    height: 20px;
    border-radius: 20px;
    background: linear-gradient(orange 0 0) 0/0% no-repeat lightblue;
    animation: cartoon 2s infinite steps(10);
  }

  @keyframes cartoon {
    100% {
      background-size: 110%;
    }
  }
}
</style>

6. 进度条波纹 loading

实现效果

css写一个加载,动画,前端,html

代码如下

<template>
  <div class="parentBox">
    <div class="contantBox"></div>
  </div>
</template>
<style lang="less" scoped>
.parentBox {
  height: 100%;
  background: rgb(31, 31, 31);
  padding: 100px;
  .contantBox {
    width: 120px;
    height: 20px;
    border-radius: 20px;
    background: repeating-linear-gradient(
          135deg,
          #f03355 0 10px,
          #ffa516 0 20px
        )
        0/0% no-repeat,
      repeating-linear-gradient(135deg, #ddd 0 10px, #eee 0 20px) 0/100%;
    animation: cartoon 2s infinite;
  }

  @keyframes cartoon {
    100% {
      background-size: 100%;
    }
  }
}
</style>

7. 进度条分隔式 loading

实现效果

css写一个加载,动画,前端,html

代码如下

<template>
  <div class="parentBox">
    <div class="contantBox"></div>
  </div>
</template>
<style lang="less" scoped>
.parentBox {
  height: 100%;
  background: rgb(31, 31, 31);
  padding: 100px;
  .contantBox {
    width: 120px;
    height: 20px;
    -webkit-mask: linear-gradient(90deg, #000 70%, #0000 0) 0/20%;
    background: linear-gradient(rgb(73, 255, 57) 0 0) 0/0% no-repeat #ddd;
    animation: cartoon 2s infinite steps(6);
  }

  @keyframes cartoon {
    100% {
      background-size: 120%;
    }
  }
}
</style>

8. 圆球连接式 loading

实现效果

css写一个加载,动画,前端,html

代码如下

<template>
  <div class="parentBox">
    <div class="contantBox"></div>
  </div>
</template>
<style lang="less" scoped>
.parentBox {
  height: 100%;
  background: rgb(31, 31, 31);
  padding: 100px;
  .contantBox {
    width: 120px;
    height: 24px;
    -webkit-mask: radial-gradient(circle closest-side, #000 94%, #0000) 0 0/25%
        100%,
      linear-gradient(#000 0 0) center/calc(100% - 12px) calc(100% - 12px)
        no-repeat;
    background: linear-gradient(#25b09b 0 0) 0/0% no-repeat #ddd;
    animation: cartoon 2s infinite linear;
  }

  @keyframes cartoon {
    100% {
      background-size: 100%;
    }
  }
}
</style>

9. 电池充电式 loading

实现效果

css写一个加载,动画,前端,html

代码如下

<template>
  <div class="parentBox">
    <div class="contantBox"></div>
  </div>
</template>
<style lang="less" scoped>
.parentBox {
  height: 100%;
  background: rgb(31, 31, 31);
  padding: 100px;
  .contantBox {
    width: 80px;
    height: 40px;
    border: 2px solid rgb(103, 194, 58);
    padding: 3px;
    background: repeating-linear-gradient(
        90deg,
        rgb(103, 194, 58) 0 10px,
        #0000 0 16px
      )
      0/0% no-repeat content-box content-box;
    position: relative;
    animation: cartoon 2s infinite steps(6);
  }
  .contantBox::before {
    content: "";
    position: absolute;
    top: 50%;
    left: 100%;
    transform: translateY(-50%);
    width: 10px;
    height: 10px;
    border: 2px solid rgb(103, 194, 58);
  }

  @keyframes cartoon {
    100% {
      background-size: 120%;
    }
  }
}
</style>

10. 球体分隔式 loading

实现效果

css写一个加载,动画,前端,html

代码如下

<template>
  <div class="parentBox">
    <div class="contantBox"></div>
  </div>
</template>
<style lang="less" scoped>
.parentBox {
  height: 100%;
  background: rgb(31, 31, 31);
  padding: 100px;
  .contantBox {
    width: 60px;
    height: 60px;
    border-radius: 50%;
    -webkit-mask: linear-gradient(0deg, #000 55%, #0000 0) bottom/100% 18.18%;
    background: linear-gradient(#f03355 0 0) bottom/100% 0% no-repeat #ddd;
    animation: cartoon 2s infinite steps(7);
  }

  @keyframes cartoon {
    100% {
      background-size: 100% 115%;
    }
  }
}
</style>

11. 水球波纹式 loading

实现效果

css写一个加载,动画,前端,html

代码如下

<template>
  <div class="parentBox">
    <div class="contantBox"></div>
  </div>
</template>
<style lang="less" scoped>
.parentBox {
  height: 100%;
  background: rgb(31, 31, 31);
  padding: 100px;
  .contantBox {
    --r1: 154%;
    --r2: 68.5%;
    width: 60px;
    height: 60px;
    border-radius: 50%;
    background: radial-gradient(
          var(--r1) var(--r2) at top,
          #0000 79.5%,
          #269af2 80%
        )
        center left,
      radial-gradient(var(--r1) var(--r2) at bottom, #269af2 79.5%, #0000 80%)
        center center,
      radial-gradient(var(--r1) var(--r2) at top, #0000 79.5%, #269af2 80%)
        center right,
      #ccc;
    background-size: 50.5% 220%;
    background-position: -100% 0%, 0% 0%, 100% 0%;
    background-repeat: no-repeat;
    animation: cartoon 2s infinite linear;
  }
  @keyframes cartoon {
    33% {
      background-position: 0% 33%, 100% 33%, 200% 33%;
    }

    66% {
      background-position: -100% 66%, 0% 66%, 100% 66%;
    }

    100% {
      background-position: 0% 100%, 100% 100%, 200% 100%;
    }
  }
}
</style>

12. 半圆线条式 loading

实现效果

css写一个加载,动画,前端,html

代码如下

<template>
  <div class="parentBox">
    <div class="contantBox"></div>
  </div>
</template>
<style lang="less" scoped>
.parentBox {
  height: 100%;
  background: rgb(31, 31, 31);
  padding: 100px;
  .contantBox {
    width: 120px;
    height: 60px;
    border-radius: 200px 200px 0 0;
    -webkit-mask: repeating-radial-gradient(
      farthest-side at bottom,
      #0000 0,
      #000 1px 12%,
      #0000 calc(12% + 1px) 20%
    );
    background: radial-gradient(farthest-side at bottom, #514b82 0 95%, #0000 0)
      bottom/0% 0% no-repeat #ddd;
    animation: cartoon 2s infinite steps(6);
  }
  @keyframes cartoon {
    100% {
      background-size: 120% 120%;
    }
  }
}
</style>

13. 球体内小球跳跃式 loading

实现效果

css写一个加载,动画,前端,html

代码如下

<template>
  <div class="parentBox">
    <!-- 第一种 -->
    <div>
      <figure>
        <section>
          <div></div>
        </section>
        <section>
          <div></div>
        </section>
        <section>
          <div></div>
        </section>
        <section>
          <div></div>
        </section>
        <section>
          <div></div>
        </section>
        <section>
          <div></div>
        </section>
        <section>
          <div></div>
        </section>
        <section>
          <div></div>
        </section>
      </figure>
    </div>
    <!-- 第二种 -->
    <div>
      <figure>
        <section>
          <div></div>
        </section>
        <section>
          <div></div>
        </section>
        <section>
          <div></div>
        </section>
        <section>
          <div></div>
        </section>
        <section>
          <div></div>
        </section>
        <section>
          <div></div>
        </section>
        <section>
          <div></div>
        </section>
        <section>
          <div></div>
        </section>
      </figure>
    </div>
    <!-- 第三种 -->
    <div>
      <figure>
        <section>
          <div></div>
        </section>
        <section>
          <div></div>
        </section>
        <section>
          <div></div>
        </section>
        <section>
          <div></div>
        </section>
        <section>
          <div></div>
        </section>
        <section>
          <div></div>
        </section>
        <section>
          <div></div>
        </section>
        <section>
          <div></div>
        </section>
      </figure>
    </div>
    <!-- 第四种 -->
    <div>
      <figure>
        <section>
          <div></div>
        </section>
        <section>
          <div></div>
        </section>
        <section>
          <div></div>
        </section>
        <section>
          <div></div>
        </section>
        <section>
          <div></div>
        </section>
        <section>
          <div></div>
        </section>
        <section>
          <div></div>
        </section>
        <section>
          <div></div>
        </section>
      </figure>
    </div>
  </div>
</template>
<style lang="less" scoped>
.parentBox {
  height: 100%;
  background: rgb(31, 31, 31);
  padding: 100px;
  display: flex;
  @keyframes move {
    from {
      transform: translate(0, 50%);
    }

    to {
      transform: translate(0, 850%);
    }
  }
  figure {
    margin: 10px;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    position: relative;
    background: rgb(240,109,78);
  }

  section {
    width: 10%;
    height: 100%;
    position: absolute;
    left: 45%;
  }

  section:nth-child(2) {
    transform: rotate(22.5deg);
  }

  section:nth-child(3) {
    transform: rotate(45deg);
  }

  section:nth-child(4) {
    transform: rotate(67.5deg);
  }

  section:nth-child(5) {
    transform: rotate(90deg);
  }

  section:nth-child(6) {
    transform: rotate(112.5deg);
  }

  section:nth-child(7) {
    transform: rotate(135deg);
  }

  section:nth-child(8) {
    transform: rotate(157.5deg);
  }

  figure div {
    height: 10%;
    border-radius: 50%;
    background: #fff;
    animation: move 1s ease-in-out infinite alternate;
  }

  figure:nth-child(1) > section:nth-child(1) > div {
    animation-delay: -0.1875s;
  }

  figure:nth-child(1) > section:nth-child(2) > div {
    animation-delay: -0.175s;
  }

  figure:nth-child(1) > section:nth-child(3) > div {
    animation-delay: -0.1625s;
  }

  figure:nth-child(1) > section:nth-child(4) > div {
    animation-delay: -0.15s;
  }

  figure:nth-child(1) > section:nth-child(5) > div {
    animation-delay: -0.9375s;
  }

  figure:nth-child(1) > section:nth-child(6) > div {
    animation-delay: -0.925s;
  }

  figure:nth-child(1) > section:nth-child(7) > div {
    animation-delay: -0.9125s;
  }

  figure:nth-child(1) > section:nth-child(8) > div {
    animation-delay: -0.9s;
  }

  figure:nth-child(2) > section:nth-child(1) > div {
    animation-delay: -0.875s;
  }

  figure:nth-child(2) > section:nth-child(2) > div {
    animation-delay: -0.75s;
  }

  figure:nth-child(2) > section:nth-child(3) > div {
    animation-delay: -0.625s;
  }

  figure:nth-child(2) > section:nth-child(4) > div {
    animation-delay: -0.5s;
  }

  figure:nth-child(2) > section:nth-child(5) > div {
    animation-delay: -0.375s;
  }

  figure:nth-child(2) > section:nth-child(6) > div {
    animation-delay: -0.25s;
  }

  figure:nth-child(2) > section:nth-child(7) > div {
    animation-delay: -0.125s;
  }

  figure:nth-child(3) > section:nth-child(1) > div {
    animation-delay: -0.5s;
  }

  figure:nth-child(3) > section:nth-child(3) > div {
    animation-delay: -0.5s;
  }

  figure:nth-child(3) > section:nth-child(5) > div {
    animation-delay: -0.5s;
  }

  figure:nth-child(3) > section:nth-child(7) > div {
    animation-delay: -0.5s;
  }

  figure:nth-child(4) > section:nth-child(1) > div {
    animation-delay: -0.35s;
  }

  figure:nth-child(4) > section:nth-child(2) > div {
    animation-delay: -0.3s;
  }

  figure:nth-child(4) > section:nth-child(3) > div {
    animation-delay: -0.25s;
  }

  figure:nth-child(4) > section:nth-child(4) > div {
    animation-delay: -0.2s;
  }

  figure:nth-child(4) > section:nth-child(5) > div {
    animation-delay: -0.15s;
  }

  figure:nth-child(4) > section:nth-child(6) > div {
    animation-delay: -0.1s;
  }

  figure:nth-child(4) > section:nth-child(7) > div {
    animation-delay: -0.05s;
  }
}
</style>

14. 球体内动图式 loading

实现效果

css写一个加载,动画,前端,html

代码如下

<template>
  <div class="parentBox">
    <div class="containerBox">
      <!-- 第一种 -->
      <div class="canvasBox">
        <div class="spinnerOneBox spinnerMaxBox">
          <div class="spinnerOneBox spinnerMidBox">
            <div class="spinnerOneBox spinnerMinBox"></div>
          </div>
        </div>
      </div>
      <!-- 第二种 -->
      <div class="canvasBox canvasTwoBox">
        <div class="spinnerTwoBox"></div>
        <div class="hourHandBox"></div>
        <div class="dotBox"></div>
      </div>
      <!-- 第三种 -->
      <div class="canvasBox">
        <div class="spinnerThreeBox"></div>
      </div>
      <!-- 第四种 -->
      <div class="canvasBox">
        <div class="spinnerFourBox"></div>
      </div>
      <!-- 第五种 -->
      <div class="canvasBox">
        <div class="spinnerFiveBox"></div>
      </div>
      <!-- 第六种 -->
      <div class="canvasBox">
        <div class="spinnerSexBox p1"></div>
        <div class="spinnerSexBox p2"></div>
        <div class="spinnerSexBox p3"></div>
        <div class="spinnerSexBox p4"></div>
      </div>
    </div>
  </div>
</template>
<style lang="less" scoped>
.parentBox {
  height: 100%;
  background: rgb(31, 31, 31);
  padding: 100px;
  .containerBox {
    display: flex;
    .canvasBox {
      align-items: center;
      background: #eeeeee;
      border-radius: 50%;
      display: flex;
      justify-content: center;
      margin: 1em;
      width: 10em;
      height: 10em;
      // 第一种
      .spinnerOneBox {
        align-items: center;
        border: 0.3em solid transparent;
        border-top: 0.3em solid #4db6ac;
        border-right: 0.3em solid #4db6ac;
        border-radius: 100%;
        display: flex;
        justify-content: center;
      }
      .spinnerMaxBox {
        animation: spinnerOne 3s linear infinite;
        height: 3em;
        width: 3em;
        .spinnerMidBox {
          animation: spinnerOne 5s linear infinite;
          height: 2.4em;
          width: 2.4em;
          .spinnerMinBox {
            animation: spinnerOne 5s linear infinite;
            height: 1.8em;
            width: 1.8em;
          }
        }
      }
    }
    @keyframes spinnerOne {
      0% {
        transform: rotate(0deg);
      }
      100% {
        transform: rotate(360deg);
      }
    }
    // 第二种
    .canvasTwoBox {
      position: relative;
      .spinnerTwoBox {
        animation: spinnerTwo 1s linear infinite;
        background: #4db6ac;
        border-radius: 100px;
        height: 3em;
        transform-origin: top;
        position: absolute;
        top: 50%;
        width: 0.22em;
      }
      .hourHandBox {
        animation: spinnerTwo 7s linear infinite;
        background: #4db6ac;
        border-radius: 100px;
        height: 2em;
        transform-origin: top;
        position: absolute;
        top: 50%;
        width: 0.2em;
      }
      .dotBox {
        background: #4db6ac;
        border-radius: 100%;
        height: 0.5em;
        width: 0.5em;
      }
    }
    @keyframes spinnerTwo {
      0% {
        transform: rotate(0deg);
      }
      100% {
        transform: rotate(360deg);
      }
    }
    // 第三种
    .spinnerThreeBox {
      animation: spinnerThree 1s linear infinite;
      background: #4db6ac;
      border-radius: 100%;
      width: 3em;
      height: 3em;
    }

    @keyframes spinnerThree {
      0%,
      35% {
        background: #4db6ac;
        transform: scale(1);
      }
      20%,
      50% {
        background: #80cbc4;
        transform: scale(1.3);
      }
    }
    // 第四种
    .spinnerFourBox {
      animation: spinnerFour 1s linear infinite;
      border: solid 7px transparent;
      border-top: solid 7px #4db6ac;
      border-radius: 100%;
      width: 3em;
      height: 3em;
    }

    @keyframes spinnerFour {
      0% {
        transform: rotate(0deg);
      }
      100% {
        transform: rotate(360deg);
      }
    }
    // 第五种
    .spinnerFiveBox {
      animation: spinnerFive 1s linear infinite;
      border: solid 1.5em #4db6ac;
      border-right: solid 1.5em transparent;
      border-left: solid 1.5em transparent;
      border-radius: 100%;
      width: 0;
      height: 0;
    }

    @keyframes spinnerFive {
      0% {
        transform: rotate(0deg);
      }
      50% {
        transform: rotate(60deg);
      }
      100% {
        transform: rotate(360deg);
      }
    }
    // 第六种
    .spinnerSexBox {
      background: #4db6ac;
      border-radius: 50%;
      height: 1em;
      margin: 0.1em;
      width: 1em;
    }

    .p1 {
      animation: fall 1s linear 0.3s infinite;
    }

    .p2 {
      animation: fall 1s linear 0.2s infinite;
    }

    .p3 {
      animation: fall 1s linear 0.1s infinite;
    }

    .p4 {
      animation: fall 1s linear infinite;
    }
    @keyframes fall {
      0% {
        transform: translateY(-15px);
      }
      25%,
      75% {
        transform: translateY(0);
      }
      100% {
        transform: translateY(-15px);
      }
    }
  }
}
</style>

15. 渐变加载 loading

实现效果

css写一个加载,动画,前端,html

代码如下

<template>
  <div class="parentBox">
    <div class="containerBox">
      <span>L</span>
      <span>O</span>
      <span>A</span>
      <span>D</span>
      <span>I</span>
      <span>N</span>
      <span>G</span>
      <span>.</span>
      <span>.</span>
      <span>.</span>
    </div>
    <div class="progBox"></div>
  </div>
</template>
<style lang="less" scoped>
.parentBox {
  height: 100%;
  padding: 100px;
  .containerBox {
    font-weight: 900;
    padding-bottom: 10px;
    span {
      animation: load-text 1s infinite cubic-bezier(0.1, 0.15, 0.9, 1);
      display: inline-block;
    }
  }
  .progBox {
    background-color: #eaeaea;
    width: 300px;
    height: 25px;
    box-shadow: 1px 0px 2px rgba(0, 0, 0, 0.25), 0px 1px 2px rgba(0, 0, 0, 0.25);
    border-radius: 10px;
    position: relative;
  }

  .progBox:after {
    content: "";
    background-color: green;
    position: absolute;
    border-radius: 10px;
    width: 100%;
    height: 100%;
    top: 0px;
    left: 0px;
    animation: load 4s infinite linear;
  }
  @keyframes load {
    0% {
      width: 5%;
      background-color: red;
    }

    25% {
      background-color: orange;
    }

    50% {
      background-color: yellow;
    }

    75% {
      background-color: lightgreen;
    }

    90% {
      background-color: green;
      width: 100%;
    }
  }

  @keyframes load-text {
    0% {
      transform: translateY(0px);
    }

    25% {
      transform: translateY(5px);
    }

    50% {
      transform: translateY(0px);
    }

    75% {
      transform: translateY(-5px);
    }

    100% {
      transform: translateY(0px);
    }
  }
}
</style>

持续更新中...文章来源地址https://www.toymoban.com/news/detail-856956.html

到了这里,关于轻松掌握 CSS,实现 loading 加载中的多种形式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 轻松掌握Flutter中的键盘操作技巧

    嗨!这里是 甜瓜看代码 ,我们来聊聊如何避免你的用户在键盘弹起时受到惊吓。   我们都知道,在Flutter中,可以通过TextField或TextFormField来实现文本输入框。但是,这些输入框与键盘之间的交互可能会导致一些棘手的问题,例如键盘覆盖输入框、滚动问题等等。下面是一

    2024年02月11日
    浏览(42)
  • 掌握文件重命名快捷键,使用替换功能轻松删除文件名中的符号!

    您是否经常面对繁琐的文件重命名工作?是时候掌握一些文件管理的小技巧,让您的工作更加高效便捷了!现在,我们向您介绍一种简单的方法,通过文件重命名快捷键和替换功能,轻松删除文件名中的符号! 首先,我们要打开文件批量改名高手,并在板块栏里选择“文件批

    2024年02月14日
    浏览(47)
  • YOLOv5项目实现口罩检测、目标检测(免费提供数据集2000+图片和标注以及所有代码)可以在多种平台上运行(pycharm+CUDA、colab、国内GPU云平台)图片形式、rstp形式、视频形式等

    相信很多朋友最近想入门计算机视觉方面,但是对于怎么入门还不是很了解,在这个过程中会遇到很多的问题,例如:找不到学习资源、软件不会安装等等。目标检测只是计算机视觉的一个方面,但是目前仍处于热门的研究话题。而目标检测的方法分为one-stage和two-stage方法,

    2024年02月03日
    浏览(63)
  • 【前端下载文件流详解】前端实现多种类型文件(word,excel,pdf,rar,zip等)的下载,接口返回文件流形式(附源码)

    【 写在前面 】其实之前我也写了有关java实现文件的下载,但是当时是局限于excel文档,针对其他类型的并没有介绍,这次刚好有个客户现场反馈回来的,说我们系统确实能下载报告,但是甲方领导要看所有的报告,这不我每天得一个一个的点击下载,然后再打包给他们领导

    2023年04月24日
    浏览(55)
  • 【 vue使用请求loading:组件形式】

    这是我项目中想使用loading之后踩的第一个坑,后面优化用了vant自带的提示框,比较简单, 可移步这篇文章→→→ vue+vant使用请求loading 1. com/loading.vue 2. main.js 全局引用 3. 在页面中使用

    2024年02月16日
    浏览(35)
  • “智能查单轻松实现批量快递查询,高效掌握快递物流信息!“

    亲爱的用户,你是否常常为了查询大量快递单号而感到烦恼?不用担心,我们已经为你提供了一种高效、智能的解决方案!现在,只需一键操作,即可实现批量快递查询,迅速了解每个单号的详细物流信息。 首先,我们要进入快递批量查询高手主页面,并点击高级设置, 在

    2024年02月12日
    浏览(45)
  • 压力测试-JMeter的多种形式参数化

    在使用JMeter做压力测试/接口测试时,面对数据量比较大的情况下一个一个的去设置肯定会非常影响效率,所以参数化的方式必不可少,本文分享JMeter常用的几种参数化的形式。 准备工作: 创建基础API框架:新建测试计划-创建线程组-创建HTTP请求-创建查看结果树 第一种参数

    2024年02月14日
    浏览(41)
  • C语言打印九九乘法表的多种方式&多种形式(完整,左上,左下,右上,右下)

    📢博客主页:肩匣与橘 📢欢迎 点赞   👍  收藏  ⭐ 留言  📝 如有错误敬请指正! 📢本文由 肩匣与橘 编写,首发于 CSDN 🙉 📢生活依旧是美好而又温柔的,你也是✨  9️⃣9️⃣乘法表 🗨️前言 1️⃣完整型 2️⃣左上三角型 3️⃣左下三角型 3.1 for-for 3.2 while-while 3

    2024年02月06日
    浏览(45)
  • CSS实现盒子模型水平居中、垂直居中、水平垂直居中的多种方法

    水平居中效果图 水平居中 全局样式 第一种:margin+width 这种方法适用于已经知道width的盒子,实现起来比较简单 第二种:text-align+inline-block 这种方法适用于多种场景(width不固定) 第三种:float+position 这种方法适用于多种场景(width不固定) 第四种: 这种方法适用于多种场

    2024年02月09日
    浏览(67)
  • 奇舞周刊第500期:TQL,巧用 CSS 实现动态线条 Loading 动画

    记得点击文章末尾的“ 阅读原文 ”查看哟~ 下面先一起看下本期周刊 摘要 吧~  TQL,巧用 CSS 实现动态线条 Loading 动画 最近,群里有个很有意思的问题,使用 CSS 如何实现如下 Loading 效果:  leaferjs,全新的 Canvas 渲染引擎 前几天群里有人发了一个新 Canvas 渲染引擎的图片

    2024年02月15日
    浏览(59)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包