Animasi Spin CSS3

158

Saya telah meninjau beberapa demo dan tidak tahu mengapa saya tidak bisa mengaktifkan spin CSS3. Saya menggunakan rilis stabil terbaru dari Chrome.

Biola: http://jsfiddle.net/9Ryvs/1/

div {
  margin: 20px;
  width: 100px;
  height: 100px;
  background: #f00;
  -webkit-animation-name: spin;
  -webkit-animation-duration: 40000ms;
  -webkit-animation-iteration-count: infinite;
  -webkit-animation-timing-function: linear;
  -moz-animation-name: spin;
  -moz-animation-duration: 40000ms;
  -moz-animation-iteration-count: infinite;
  -moz-animation-timing-function: linear;
  -ms-animation-name: spin;
  -ms-animation-duration: 40000ms;
  -ms-animation-iteration-count: infinite;
  -ms-animation-timing-function: linear;
  -o-transition: rotate(3600deg);
}
<div></div>

iambriansed
sumber

Jawaban:

299

Untuk menggunakan Animasi CSS3, Anda juga harus menentukan kerangka kunci animasi yang sebenarnya ( yang Anda beri namaspin )

Baca https://developer.mozilla.org/en-US/docs/CSS/Tutorials/Using_CSS_animations untuk info lebih lanjut

Setelah mengonfigurasi waktu animasi, Anda harus menentukan tampilan animasi. Ini dilakukan dengan membuat dua atau lebih keyframe menggunakan @keyframesat-rule. Setiap kerangka kunci menjelaskan bagaimana elemen animasi harus ditampilkan pada waktu tertentu selama urutan animasi.


Demo di http://jsfiddle.net/gaby/9Ryvs/7/

@-moz-keyframes spin {
    from { -moz-transform: rotate(0deg); }
    to { -moz-transform: rotate(360deg); }
}
@-webkit-keyframes spin {
    from { -webkit-transform: rotate(0deg); }
    to { -webkit-transform: rotate(360deg); }
}
@keyframes spin {
    from {transform:rotate(0deg);}
    to {transform:rotate(360deg);}
}
Gabriele Petrioli
sumber
9
Anda mendapatkan ✓ karena Anda menjelaskannya dengan terbaik dan Anda adalah satu-satunya jawaban yang menyertakan semua versi awalan.
iambriansreed
53
Ini super nitpicky, tetapi Anda harus benar-benar menghidupkannya hingga 359 derajat. 360 dan 0 derajat adalah sama secara radial, sehingga animasi akan berhenti sebentar pada putaran penuh.
Adam Grant
1
@ AdamGrant Terima kasih, ini hampir membuat saya sakit kepala hari ini lol
mattslone
5
Anda ingin menghidupkan hingga 359,9999999999 derajat, bukan 359. Derajat rotasi adalah kisaran terus menerus dari [0, 360) dan jika Anda memutar ke 359.0 Anda akan memiliki centang 1 derajat pada awal setiap rotasi ketika ia berputar dari 359 ke 0 .
mdonoughe
16
Untuk memperjelas semua komentar ini yang memberikan informasi yang salah ... jawaban yang dipilih BENAR-BENAR tanpa modifikasi. 0 dan 360 deg sebenarnya berbeda di mata browser, sementara masih menjadi titik yang sama. Misalnya jika Anda mencoba memutarnya dari 0deg ke 0deg (atau 360deg ke 360deg), itu tidak akan berputar sama sekali. Memutarnya dari 0deg ke 360deg memberitahu browser untuk mengubah objek 360 derajat penuh sebelum menyelesaikan animasi. Atur animation-iteration-count: infinite;dan Anda akan memiliki bingkai tanpa batas dalam animasi. Bahkan rotasi 20 menit akan terlihat sempurna & mulus.
jacurtis
28

Anda belum menentukan kerangka kunci apa pun. Saya membuatnya bekerja di sini .

div {
    margin: 20px;
    width: 100px; 
    height: 100px;    
    background: #f00;
    -webkit-animation: spin 4s infinite linear;
}

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

Anda sebenarnya dapat melakukan banyak hal yang sangat keren dengan ini. Ini yang saya buat sebelumnya .

:)

NB Anda dapat melewati keharusan menuliskan semua awalan jika Anda menggunakan -prefix-free .

Jezen Thomas
sumber
17

Pada Chrome / FF terbaru dan pada IE11 tidak perlu awalan -ms / -moz / -webkit. Berikut kode yang lebih pendek (berdasarkan jawaban sebelumnya):

div {
    margin: 20px;
    width: 100px;
    height: 100px;
    background: #f00;

    /* The animation part: */
    animation-name: spin;
    animation-duration: 4000ms;
    animation-iteration-count: infinite;
    animation-timing-function: linear;
}
@keyframes spin {
    from {transform:rotate(0deg);}
    to {transform:rotate(360deg);}
}

Demo Langsung: http://jsfiddle.net/9Ryvs/3057/

oriadam
sumber
5
Kombinasikan aturan animasi dengan steno animation: spin 4s linear infinite.
Josh Habdas
10

HTML dengan glyphicon font-mengagumkan.

<span class="fa fa-spinner spin"></span>

CSS

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

.spin {
    animation: spin 1000ms linear infinite;
}
Pere Pages
sumber
1
Anda juga mendapatkan upvote saya untuk menambahkan definisi .spin
Blair Connolly
6

Satu-satunya jawaban yang memberikan 359deg yang benar:

@keyframes spin {
  from { transform: rotate(0deg); }
  to { transform: rotate(359deg); }
}

&.active {
  animation: spin 1s linear infinite;
}

Berikut adalah gradien yang berguna sehingga Anda dapat membuktikannya berputar (jika itu adalah lingkaran):

background: linear-gradient(to bottom, #000000 0%,#ffffff 100%);
danday74
sumber
4

Untuk memutar, Anda dapat menggunakan bingkai kunci dan transformasi.

div {
    margin: 20px;
    width: 100px; 
    height: 100px;    
    background: #f00;
    -webkit-animation-name: spin;
    -webkit-animation-duration: 40000ms;
    -webkit-animation-iteration-count: infinite;
    -webkit-animation-timing-function: linear;
    -moz-animation-name: spin;
    -moz-animation-duration: 40000ms;
    -moz-animation-iteration-count: infinite;
    -moz-animation-timing-function: linear;
    -ms-animation-name: spin;
    -ms-animation-duration: 40000ms;
    -ms-animation-iteration-count: infinite;
    -ms-animation-timing-function: linear;
}

@-webkit-keyframes spin {
  from {
    -webkit-transform:rotate(0deg);
  }

  to {
    -webkit-transform:rotate(360deg);
  }
}

Contoh


sumber
4

Demi penyelesaian, berikut adalah contoh Sass / Kompas yang benar-benar memperpendek kode, CSS yang dikompilasi akan menyertakan awalan yang diperlukan, dll.

div
  margin: 20px
  width: 100px 
  height: 100px    
  background: #f00
  +animation(spin 40000ms infinite linear)

+keyframes(spin)
  from
    +transform(rotate(0deg))
  to
    +transform(rotate(360deg))
miphe
sumber
0
@keyframes spin {
    from {transform:rotate(0deg);}
    to {transform:rotate(360deg);}
}

ini akan membuat Anda menjawab pertanyaan itu

sudarshan
sumber
Tampaknya ini hanya pengulangan dari jawaban yang ada ini .
Pang