单元素实现的加载进度提示效果

 

效果一:

  实现:(1)用before与after将前后的竖条生成

     (2)动画的设计:增加其元素的长度(向下伸长),对元素加上不同的时延,反向增加阴影的长度(向上伸长)

<div class="load_div">
        <div class="load"></div>
</div>
body {
  background: #0dcecb;
  color: #FFF;
}
.load_div{
    width: 200px;
    height: 200px;
    border: 2px #fe7302 solid;
    position: relative;
}
.load:before, .load:after, .load{
  -webkit-animation:load1 1s infinite ease-in-out;
  animation:load1 1s infinite ease-in-out;
  width: 15px;
  height: 70px;
}
.load{
    width: 15px;
    height: 70px;
    background: #eee;
    margin: 50px auto;
    -webkit-animation-delay: -0.16s;
      animation-delay: -0.16s;
}
.load:before, .load:after{
    position: absolute;
    content: '';
    background: #eee;
}
.load:before{
    left: 70px;
    -webkit-animation-delay: -0.32s;
  animation-delay: -0.32s;
}
.load:after{
    left: 116px;
    -webkit-animation-delay:2s;
    animation-delay:2s;
}
@-webkit-keyframes load1{
    0%,
    80%,
    100%{
        box-shadow: 0 0 #eee;
        height: 80px;
    }
    40%{
        box-shadow: 0 -2em #eee;
        height: 100px
    }
}

 

效果二:

  实现:(1)中间是.load元素设背景色与网页的背景色一致,设置白色内阴影

       (2):before与:after分别是2个半圆,颜色与背景一致。不动的时候与.load元素重合的,设置旋转的动画,过程其实就是2个半圆不断的旋转,显示。load元素的内阴影的过程

