CSS3回転アニメーション


244
<img class="image" src="" alt="" width="120" height="120">

このアニメーション画像を機能させることができません。360度回転するはずです。

以下のCSSはまだ静止しているため、何か問題があると思います。

.image {
    float: left;
    margin: 0 auto;
    position: absolute;
    top: 50%;
    left: 50%;
    width: 120px;
    height: 120px;
    margin-top: -60px;
    margin-left: -60px;

    -webkit-animation-name: spin;
    -webkit-animation-duration: 4000ms;
    -webkit-animation-iteration-count: infinite;
    -webkit-animation-timing-function: linear;

    -moz-animation-name: spin;
    -moz-animation-duration: 4000ms;
    -moz-animation-iteration-count: infinite;
    -moz-animation-timing-function: linear;

    -ms-animation-name: spin;
    -ms-animation-duration: 4000ms;
    -ms-animation-iteration-count: infinite;
    -ms-animation-timing-function: linear;

    animation-name: spin;
    animation-duration: 4000ms;
    animation-iteration-count: infinite;
    animation-timing-function: linear;

    @-ms-keyframes spin { 
        from { 
            -ms-transform: rotate(0deg); 
        } to { 
            -ms-transform: rotate(360deg); 
        }
    }
    @-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); 
        }
    }
}

回答:


520

こちらがデモです。正しいアニメーションCSS:

.image {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 120px;
    height: 120px;
    margin:-60px 0 0 -60px;
    -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); } }
<img class="image" src="http://i.stack.imgur.com/pC1Tv.jpg" alt="" width="120" height="120">


コードに関する注意事項:

  1. .imageルール内にキーフレームをネストしましたが、これは正しくありません
  2. float:left 絶対配置された要素では機能しません
  3. caniuseを見てください:IE10は-ms-プレフィックスを必要としません

13
誰かが自分のコードでこれを試した場合:下部にある@セクションを忘れないでください
ジャックM.

こんにちは5秒後にアニメーションの無限回転を停止できますか?
MD Ashik 2016年

16
アニメーションを実行すると、水がほとんど吐き出されました。
Razgriz

float:left won't work on absolutely positioned elements」、それは最小サイズにそれらを縮小します、しかし類似したものに表示:インラインブロックはありません
gregn3 '20年

32

私はあなたと同じものを使用した回転画像を持っています:

.knoop1 img{
    position:absolute;
    width:114px;
    height:114px;
    top:400px;
    margin:0 auto;
    margin-left:-195px;
    z-index:0;

    -webkit-transition-duration: 0.8s;
    -moz-transition-duration: 0.8s;
    -o-transition-duration: 0.8s;
    transition-duration: 0.8s;

    -webkit-transition-property: -webkit-transform;
    -moz-transition-property: -moz-transform;
    -o-transition-property: -o-transform;
     transition-property: transform;

     overflow:hidden;
}

.knoop1:hover img{
    -webkit-transform:rotate(360deg);
    -moz-transform:rotate(360deg); 
    -o-transform:rotate(360deg);
}

1
追加:transform:rotate(360deg);IEのために
ダスティ

3
壊れたウェブサイトのリンクからローカルの例を選択してください。
evolutionxbox

リンクが壊れています。
Markus Bucher

30

360度の回転を実現するために、これが実際のソリューションです。

HTML:

<img class="image" src="your-image.png">

CSS:

.image {
    overflow: hidden;
    transition-duration: 0.8s;
    transition-property: transform;
}
.image:hover {
    transform: rotate(360deg);
    -webkit-transform: rotate(360deg);
}

画像にカーソルを合わせると、360度回転効果が得られます。

PS:-webkit-Chromeやその他のWebkitブラウザーで機能するように拡張機能を追加します。ここでwebkitの更新されたフィドルを確認できます


Fiddleが機能しないChromeインスペクタはCSS、特に「transform」と「transition-property」が好きではありません。まあ。
Just Plain High

1
そのためには-webkit-tranform、それを機能させるためにを追加する必要があります。これが更新されたフィドルです。jsfiddle.net/sELBM/172-@JustPlainHigh
Nitesh

1
2017:これは非常によくサポートされており、非無限ローテーションを行うための推奨される方法です。-webkit-接頭辞は不要になり、安全に削除できます。ブラウザーサポート:caniuse.com/#search=transforms
Alph.Dev

2

画像を反転したい場合は、それを使用できます。

.image{
    width: 100%;
    -webkit-animation:spin 3s linear infinite;
    -moz-animation:spin 3s linear infinite;
    animation:spin 3s linear infinite;
}
@-moz-keyframes spin { 50% { -moz-transform: rotateY(90deg); } }
@-webkit-keyframes spin { 50% { -webkit-transform: rotateY(90deg); } }
@keyframes spin { 50% { -webkit-transform: rotateY(90deg); transform:rotateY(90deg); } }

0

.image {
    position: absolute;
    top: 50%;
    left: 50%;
    width: 120px;
    height: 120px;
    margin:-60px 0 0 -60px;
    -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); } }
<img class="image" src="http://i.stack.imgur.com/pC1Tv.jpg" alt="" width="120" height="120">


0

これを簡単に試してください

 
 .btn-circle span {
     top: 0;
   
      position: absolute;
     font-size: 18px;
       text-align: center;
    text-decoration: none;
      -webkit-animation:spin 4s linear infinite;
    -moz-animation:spin 4s linear infinite;
    animation:spin 4s linear infinite;
}

.btn-circle span :hover {
 color :silver;
}


/* rotate 360 key for refresh btn */
@-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); } } 
 <button type="button" class="btn btn-success btn-circle" ><span class="glyphicon">&#x21bb;</span></button>


-6

ここでこれはあなたを助けるはずです

以下のjsfiddleリンクは、画像を回転させる方法を理解するのに役立ちます。私は同じものを使用して時計の文字盤を回転させました。

http://jsfiddle.net/xw89p/

var rotation = function (){
   $("#image").rotate({
      angle:0, 
      animateTo:360, 
      callback: rotation,
      easing: function (x,t,b,c,d){       
          return c*(t/d)+b;
      }
   });
}
rotation();

ここで:•t:現在の時刻、

•b:begInnIng値、

•c:値の変更、

•d:期間、

•x:未使用

イージングなし(線形イージング):function(x、t、b、c、d){return b +(t / d)* c; }


2
あなたがもう少し多くの情報を提供するなら、私はこの答えを賛成します(フィドルで行うように)。また、私は「jQueryがそれを実行できることを知らなかった!!! ^ _ ^ フィドルを見て、ちょっと待って... U_U」
Just Plain High

2
(フィドルで行うような)x、t、b、c、d変数の説明と、OPから要求されたCSSソリューションではありませんが、非常にシンプルで効果的なjQueryプラグインソリューションであることを明確に述べています。 )
Just Plain High

3
反対投票。OPは、特にjQueryプラグインではなく、Javascriptソリューションを要求しませんでした。求められていることに固執する。
TheCarver 2015年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.