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

我认为这个看起来也像您要求的那样,但他们说它仅适用于 Chrome 9 的 Safari 动画

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

如果您关心浏览器的兼容性,您可能会找到使用 Jquery 的解决方案。

于 2012-10-06T12:29:47.087 回答