CSS弹跳线加载器动画

时间:2015-06-22 13:47:07

标签: html css animation

我试图创建一个简单的加载器动画,它来回绘制一条线,但目前只在一个方向上移动。一旦到达动画的中间,它就不会在相反的方向上制作动画。

这是我的css

@keyframes loader-animation {
     0% {
          width: 0%;
     }

     49% {
         width: 100%;
     }

     50% {
         left: 100%;
     }

     100% {
         left: 0%;
         width: 100%
     }
 }

 .loader {
     height: 5px;
     width: 100%;
 }

 .loader .bar {
     position: relative;
     height: 5px;
     background-color: dodgerblue;
     animation-name: loader-animation;
     animation-duration: 3s;
     animation-iteration-count: infinite;
     animation-timing-function: ease-in-out;
 } 

我的HTML

<div class="loader">
    <div class="bar"></div>
</div>

带有代码

jsfiddle

有人能告诉我我做错了吗?

2 个答案:

答案 0 :(得分:6)

这是因为49%50%之间存在重大差距。

 49% {
     width: 100%;
 }

 50% {
     left: 100%;
 }

left添加到49%,并调整widthleft等的一些属性会给您带来惊人的脉动效果:

@keyframes loader-animation {
    0% {
        width: 0%;
    }
    49% {
        width: 100%;
        left: 0%
    }
    50% {
        left: 100%;
    }
    100% {
        left: 0%;
        width: 100%
    }
}

<强>段

body {margin: 0; padding: 0;}
@keyframes loader-animation {
  0% {
    width: 0%;
  }
  49% {
    width: 100%;
    left: 0%
  }
  50% {
    left: 100%;
    width: 0;
  }
  100% {
    left: 0%;
    width: 100%
  }
}
.loader {
  height: 5px;
  width: 100%;
}
.loader .bar {
  position: absolute;
  height: 5px;
  background-color: dodgerblue;
  animation-name: loader-animation;
  animation-duration: 3s;
  animation-iteration-count: infinite;
  animation-timing-function: ease-in-out;
}
<div class="loader">
  <div class="bar"></div>
</div>

小提琴:http://jsfiddle.net/praveenscience/06w7zwwm/

如果您需要脉动效果,则需要使用两个极端:

@keyframes loader-animation {
    0% {
        left: -100%;
    }
    49% {
        left: 100%;
    }
    50% {
        left: 100%;
    }
    100% {
        left: -100%;
    }
}

<强>段

body {margin: 0; padding: 0; overflow: hidden;}
@keyframes loader-animation {
  0% {
    left: -100%;
  }
  49% {
    left: 100%;
  }
  50% {
    left: 100%;
  }
  100% {
    left: -100%;
  }
}
.loader {
  height: 5px;
  width: 100%;
}
.loader .bar {
  width: 100%;
  position: absolute;
  height: 5px;
  background-color: dodgerblue;
  animation-name: loader-animation;
  animation-duration: 3s;
  animation-iteration-count: infinite;
  animation-timing-function: ease-in-out;
}
<div class="loader">
  <div class="bar"></div>
</div>

答案 1 :(得分:2)

我稍微更改了您的代码,设法让它工作。以下是我改变的内容:

 @keyframes loader-animation {
     0% {
         left: -100%;
     }
     49% {
         left: 100%;
     }
     50% {
         left: 100%;
     }
     100% {
         left: -100%;
     }
 }

overflow: hidden;添加到.loader

width: 100%;添加到.loader .bar

http://jsfiddle.net/wbyzy9jL/5/