2015-06-22 2 views
1

Im пытается создать простую анимацию загрузчика, которая рисует линию вперед и назад, но в настоящее время движется только в одном направлении. Как только он достигает середины анимации, он не оживляется в противоположном направлении.анимация анимации линии подкачки CSS

Это мой 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 с кодом

Может кто-нибудь сказать мне, что я делаю неправильно?

ответ

3

Это потому, что у вас большой перерыв между 49% и 50%.

49% { 
    width: 100%; 
} 

50% { 
    left: 100%; 
} 

left Добавление к 49% и доведением несколько свойств из width, left и т.д. дает удивительный пульсирующий эффект:

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

Snippet

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>

Fiddle: http://jsfiddle.net/praveenscience/06w7zwwm/

Если вам нужен пульсирующий эффект, вам нужно использовать две крайности:

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

SNIPPET

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>

+0

День 30. Еще ждет пропущено, чтобы закончить загрузки –

+0

@NicoO Я не 'Т понять. Если вы саркастичны, тогда ха-ха! ': D' –

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

Смежные вопросы