我将如何制作这个动画?

时间:2014-12-24 21:07:40

标签: javascript html css css3 animation

所以我有了这个想法。基本上,我想要一个圆形div在中心。而且我想要从div上取下一堆小线条,有点像从太阳射出的光线(它应该是它所代表的)。我该怎么办?我会使用JavaScript还是CSS3动画?

我现在可以做到这一点,但是几分钟之后它会变得非常迟钝,因为线条在离开页面后不会自行删除。我真的不知道该怎么做。而且,它看起来不是很好,因为我觉得我的方法非常原始。

棘手的一点是,大多数线条将以某种形式的角度行进(因为光线在所有360度的太阳下都会脱落),这意味着我必须设置边缘顶部和边缘左边缘或边缘右边同时以某种方式使它们完全按照我想要的方向进入...这可能是一个非常复杂的动画,不是......

任何人都知道一些指导我的教程会对此有所帮助吗?我希望这是有道理的......

1 个答案:

答案 0 :(得分:1)

以下是带有embedded styling and JQuery的基本HTML文档的代码。确保最大化浏览器窗口以查看动画。

<!DOCTYPE HTML>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<style type="text/css">
#sun
{
    position: absolute;
    top: 50%;
    left: 50%;
    margin-top: -200px;
    margin-left: -200px;
    width: 400px;
    height: 400px;
    background: yellow;
    border-radius: 200px;
    background-image: -moz-radial-gradient(45px 45px 60deg, circle cover, yellow 0%, orange 100%, red 95%);
    background-image: -webkit-radial-gradient(45px 45px, circle cover, yellow, orange);
    background-image: radial-gradient(45px 45px 60deg, circle cover, yellow 0%, orange 100%, red 95%);
}
.ray
{
    border-radius: 50%;
    width: 30px;
    height: 30px;
    background-color: orange;
    display: block;
    position: absolute;
    overflow: hidden;
    top: 50%;
    left: 50%;
    margin: -15px;
}
#one { transform: rotate(-45deg) translate(215px); }
#two { transform: rotate(-90deg)  translate(215px); }
#three { transform: rotate(-135deg) translate(215px); }
#four { transform: rotate(-180deg) translate(215px); }
#five { transform: rotate(-225deg) translate(215px); }
#six { transform: rotate(-270deg) translate(215px); }
#seven { transform: rotate(-315deg) translate(215px); }
#eight { transform: rotate(-360deg) translate(215px); }
</style>
</head>
<body>
<div id="sun"></div>
    <div id="one" class="ray"></div>
    <div id="two" class="ray"></div>
    <div id="three" class="ray"></div>
    <div id="four" class="ray"></div>
    <div id="five" class="ray"></div>
    <div id="six" class="ray"></div>
    <div id="seven" class="ray"></div>
    <div id="eight" class="ray"></div>
</div>
<script type="text/javascript">
function movement() {
$("#two").animate({top: '-=50'}, 300);
$("#three").animate({top: '-=35.35', left: '-=35.35'}, 300);
$("#four").animate({left: '-=50'}, 300);
$("#five").animate({top: '+=35.35', left: '-=35.35'}, 300);
$("#six").animate({top: '+=50'}, 300);
$("#seven").animate({top: '+=35.35', left: '+=35.35'}, 300);
$("#eight").animate({left: '+=50'}, 300);
$("#one").animate({top: '-=35.35', left: '+=35.35'}, 300);
//Reverse Animation
$("#two").animate({top: '+=50'}, 450);
$("#three").animate({top: '+=35.35', left: '+=35.35'}, 450);
$("#four").animate({left: '+=50'}, 450);
$("#five").animate({top: '-=35.35', left: '+=35.35'}, 450);
$("#six").animate({top: '-=50'}, 450);
$("#seven").animate({top: '-=35.35', left: '-=35.35'}, 450);
$("#eight").animate({left: '-=50'}, 450);
$("#one").animate({top: '+=35.35', left: '-=35.35'}, 450);
setTimeout(movement, 750);
}
$(document).ready(function() {
    movement();
});
</script>
</body>
</html>