就是类似一个点绕圆心旋转那种,比如地球绕着太阳转。思路是什么?有木有demo或者例子啊,搜索半天没有结果。
demo就不写了,提供个CSS3的思路吧:
html定义三个元素如右,<div class="canvas"><div class="sun"></div><div class="earth"></div></div>;用css将.canvas渲染为一个透明正方形,将.sun渲染为黄色圆形(其实是圆角方形),定位在.canvas的中央,将.earth渲染为蓝色圆形,置于.canvas的任意为中心位置,给.canvas增加一个css旋转的animation,循环次数为infinite,就算完成了;
以上提到的css属性的写法都不难,在手册上或者搜索引擎中都能很容易找到,题主可以尝试一下。
以上html元素使用svg替代更好,如果你有兴趣的话。
然后,js就更方便了,可以用js操作普通元素,也可以操作svg元素,还可以直接用canvas画布,并且可以直接使用js自带的三角函数计算坐标来控制旋转的个体,而不用像上面那样旋转画布来取巧,这样便可以添加多个旋转速率和圆心不同天体,封装成几个类的话,轻松绘制简易太阳系也没有问题。
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>CSS3自动旋转效果</title>
<style>
.swiper-container{
width:100%;
margin:300px auto;
position:relative;
}
.swip_center_img{
-moz-animation:rotate 20s infinite linear;
-webkit-animation:rotate 20s infinite linear;
animation:rotate 20s infinite linear;
position:absolute;
left:50%;
top:50%;
}
.center_img{
background:rgba(120,220,210,.7);
}
.swip_img_radius{
padding:10px;
width:100px;
height:100px;
border-radius:50%;
box-shadow:inset rgba(0,0,0,.2) .2em .2em 1em;
-moz-transition:all .5s;
-webkit-transition:all .5s;
transition:all .5s;
}
@-moz-keyframes rotate{
0%{
-moz-transform:rotate(0deg);
}
100%{
-moz-transform:rotate(360deg);
}
}
@-webkit-keyframes rotate{
0%{
-webkit-transform:rotate(0deg);
}
100%{
-webkit-transform:rotate(360deg);
}
}
@keyframes rotate{
0%{
transform:rotate(0deg);
}
100%{
transform:rotate(360deg);
}
}
.translate_right_top{
background:rgba(23,43,45,.7);
-moz-transform:translate(140px,-140px);
-webkit-transform:translate(140px,-140px);
transform:translate(140px,-140px);
}
.translate_right{
background:rgba(123,43,45,.7);
-moz-transform:translate(170px);
-webkit-transform:translate(170px);
transform:translate(170px);
}
.translate_right_bottom{
background:rgba(123,73,55,.7);
-moz-transform:translate(140px,140px);
-webkit-transform:translate(140px,140px);
transform:translate(140px,140px);
}
.translate_bottom{
background:rgba(53,173,55,.7);
-moz-transform:translate(0,170px);
-webkit-transform:translate(0,170px);
transform:translate(0,170px);
}
.translate_left_bottom{
background:rgba(53,173,155,.7);
-moz-transform:translate(-140px,140px);
-webkit-transform:translate(-140px,140px);
transform:translate(-140px,140px);
}
.translate_left{
background:rgba(153,173,55,.7);
-moz-transform:translate(-170px);
-webkit-transform:translate(-170px);
transform:translate(-170px);
}
.translate_left_top{
background:rgba(53,273,55,.7);
-moz-transform:translate(-140px,-140px);
-webkit-transform:translate(-140px,-140px);
transform:translate(-140px,-140px);
}
.translate_top{
background:rgba(53,173,255,.7);
-moz-transform:translate(0,-170px);
-webkit-transform:translate(0,-170px);
transform:translate(0,-170px);
}
</style>
</head>
<body>
<header class="swiper-container">
<div class="swip_center_img">
<div class="swip_img_radius center_img"></div>
</div>
<div class="swip_center_img">
<div class="swip_img_radius translate_right_top"></div>
</div>
<div class="swip_center_img">
<div class="swip_img_radius translate_right"></div>
</div>
<div class="swip_center_img">
<div class="swip_img_radius translate_right_bottom"></div>
</div>
<div class="swip_center_img">
<div class="swip_img_radius translate_bottom"></div>
</div>
<div class="swip_center_img">
<div class="swip_img_radius translate_left_bottom"></div>
</div>
<div class="swip_center_img">
<div class="swip_img_radius translate_left"></div>
</div>
<div class="swip_center_img">
<div class="swip_img_radius translate_left_top"></div>
</div>
<div class="swip_center_img">
<div class="swip_img_radius translate_top"></div>
</div>
</header>
<script src="//cdn.bootcss.com/jquery/1.11.3/jquery.min.js"></script>
<script>
$(document).ready(function(){
$(".swiper-container").css("height",$(window).height());
});
</script>
</body>
</html>11 回答1.2k 阅读
1 回答862 阅读✓ 已解决
1 回答1.1k 阅读
2 回答781 阅读
2 回答627 阅读
2 回答605 阅读
1 回答687 阅读
https://codepen.io/kowlor/pen/ZYYQoy