20

私は3〜4日からこれを試していますが、このアニメーションを作成する方法を理解できません。CSS3のみを使用してこのようなアニメーションを作成できるかどうかさえわかりません。

原子

使用してみanimation-direction:alternate;ましたが、このフローを特定の角度で取得できず、正方形にアニメーション化できません..しかし、アトムがアニメーション化する方法ではありません。純粋なCSS3を使用してこれを実現する方法はありますか?そうでない場合、jQueryに解決策はありますか?

4

3 に答える 3

17

これをオンラインで見つけました。

この特性を利用しtransform-style: preserve-3d、電子をx、y、z軸上で回転させて、この3D効果を実現します。

HTML構造

<div id="main">
    <div id="atom">
        <div class="orbit">
            <div class="path">
                <div class="electron"></div>
            </div>
        </div>
        <div class="orbit">
            <div class="path">
                <div class="electron"></div>
            </div>
        </div>
        <div class="orbit">
            <div class="path">
                <div class="electron"></div>
            </div>
        </div>
        <div class="orbit">
            <div class="path">
                <div class="electron"></div>
            </div>
        </div>
        <div id="nucleus"></div>
    </div>
</div>

CSS

.orbit { 
    -webkit-transform-style: preserve-3d; 
    -webkit-transform: rotateX(80deg) rotateY(20deg);
}

#atom .orbit:nth-child(2) { 
   -webkit-transform: rotateX(80deg) rotateY(70deg)
}
#atom .orbit:nth-child(3) { 
   -webkit-transform: rotateX(80deg) rotateY(-20deg)
}
#atom .orbit:nth-child(4) { 
   -webkit-transform: rotateX(80deg) rotateY(-50deg)
}

.path { 
    -webkit-transform-style: preserve-3d;
    -webkit-animation-name: pathRotate;
    -webkit-animation-duration: 2s;
    -webkit-animation-iteration-count: infinite;
    -webkit-animation-timing-function: linear; 
}

.electron { 
    -webkit-animation-name: electronFix; 
    -webkit-animation-duration: 2s; 
    -webkit-animation-iteration-count: infinite; 
    -webkit-animation-timing-function: linear;  
}

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

@-webkit-keyframes electronFix { 
    from { 
       -webkit-transform: rotateX(90deg) rotateY(0deg); 
    } to { 
       -webkit-transform: rotateX(90deg) rotateY(-360deg); 
    } 
}

フィドル

ブログ投稿

于 2012-10-06T06:43:46.800 に答える
7

CSSで間違いなく可能です。@prashanthの投稿に気付く前に、概念実証として非常に基本的なものをまとめました。彼が見つけたものはすごい涼しいです、しかしここにとにかく私のものがあります...超裸の骨ですが少しいじくり回していて、それはかなりよく見えるでしょう。

http://jsfiddle.net/BZFJ8/2/

于 2012-10-06T07:09:07.917 に答える
0

これもあなたが求めていたもののように見えると思いますが、Chrome9の時点でSafariのみのアニメーション用であると彼らは言いました

http://bgre.at/demo/CSS3-atom/index.html

互換性のあるブラウザを気にするなら、Jqueryで解決策を見つけるかもしれません。

于 2012-10-06T12:29:47.087 に答える