当前位置:首页 » 《休闲阅读》 » 正文

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

17 人参与  2024年04月12日 13:00  分类 : 《休闲阅读》  评论

点击全文阅读


前言

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


1. 常规 loading

实现效果

在这里插入图片描述

代码如下

<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

实现效果

在这里插入图片描述

代码如下

<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

实现效果

在这里插入图片描述

代码如下

<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

实现效果

在这里插入图片描述

代码如下

<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

实现效果

在这里插入图片描述

代码如下

<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

实现效果

在这里插入图片描述

代码如下

<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

实现效果

在这里插入图片描述

代码如下

<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

实现效果

在这里插入图片描述

代码如下

<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

实现效果

在这里插入图片描述

代码如下

<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

实现效果

在这里插入图片描述

代码如下

<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

实现效果

在这里插入图片描述

代码如下

<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

实现效果

在这里插入图片描述

代码如下

<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

实现效果

在这里插入图片描述

代码如下

<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

实现效果

在这里插入图片描述

代码如下

<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

实现效果

在这里插入图片描述

代码如下

<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>

持续更新中...


点击全文阅读


本文链接:http://zhangshiyu.com/post/94254.html

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

关于我们 | 我要投稿 | 免责申明

Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1