CSS-Animation mit endloser Rotation


146

Ich möchte mein Ladesymbol per CSS drehen.

Ich habe ein Symbol und den folgenden Code:

<style>
#test {
    width: 32px;
    height: 32px;
    background: url('refresh.png');
}

.rotating {
    -webkit-transform: rotate(360deg);
    -webkit-transition-duration: 1s;
    -webkit-transition-delay: now;
    -webkit-animation-timing-function: linear;
    -webkit-animation-iteration-count: infinite;
}
</style>

<div id='test' class='rotating'></div>

Aber es funktioniert nicht. Wie kann das Symbol mit CSS gedreht werden?


3
Gründungslösung - jsfiddle.net/LwwfG bitte antworten, um die Frage zu schließen.
Alexander Ruliov

3
Sie können Ihre eigene Antwort hinzufügen. Fügen Sie den Code aus Ihrer jsFiddle-Demo hinzu.
30.

Antworten:


263

@-webkit-keyframes rotating /* Safari and Chrome */ {
  from {
    -webkit-transform: rotate(0deg);
    -o-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  to {
    -webkit-transform: rotate(360deg);
    -o-transform: rotate(360deg);
    transform: rotate(360deg);
  }
}
@keyframes rotating {
  from {
    -ms-transform: rotate(0deg);
    -moz-transform: rotate(0deg);
    -webkit-transform: rotate(0deg);
    -o-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  to {
    -ms-transform: rotate(360deg);
    -moz-transform: rotate(360deg);
    -webkit-transform: rotate(360deg);
    -o-transform: rotate(360deg);
    transform: rotate(360deg);
  }
}
.rotating {
  -webkit-animation: rotating 2s linear infinite;
  -moz-animation: rotating 2s linear infinite;
  -ms-animation: rotating 2s linear infinite;
  -o-animation: rotating 2s linear infinite;
  animation: rotating 2s linear infinite;
}
<div 
  class="rotating"
  style="width: 100px; height: 100px; line-height: 100px; text-align: center;" 
 >Rotate</div>


12
eine Frage, sind -moz-und -ms-Präfixe unter notwendig -webkit-keyframes? Da nur das Webkit gelesen wird, -webkit-keyframesglaube ich, dass es sicher ist, sie zu entfernen.
Bor691

2
Habe ich Recht, wenn ich verstehe, dass dies theoretisch nicht perfekt ist, da die Eigenschaften ohne Herstellerpräfix immer die letzten sein sollten, um standardkonformes Verhalten nicht zu überschreiben? Siehe: css-tricks.com/ordering-css3-properties

Cool. Wurde vor dem Bearbeiten überprüft. War nicht 100% sicher.

@ Ricky - Tipp: Wenn Sie bereits eine Bearbeitung mit dem Autor besprochen haben (wie oben), ist es keine schlechte Idee, dies in den "Kommentaren bearbeiten" zu erwähnen. Die Bearbeitung wird also nicht als "radikale Veränderung" abgelehnt ;-)
Leigh

1
Wenn Sie PostCSS verwenden, sollten Sie Autoprefixer verwenden, um alle browserübergreifenden Probleme zu lösen, wenn Sie nur PostCSS verwenden transform.
Michał Pietraszko

88

Funktioniert gut:

#test {
    width: 11px;
    height: 14px;
    background: url('data:image/gif;base64,R0lGOD lhCwAOAMQfAP////7+/vj4+Hh4eHd3d/v7+/Dw8HV1dfLy8ubm5vX19e3t7fr 6+nl5edra2nZ2dnx8fMHBwYODg/b29np6eujo6JGRkeHh4eTk5LCwsN3d3dfX 13Jycp2dnevr6////yH5BAEAAB8ALAAAAAALAA4AAAVq4NFw1DNAX/o9imAsB tKpxKRd1+YEWUoIiUoiEWEAApIDMLGoRCyWiKThenkwDgeGMiggDLEXQkDoTh CKNLpQDgjeAsY7MHgECgx8YR8oHwNHfwADBACGh4EDA4iGAYAEBAcQIg0Dk gcEIQA7');
}

@-webkit-keyframes rotating {
    from{
        -webkit-transform: rotate(0deg);
    }
    to{
        -webkit-transform: rotate(360deg);
    }
}

.rotating {
    -webkit-animation: rotating 2s linear infinite;
}
<div id='test' class='rotating'></div>


Gibt es eine Crossbrowser-CSS-Lösung?
Andrej

13

Animation mit unendlicher Rotation in CSS

/* ENDLESS ROTATE */
.rotate{
  animation: rotate 1.5s linear infinite; 
}
@keyframes rotate{
  to{ transform: rotate(360deg); }
}


/* SPINNER JUST FOR DEMO */
.spinner{
  display:inline-block; width: 50px; height: 50px;
  border-radius: 50%;
  box-shadow: inset -2px 0 0 2px #0bf;
}
<span class="spinner rotate"></span>

MDN - Web CSS Animation


6

Ohne Präfixe, zB am einfachsten:

.loading-spinner {
  animation: rotate 1.5s linear infinite;
}

@keyframes rotate {
  to {
    transform: rotate(360deg);
  }
}

5

Funktioniert in allen modernen Browsern

.rotate{
 animation: loading 3s linear infinite;
 @keyframes loading {
  0% { 
    transform: rotate(0); 
  }
  100% { 
    transform: rotate(360deg);
  }
 }
}

2

Drehung beim Hinzufügen der Klasse .active

  .myClassName.active {
                -webkit-animation: spin 4s linear infinite;
                -moz-animation: spin 4s linear infinite;
                animation: spin 4s linear infinite;
              }



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

1
<style>
div
{  
     height:200px;
     width:200px;
     -webkit-animation: spin 2s infinite linear;    
}
@-webkit-keyframes spin {
    0%  {-webkit-transform: rotate(0deg);}
    100% {-webkit-transform: rotate(360deg);}   
}

</style>
</head>

<body>
<div><img src="1.png" height="200px" width="200px"/></div>
</body>

1
@keyframes rotate {
    100% {
        transform: rotate(1turn);
    }
}

div{
   animation: rotate 4s linear infinite;
}

3
Hallo, willkommen bei Stack Overflow! Wenn Sie eine Frage beantworten, sollten Sie eine Erklärung hinzufügen, z. B. was der Autor falsch gemacht hat und was Sie getan haben, um das Problem zu beheben. Ich sage Ihnen dies, weil Ihre Antwort als minderwertig gekennzeichnet wurde und derzeit überprüft wird. Sie können Ihre Antwort bearbeiten , indem Sie auf die Schaltfläche "Bearbeiten" klicken.
Federico Grandi
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.