CSS3来绘制一个3维立体游泳圈_Css3动画(一) 如何画3D旋转效果或者卫星围绕旋转效果...

这篇博客介绍了如何利用CSS3来绘制一个3D立体的游泳圈,并通过CSS3动画实现旋转效果。作者详细展示了计算角度、设置属性以及应用关键帧动画的步骤,创建了一个卫星围绕旋转的视觉效果。
摘要由CSDN通过智能技术生成

const outWidth = $(".out_circle").width()

$(".out_circle").height(outWidth)

// 获取半径

const rWidth = outWidth / 2

// 获得弧度

const radian = 2 * Math.PI / 360 * 60

// 长边

const langWidth = Math.sin(radian) * rWidth

// icon的长度

const iconWidth = $(".img_top").width()

$(".img_top").css({

top: 0 - iconWidth / 2,

left: rWidth - iconWidth / 2

})

$(".img_bottom").css({

top: rWidth * 1.5 - iconWidth / 2,

left: rWidth - langWidth - iconWidth / 2

})

$(".img_bottom2").css({

top: rWidth * 1.5 - iconWidth / 2,

left: outWidth - (rWidth - langWidth) - iconWidth / 2

})

css(sass格式)内容:

.star-animate {

width: 100%;

height: 100%;

background: url("~Images/animateList/1/bg.jpeg");

background-size: cover;

.out_circle{

width: 400px;

height: 400px;

margin: auto;

border-radius:50%;

position: relative;

transform-style: preserve-3d;

-webkit-transform-style: preserve-3d;

perspective: 30000;

-webkit-perspective: 30000;

transform: rotateX(76deg);

-webkit-transform: rotateX(76deg); /* Safari and Chrome */

}

.center-img1 {

animation: rotate_change1 13s linear infinite;

-webkit-animation:rotate_change1 13s linear infinite;

-moz-animation:rotate_change1 13s linear infinite;

-o-animation:rotate_change1 13s linear infinite;

}

.center-img1 {

position: absolute;

left: 6%;

top: 25.5%;

width: 88%;

height: 49%;

transform: rotateX(70deg);

-webkit-transform: rotateX(70deg); /* Safari and Chrome */

}

.test-div {

position: absolute;

width: 200px;

height: 625px;

background: red;

left: 128px;

top: -71px;

}

.nav_circle{

width:100%;

height:100%;

float:left;

position:absolute;

top:0;

text-align:center;

transform-style: preserve-3d;

-webkit-transform-style: preserve-3d;

}

@keyframes rotate_change1{

0%{

transform:rotate(0deg) rotateX(-70deg) skew(0deg) scale(1);

-ms-transform:rotate(0deg) rotateX(-70deg) skew(0deg) scale(1);

-moz-transform:rotate(0deg) rotateX(-70deg) skew(0deg) scale(1);

-webkit-transform:rotate(0deg) rotateX(-70deg) skew(0deg) scale(1);

-o-transform:rotate(0deg) rotateX(-70deg) skew(0deg) scale(1);

}

100%{

transform:rotate(-360deg) rotateX(-70deg) skew(0deg) scale(1);

-ms-transform:rotate(-360deg) rotateX(-70deg) skew(0deg) scale(1);

-moz-transform:rotate(-360deg) rotateX(-70deg) skew(0deg) scale(1);

-webkit-transform:rotate(-360deg) rotateX(-70deg) skew(0deg) scale(1);

-o-transform:rotate(-360deg) rotateX(-70deg) skew(0deg) scale(1);

}

}

@keyframes rotate_change2{

0%{

transform:rotate(0deg) rotateX(-70deg) skew(0deg) scale(1);

-ms-transform:rotate(0deg) rotateX(-70deg) skew(0deg) scale(1);

-moz-transform:rotate(0deg) rotateX(-70deg) skew(0deg) scale(1);

-webkit-transform:rotate(0deg) rotateX(-70deg) skew(0deg) scale(1);

-o-transform:rotate(0deg) rotateX(-70deg) skew(0deg) scale(1);

opacity: 0;

}

5%{

opacity: 1;

}

17%{

opacity: 1;

}

29%{

opacity: 1;

}

34%{

opacity: 0;

}

50%{

opacity: 0;

}

67%{

opacity: 0;

}

83%{

opacity: 0;

}

100%{

opacity: 0;

transform:rotate(-360deg) rotateX(-70deg) skew(0deg) scale(1);

-ms-transform:rotate(-360deg) rotateX(-70deg) skew(0deg) scale(1);

-moz-transform:rotate(-360deg) rotateX(-70deg) skew(0deg) scale(1);

-webkit-transform:rotate(-360deg) rotateX(-70deg) skew(0deg) scale(1);

-o-transform:rotate(-360deg) rotateX(-70deg) skew(0deg) scale(1);

}

}

@keyframes rotate_change3{

0%{

transform:rotate(0deg) rotateX(-70deg) skew(0deg) scale(1);

-ms-transform:rotate(0deg) rotateX(-70deg) skew(0deg) scale(1);

-moz-transform:rotate(0deg) rotateX(-70deg) skew(0deg) scale(1);

-webkit-transform:rotate(0deg) rotateX(-70deg) skew(0deg) scale(1);

-o-transform:rotate(0deg) rotateX(-70deg) skew(0deg) scale(1);

opacity: 0;

}

17%{

opacity: 0;

}

34%{

opacity: 0;

}

50%{

opacity: 0;

}

67%{

opacity: 0;

}

72%{

opacity: 1;

}

83%{

opacity: 1;

}

95%{

opacity: 1;

}

100%{

opacity: 0;

transform:rotate(-360deg) rotateX(-70deg) skew(0deg) scale(1);

-ms-transform:rotate(-360deg) rotateX(-70deg) skew(0deg) scale(1);

-moz-transform:rotate(-360deg) rotateX(-70deg) skew(0deg) scale(1);

-webkit-transform:rotate(-360deg) rotateX(-70deg) skew(0deg) scale(1);

-o-transform:rotate(-360deg) rotateX(-70deg) skew(0deg) scale(1);

}

}

.img_top img, .img_bottom img, .img_bottom2 img {

width: 100px;

height: 100px;

}

.img_top,.img_bottom,.img_bottom2{

position: absolute;

z-index:1;

transform:rotateX(70deg);

-ms-transform:rotateX(70deg);

}

.nav_circle .img a{

position: absolute;

top:10px;

left:94px;

width: 52px;

}

.r1{

animation: rotate 13s linear infinite;

-webkit-animation:rotate 13s linear infinite;

-moz-animation:rotate 13s linear infinite;

-o-animation:rotate 13s linear infinite;

}

.r1 .img_top{

animation:rotate_c1 13s linear infinite;

-webkit-animation:rotate_c1 13s linear infinite;

}

.r1 .img_bottom{

animation:rotate_c2 13s linear infinite;

-webkit-animation:rotate_c2 13s linear infinite;

}

.r1 .img_bottom2{

animation:rotate_c3 13s linear infinite;

-webkit-animation:rotate_c3 13s linear infinite;

}

/* 外圈放大动画 */

@keyframes circle_rotate{

0%{

width: 120px;

height: 120px;

margin-left: -10px;

margin-top: -10px;

}

100%{

width: 100px;

height: 100px;

margin-left: 0px;

margin-top: 0px;

}

}

@keyframes rotate{

0%{

transform:rotate(0deg) skew(0deg) scale(1);

-ms-transform:rotate(0deg) skew(0deg) scale(1);

-moz-transform:rotate(0deg) skew(0deg) scale(1);

-webkit-transform:rotate(0deg) skew(0deg) scale(1);

-o-transform:rotate(0deg) skew(0deg) scale(1);

}

100%{

transform:rotate(360deg) skew(0deg) scale(1);

-ms-transform:rotate(360deg) skew(0deg) scale(1);

-moz-transform:rotate(360deg) skew(0deg) scale(1);

-webkit-transform:rotate(360deg) skew(0deg) scale(1);

-o-transform:rotate(360deg) skew(0deg) scale(1);

}

}

@keyframes rotate-center{

0%{

transform:rotate(0deg) rotateX(-70deg) skew(0deg) scale(1);

-ms-transform:rotate(0deg) rotateX(-70deg) skew(0deg) scale(1);

-moz-transform:rotate(0deg) rotateX(-70deg) skew(0deg) scale(1);

-webkit-transform:rotate(0deg) rotateX(-70deg) skew(0deg) scale(1);

-o-transform:rotate(0deg) rotateX(-70deg) skew(0deg) scale(1);

}

100%{

transform:rotate(-360deg) rotateX(-70deg) skew(0deg) scale(1);

-ms-transform:rotate(-360deg) rotateX(-70deg) skew(0deg) scale(1);

-moz-transform:rotate(-360deg) rotateX(-70deg) skew(0deg) scale(1);

-webkit-transform:rotate(-360deg) rotateX(-70deg) skew(0deg) scale(1);

-o-transform:rotate(-360deg) rotateX(-70deg) skew(0deg) scale(1);

}

}

@keyframes rotate_c1{

0%{

transform:rotateX(-70deg) rotateY(0deg) skew(0deg) scale(0.01);

-ms-transform:rotateX(-70deg) rotateY(0deg) skew(0deg) scale(0.01);

-moz-transform:rotateX(-70deg) rotateY(0deg) skew(0deg) scale(0.01);

-webkit-transform:rotateX(-70deg) rotateY(0deg) skew(0deg) scale(0.01);

-o-transform:rotateX(-70deg) rotateY(0deg) skew(0deg) scale(0.01);

}

50%{

transform:rotateX(-70deg) rotateY(180deg) skew(0deg) scale(1);

-ms-transform:rotateX(-70deg) rotateY(180deg) skew(0deg) scale(1);

-moz-transform:rotateX(-70deg) rotateY(180deg) skew(0deg) scale(1);

-webkit-transform:rotateX(-70deg) rotateY(180deg) skew(0deg) scale(1);

-o-transform:rotateX(-70deg) rotateY(180deg) skew(0deg) scale(1);

}

100%{

transform:rotateX(-70deg) rotateY(360deg) skew(0deg) scale(0.01);

-ms-transform:rotateX(-70deg) rotateY(360deg) skew(0deg) scale(0.01);

-moz-transform:rotateX(-70deg) rotateY(360deg) skew(0deg) scale(0.01);

-webkit-transform:rotateX(-70deg) rotateY(360deg) skew(0deg) scale(0.01);

-o-transform:rotateX(-70deg) rotateY(360deg) skew(0deg) scale(0.01);

}

}

@keyframes rotate_c2{

0%{

transform:rotateX(-70deg) rotateY(0deg) skew(0deg) scale(0.67);

-ms-transform:rotateX(-70deg) rotateY(0deg) skew(0deg) scale(0.67);

-moz-transform:rotateX(-70deg) rotateY(0deg) skew(0deg) scale(0.67);

-webkit-transform:rotateX(-70deg) rotateY(0deg) skew(0deg) scale(0.67);

-o-transform:rotateX(-70deg) rotateY(0deg) skew(0deg) scale(0.67);

}

34%{

transform:rotateX(-70deg) rotateY(120deg) skew(0deg) scale(0.01);

-ms-transform:rotateX(-70deg) rotateY(120deg) skew(0deg) scale(0.01);

-moz-transform:rotateX(-70deg) rotateY(120deg) skew(0deg) scale(0.01);

-webkit-transform:rotateX(-70deg) rotateY(120deg) skew(0deg) scale(0.01);

-o-transform:rotateX(-70deg) rotateY(120deg) skew(0deg) scale(0.01);

}

83%{

transform:rotateX(-70deg) rotateY(300deg) skew(0deg) scale(1);

-ms-transform:rotateX(-70deg) rotateY(300deg) skew(0deg) scale(1);

-moz-transform:rotateX(-70deg) rotateY(300deg) skew(0deg) scale(1);

-webkit-transform:rotateX(-70deg) rotateY(300deg) skew(0deg) scale(1);

-o-transform:rotateX(-70deg) rotateY(300deg) skew(0deg) scale(1);

}

100%{

transform:rotateX(-70deg) rotateY(360deg) skew(0deg) scale(0.67);

-ms-transform:rotateX(-70deg) rotateY(360deg) skew(0deg) scale(0.67);

-moz-transform:rotateX(-70deg) rotateY(360deg) skew(0deg) scale(0.67);

-webkit-transform:rotateX(-70deg) rotateY(360deg) skew(0deg) scale(0.67);

-o-transform:rotateX(-70deg) rotateY(360deg) skew(0deg) scale(0.67);

}

}

@keyframes rotate_c3{

0%{

transform:rotateX(-70deg) rotateY(0deg) skew(0deg) scale(0.67);

-ms-transform:rotateX(-70deg) rotateY(0deg) skew(0deg) scale(0.67);

-moz-transform:rotateX(-70deg) rotateY(0deg) skew(0deg) scale(0.67);

-webkit-transform:rotateX(-70deg) rotateY(0deg) skew(0deg) scale(0.67);

-o-transform:rotateX(-70deg) rotateY(0deg) skew(0deg) scale(0.67);

}

17%{

transform:rotateX(-70deg) rotateY(60deg) skew(0deg) scale(1);

-ms-transform:rotateX(-70deg) rotateY(60deg) skew(0deg) scale(1);

-moz-transform:rotateX(-70deg) rotateY(60deg) skew(0deg) scale(1);

-webkit-transform:rotateX(-70deg) rotateY(60deg) skew(0deg) scale(1);

-o-transform:rotateX(-70deg) rotateY(60deg) skew(0deg) scale(1);

}

67%{

transform:rotateX(-70deg) rotateY(240deg) skew(0deg) scale(0.01);

-ms-transform:rotateX(-70deg) rotateY(240deg) skew(0deg) scale(0.01);

-moz-transform:rotateX(-70deg) rotateY(240deg) skew(0deg) scale(0.01);

-webkit-transform:rotateX(-70deg) rotateY(240deg) skew(0deg) scale(0.01);

-o-transform:rotateX(-70deg) rotateY(240deg) skew(0deg) scale(0.01);

}

100%{

transform:rotateX(-70deg) rotateY(360deg) skew(0deg) scale(0.67);

-ms-transform:rotateX(-70deg) rotateY(360deg) skew(0deg) scale(0.67);

-moz-transform:rotateX(-70deg) rotateY(360deg) skew(0deg) scale(0.67);

-webkit-transform:rotateX(-70deg) rotateY(360deg) skew(0deg) scale(0.67);

-o-transform:rotateX(-70deg) rotateY(360deg) skew(0deg) scale(0.67);

}

}

.line-box {

position: absolute;

width: 300px;

height: 200px;

top: 35%;

right: 1%;

}

/* 标题动画 */

@keyframes des1_appear{

0%{

opacity: 0;

}

17%{

opacity: 0;

}

34%{

opacity: 0;

}

39%{

opacity: 1;

}

50%{

opacity: 1;

}

62%{

opacity: 1;

}

67%{

opacity: 0;

}

83%{

opacity: 0;

}

100%{

opacity: 0;

}

}

@keyframes des2_appear{

0%{

opacity: 0;

}

5%{

opacity: 1;

}

17%{

opacity: 1;

}

29%{

opacity: 1;

}

34%{

opacity: 0;

}

50%{

opacity: 0;

}

67%{

opacity: 0;

}

83%{

opacity: 0;

}

100%{

opacity: 0;

}

}

@keyframes des3_appear {

0%{

opacity: 0;

}

17%{

opacity: 0;

}

34%{

opacity: 0;

}

50%{

opacity: 0;

}

67%{

opacity: 0;

}

72%{

opacity: 1;

}

83%{

opacity: 1;

}

95%{

opacity: 1;

}

100%{

opacity: 0;

}

}

@keyframes snap_line1_appear{

0%{

width: 0px;

}

17%{

width: 0px;

}

34%{

width: 0px;

}

39%{

width: 0px;

}

50%{

width: 140px;

}

62%{

width: 140px;

}

67%{

width: 0px;

}

83%{

width: 0px;

}

100%{

width: 0px;

}

}

@keyframes snap_line2_appear{

0%{

width: 0px;

}

5%{

width: 0px;

}

17%{

width: 140px;

}

29%{

width: 140px;

}

34%{

width: 0px;

}

50%{

width: 0px;

}

67%{

width: 0px;

}

83%{

width: 0px;

}

100%{

width: 0px;

}

}

@keyframes snap_line3_appear {

0%{

width: 0px;

}

17%{

width: 0px;

}

34%{

width: 0px;

}

50%{

width: 0px;

}

67%{

width: 0px;

}

72%{

width: 0px;

}

83%{

width: 140px;

}

95%{

width: 140px;

}

100%{

width: 0px;

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值