Dva: рд╕реАрдПрд╕рдПрд╕-рдореЙрдбреНрдпреВрд▓ рд╕рдВрдХрд▓рди рд╕рдорд╕реНрдпрд╛

рдХреЛ рдирд┐рд░реНрдорд┐рдд 29 рдирд╡ре░ 2016  ┬╖  2рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: dvajs/dva

рдХреАрдлрд╝реНрд░реЗрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп, рд╕реАрдПрд╕рдПрд╕-рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдорд╕реНрдпрд╛рдПрдВ рдкрд╛рдИ рдЧрдИрдВ:

рдореВрд▓ рд╕реАрдПрд╕рдПрд╕ рдХреЛрдб:

<strong i="7">@keyframes</strong> rotating {
  0% {
    transform: rotate(0);
  }
  100% {
    transform: rotate(360deg);
  }
}
.rotating-item {
  animation: 5s linear 0 infinite rotating;
}

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдореЗрдВ рд╕рдВрдХрд▓рд┐рдд:

@-webkit-keyframes rotating___3vsQl {
  0% {
    -webkit-transform: rotate(0);
            transform: rotate(0);
  }
  100% {
    -webkit-transform: rotate(360deg);
            transform: rotate(360deg);
  }
}
<strong i="11">@keyframes</strong> rotating___3vsQl {
  0% {
    -webkit-transform: rotate(0);
            transform: rotate(0);
  }
  100% {
    -webkit-transform: rotate(360deg);
            transform: rotate(360deg);
  }
}
.rotating-item___3pALh {
  -webkit-animation: 5s linear 0 infinite :local(rotating);
          animation: 5s linear 0 infinite :local(rotating);
}

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рд╣реА рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП:

@-webkit-keyframes rotating___3vsQl {
  0% {
    -webkit-transform: rotate(0);
            transform: rotate(0);
  }
  100% {
    -webkit-transform: rotate(360deg);
            transform: rotate(360deg);
  }
}
<strong i="15">@keyframes</strong> rotating___3vsQl {
  0% {
    -webkit-transform: rotate(0);
            transform: rotate(0);
  }
  100% {
    -webkit-transform: rotate(360deg);
            transform: rotate(360deg);
  }
}
.rotating-item___3pALh {
  -webkit-animation: 5s linear 0 infinite rotating___3vsQl;
          animation: 5s linear 0 infinite rotating___3vsQl;
}

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдпрд╣ рдПрдХ рд╕реАрдПрд╕рдПрд╕-рдореЙрдбреНрдпреВрд▓ рдмрдЧ рд╣реИ рдпрд╛ рд╡реЗрдмрдкреИрдХ рдореЗрдВ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рд╕рдорд╕реНрдпрд╛ рд╣реИред

рдзреНрдпрд╛рди рджреЗрдВ:

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдзрдиреНрдпрд╡рд╛рдж ЁЯЩП!

рд╣рд╛рдБ, рдпрд╣ рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рд╣реИ

animation: name .6s ease; // ш┐Щца╖цШпхПпф╗ечЪД
animation: .6s ease name; // шАМш┐Щца╖х░▒ф╕Нф╝ЪшвлшпЖхИлхИ░ф║Ж

рдореЛрдЬрд╝рд┐рд▓рд╛ рдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рджреНрд╡рд╛рд░рд╛ рдЦрдбрд╝рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ЁЯШВ

<single-animation> = <time> || <single-timing-function> || 
<time> || <single-animation-iteration-count> || <single-
animation-direction> || <single-animation-fill-mode> || 
<single-animation-play-state> || [ none | <keyframes-name> ]


/* <strong i="11">@keyframes</strong> duration | timing-function | delay | 
  iteration-count | direction | fill-mode | play-state | name */
 animation: 3s ease-in 1s 2 reverse both paused slidein;

/* <strong i="12">@keyframes</strong> duration | timing-function | delay | name */
 animation: 3s linear 1s slidein;

/* <strong i="13">@keyframes</strong> duration | name */
 animation: 3s slidein;

рд╕рднреА 2 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

https://github.com/css-modules/css-modules/issues/141#issuecomment -243011699
рдХреНрдпрд╛ рдпрд╣ рдЖрдкрдХреА рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдХрд░ рд╕рдХрддрд╛ рд╣реИ?

рдзрдиреНрдпрд╡рд╛рдж ЁЯЩП!

рд╣рд╛рдБ, рдпрд╣ рдареАрдХ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдкрд╛рдпрд╛ рдХрд┐ рд╕рдорд╕реНрдпрд╛ рд╣реИ

animation: name .6s ease; // ш┐Щца╖цШпхПпф╗ечЪД
animation: .6s ease name; // шАМш┐Щца╖х░▒ф╕Нф╝ЪшвлшпЖхИлхИ░ф║Ж

рдореЛрдЬрд╝рд┐рд▓рд╛ рдХреЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рджреНрд╡рд╛рд░рд╛ рдЦрдбрд╝рд╛ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ЁЯШВ

<single-animation> = <time> || <single-timing-function> || 
<time> || <single-animation-iteration-count> || <single-
animation-direction> || <single-animation-fill-mode> || 
<single-animation-play-state> || [ none | <keyframes-name> ]


/* <strong i="11">@keyframes</strong> duration | timing-function | delay | 
  iteration-count | direction | fill-mode | play-state | name */
 animation: 3s ease-in 1s 2 reverse both paused slidein;

/* <strong i="12">@keyframes</strong> duration | timing-function | delay | name */
 animation: 3s linear 1s slidein;

/* <strong i="13">@keyframes</strong> duration | name */
 animation: 3s slidein;
рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

itiwll picture itiwll  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

hanxiansen picture hanxiansen  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

not3 picture not3  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

kpaxqin picture kpaxqin  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

mclouvem picture mclouvem  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