ภาพเคลื่อนไหวการหมุน CSS ไม่มีที่สิ้นสุด


146

ฉันต้องการหมุนไอคอนการโหลดด้วย CSS

ฉันมีไอคอนและรหัสต่อไปนี้:

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

แต่มันไม่ทำงาน ไอคอนสามารถหมุนโดยใช้ CSS ได้อย่างไร


3
โซลูชั่นที่ก่อตั้งขึ้น - jsfiddle.net/LwwfGตอบโปรดปิดคำถาม
Alexander Ruliov

3
คุณสามารถเพิ่มคำตอบของคุณเอง ในนั้นรวมรหัสจากในการสาธิต jsFiddle ของคุณ
สามสิบ

คำตอบ:


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
คำถามเดียวมี-moz-และ-ms-คำนำหน้าจำเป็นภายใต้-webkit-keyframes? เนื่องจาก webkit เท่านั้นที่จะอ่าน-webkit-keyframesฉันเชื่อว่ามันปลอดภัยที่จะลบออก
Bor691

2
ฉันถูกต้องในการทำความเข้าใจหรือไม่นี่ไม่ใช่เหตุผลที่สมบูรณ์แบบเนื่องจากคุณสมบัติที่ไม่ใช่คำนำหน้าผู้ขายควรจะอยู่ได้ตลอดเพื่อหลีกเลี่ยงพฤติกรรมที่สอดคล้องกับมาตรฐานหรือไม่ ดู: css-tricks.com/ordering-css3-properties

เย็น. ตรวจสอบก่อนแก้ไข ไม่แน่ใจ 100%

@Ricky - เคล็ดลับ: เมื่อคุณได้พูดคุยแก้ไขกับผู้เขียน (ดังกล่าวข้างต้น) มันไม่ควรพูดถึงใน "แก้ไขความคิดเห็น" ดังนั้นการแก้ไขจึงไม่ถูกปฏิเสธว่าเป็น "การเปลี่ยนแปลงที่รุนแรง" ;-)
Leigh

1
หากคุณกำลังใช้ PostCSS พิจารณาใช้ autoprefixer transformที่จะจัดการกับปัญหาทั้งหมดที่เบราว์เซอร์ข้ามเมื่อเพียงแค่ใช้
Michał Pietraszko

88

ทำงานได้ดี:

#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>


มี crossbrowser css solution หรือไม่?
อังเดร

13

นิเมชั่นการหมุนที่ไม่มีที่สิ้นสุดใน 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 - ภาพเคลื่อนไหว CSS ของเว็บ


6

ไม่มีคำนำหน้าใด ๆ เช่นที่ง่ายที่สุด:

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

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

5

ใช้งานได้ในเบราว์เซอร์ที่ทันสมัยทั้งหมด

.rotate{
 animation: loading 3s linear infinite;
 @keyframes loading {
  0% { 
    transform: rotate(0); 
  }
  100% { 
    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

การหมุนในการเพิ่มคลาส. 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
@keyframes rotate {
    100% {
        transform: rotate(1turn);
    }
}

div{
   animation: rotate 4s linear infinite;
}

3
สวัสดียินดีต้อนรับสู่ Stack Overflow! เมื่อคุณตอบคำถามคุณควรมีคำอธิบายบางอย่างเช่นสิ่งที่ผู้เขียนทำผิดและสิ่งที่คุณทำเพื่อแก้ไข ฉันกำลังบอกคุณนี้เพราะคำตอบของคุณถูกตั้งค่าสถานะว่ามีคุณภาพต่ำและกำลังได้รับการตรวจสอบ คุณสามารถแก้ไขคำตอบได้โดยคลิกที่ปุ่ม "แก้ไข"
Federico Grandi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.