.load2 .loader,
.load2 .loader:before,
.load2 .loader:after{
  border-radius: 50%;
}
.load2 .loader:before,
.load2 .loader:after{
  width: 100px;
  height: 200px;
  position: absolute;
  content: '';
}
.load2 .loader{
  width: 200px;
  height: 200px;
  position: relative;
  box-shadow: inset 0 0 0 10px #fff;
}
.load2 .loader:before{
  background: #0dcecb;
  border-radius: 200px 0 0 200px;
  -webkit-transform-origin: 100px 100px;
  transform-origin: 100px 100px;
  -webkit-animation:load2 2s infinite ease 1.5s;
  animation:load2 2s infinite ease 1.5s;
}
.load2 .loader:after{
  left: 100px;
  background: #0dcecb;
  border-radius: 0 200px 200px 0;
  -webkit-transform-origin: 0px 100px;
  transform-origin: 0px 100px;
  -webkit-animation:load2 2s infinite ease;
  animation:load2 2s infinite ease;
}
@-webkit-keyframes load2 {
  0%{
    -webkit-transform: rotate(0deg);transform: rotate(0deg);
  }
  100%{
    -webkit-transform: rotate(360deg);transform: rotate(360deg);
  }
}
@keyframes load2 {
  0%{
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  100%{
    -webkit-transform: rotate(360deg);
    transform: rotate(360deg);
  }
}
body {
  font-size: 62.5%;
  font-family: 'Lato', sans-serif;
  background: #0dcecb;
  color: #FFF;
}

效果三:

  实现:(1).load元素是一个大圆,背景颜色从左到右渐变的颜色。:after元素是一个同圆心的,稍微小一点的园。

     (2):before元素是四分一圆,动画是给.load元素加旋转,由于定位的关系,before元素会随着其旋转。

body {
  font-size: 62.5%;
  font-family: 'Lato', sans-serif;
  background: #0dcecb;
  color: #FFF;
}

@-webkit-keyframes load3{
  0%{
    -webkit-transform:rotate(0deg);
    transform:rotate(0deg);
  }
  100%{
    -webkit-transform:rotate(360deg);
    transform:rotate(360deg);
  }
}

.load .loader:before,
.load .loader:after,
.load .loader{
  border-radius: 50%;
}

.load .loader{
  width: 100px;
  height: 100px;
  -webkit-animation:load3 1.4s infinite linear;
  animation:load3 1.4s infinite linear;
  background: red;
  position: relative;
  background: -webkit-linear-gradient(left, #ffffff 10%, rgba(255, 255, 255, 0) 42%);
  background: linear-gradient(to right,#fff 10%,rgba(255,255,255,0)42%)
}

.load .loader:before{
  content: '';
  position: absolute;
  background: #FFF;
  width: 50%;
  height: 50%;
  border-radius: 100% 0 0 0;
  top:0;
  left: 0;
}

.load .loader:after{
  position: absolute;
  width: 80%;
  height: 80%;
  content: '';
  background: #0dcecb;
  top:10%;
  left: 10%;
}

 

效果四:

  实现:其实div就是一个小小的圆,在旋转的圆点的圆心。通过设置周围包围的阴影来实现效果,动画是改变这外围的阴影的大小来实现的。主要是需要控制好点的位置与点的大小变换

.load4 .loader {
  font-size: 20px;
  margin: 5em auto;
  width: 1em;
  height: 1em;
  border-radius: 50%;
  position: relative;
  text-indent: -9999em;
  -webkit-animation: load4 1.3s infinite linear;
  animation: load4 1.3s infinite linear;
}
@keyframes load4 {
  0%,
  100% {
    box-shadow: 0em -3em 0em 0.2em #ffffff, 2em -2em 0 0em #ffffff, 3em 0em 0 -0.5em #ffffff, 2em 2em 0 -0.5em #ffffff, 0em 3em 0 -0.5em #ffffff, -2em 2em 0 -0.5em #ffffff, -3em 0em 0 -0.5em #ffffff, -2em -2em 0 0em #ffffff;
  }
  12.5% {
    box-shadow: 0em -3em 0em 0em #ffffff, 2em -2em 0 0.2em #ffffff, 3em 0em 0 0em #ffffff, 2em 2em 0 -0.5em #ffffff, 0em 3em 0 -0.5em #ffffff, -2em 2em 0 -0.5em #ffffff, -3em 0em 0 -0.5em #ffffff, -2em -2em 0 -0.5em #ffffff;
  }
  25% {
    box-shadow: 0em -3em 0em -0.5em #ffffff, 2em -2em 0 0em #ffffff, 3em 0em 0 0.2em #ffffff, 2em 2em 0 0em #ffffff, 0em 3em 0 -0.5em #ffffff, -2em 2em 0 -0.5em #ffffff, -3em 0em 0 -0.5em #ffffff, -2em -2em 0 -0.5em #ffffff;
  }
  37.5% {
    box-shadow: 0em -3em 0em -0.5em #ffffff, 2em -2em 0 -0.5em #ffffff, 3em 0em 0 0em #ffffff, 2em 2em 0 0.2em #ffffff, 0em 3em 0 0em #ffffff, -2em 2em 0 -0.5em #ffffff, -3em 0em 0 -0.5em #ffffff, -2em -2em 0 -0.5em #ffffff;
  }
  50% {
    box-shadow: 0em -3em 0em -0.5em #ffffff, 2em -2em 0 -0.5em #ffffff, 3em 0em 0 -0.5em #ffffff, 2em 2em 0 0em #ffffff, 0em 3em 0 0.2em #ffffff, -2em 2em 0 0em #ffffff, -3em 0em 0 -0.5em #ffffff, -2em -2em 0 -0.5em #ffffff;
  }
  62.5% {
    box-shadow: 0em -3em 0em -0.5em #ffffff, 2em -2em 0 -0.5em #ffffff, 3em 0em 0 -0.5em #ffffff, 2em 2em 0 -0.5em #ffffff, 0em 3em 0 0em #ffffff, -2em 2em 0 0.2em #ffffff, -3em 0em 0 0em #ffffff, -2em -2em 0 -0.5em #ffffff;
  }
  75% {
    box-shadow: 0em -3em 0em -0.5em #ffffff, 2em -2em 0 -0.5em #ffffff, 3em 0em 0 -0.5em #ffffff, 2em 2em 0 -0.5em #ffffff, 0em 3em 0 -0.5em #ffffff, -2em 2em 0 0em #ffffff, -3em 0em 0 0.2em #ffffff, -2em -2em 0 0em #ffffff;
  }
  87.5% {
    box-shadow: 0em -3em 0em 0em #ffffff, 2em -2em 0 -0.5em #ffffff, 3em 0em 0 -0.5em #ffffff, 2em 2em 0 -0.5em #ffffff, 0em 3em 0 -0.5em #ffffff, -2em 2em 0 0em #ffffff, -3em 0em 0 0em #ffffff, -2em -2em 0 0.2em #ffffff;
  }
}

 

效果5:跟4差不多,改变的是透明度

.load .loader {
  margin: 4em auto;
  font-size: 25px;
  width: 1em;
  height: 1em;
  border-radius: 50%;
  position: relative;
  text-indent: -9999em;
  -webkit-animation: load5 1.1s infinite ease;
  animation: load5 1.1s infinite ease;
}
@-webkit-keyframes load5 {
  0%,
  100% {
    box-shadow: 0em -2.6em 0em 0em #ffffff, 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2), 2.5em 0em 0 0em rgba(255, 255, 255, 0.2), 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.2), 0em 2.5em 0 0em rgba(255, 255, 255, 0.2), -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.2), -2.6em 0em 0 0em rgba(255, 255, 255, 0.5), -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.7);
  }
  12.5% {
    box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.7), 1.8em -1.8em 0 0em #ffffff, 2.5em 0em 0 0em rgba(255, 255, 255, 0.2), 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.2), 0em 2.5em 0 0em rgba(255, 255, 255, 0.2), -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.2), -2.6em 0em 0 0em rgba(255, 255, 255, 0.2), -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.5);
  }
  25% {
    box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.5), 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.7), 2.5em 0em 0 0em #ffffff, 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.2), 0em 2.5em 0 0em rgba(255, 255, 255, 0.2), -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.2), -2.6em 0em 0 0em rgba(255, 255, 255, 0.2), -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2);
  }
  37.5% {
    box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.2), 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.5), 2.5em 0em 0 0em rgba(255, 255, 255, 0.7), 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.2), 0em 2.5em 0 0em rgba(255, 255, 255, 0.2), -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.2), -2.6em 0em 0 0em rgba(255, 255, 255, 0.2), -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2);
  }
  50% {
    box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.2), 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2), 2.5em 0em 0 0em rgba(255, 255, 255, 0.5), 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.7), 0em 2.5em 0 0em #ffffff, -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.2), -2.6em 0em 0 0em rgba(255, 255, 255, 0.2), -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2);
  }
  62.5% {
    box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.2), 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2), 2.5em 0em 0 0em rgba(255, 255, 255, 0.2), 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.5), 0em 2.5em 0 0em rgba(255, 255, 255, 0.7), -1.8em 1.8em 0 0em #ffffff, -2.6em 0em 0 0em rgba(255, 255, 255, 0.2), -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2);
  }
  75% {
    box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.2), 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2), 2.5em 0em 0 0em rgba(255, 255, 255, 0.2), 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.2), 0em 2.5em 0 0em rgba(255, 255, 255, 0.5), -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.7), -2.6em 0em 0 0em #ffffff, -1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2);
  }
  87.5% {
    box-shadow: 0em -2.6em 0em 0em rgba(255, 255, 255, 0.2), 1.8em -1.8em 0 0em rgba(255, 255, 255, 0.2), 2.5em 0em 0 0em rgba(255, 255, 255, 0.2), 1.75em 1.75em 0 0em rgba(255, 255, 255, 0.2), 0em 2.5em 0 0em rgba(255, 255, 255, 0.2), -1.8em 1.8em 0 0em rgba(255, 255, 255, 0.5), -2.6em 0em 0 0em rgba(255, 255, 255, 0.7), -1.8em -1.8em 0 0em #ffffff;
  }
}

 

效果6-8与上面的效果大同小异,代码就不po了~

posted @ 2014-11-05 15:15  若叶知秋  阅读(289)  评论(0编辑  收藏  举报