当前位置:网站首页>做了两天的唯美蝴蝶动画
做了两天的唯美蝴蝶动画
2022-06-27 00:34:00 【肥学】
演示

技术栈
关于svg标签在svg中关于图形的复用,是通过标签defs来解决的。
举个例子:在图形中红色圆圈 ● 还有黄色圆圈 ● 都是复用的元素。结构都是一样的,只是颜色和位置的差别。
关于figure:
<figure标签规定独立的流内容(图像、图表、照片、代码等等)。
<figure元素的内容应该与主内容相关,同时元素的位置相对于主内容是独立的。如果被删除,则不应对文档流产生影响。
关于perspective-origin:
perspective-origin 属性定义 3D 元素所基于的 X 轴和 Y 轴。该属性允许您改变 3D 元素的底部位置。
定义时的perspective -Origin属性,它是一个元素的子元素,透视图,而不是元素本身。
perspective-origin: x-axis y-axis;
x-axis
定义该视图在 x 轴上的位置。默认值:50%。
可能的值:
left
center
right
length
%
y-axis
定义该视图在 y 轴上的位置。默认值:50%。
可能的值:
top
center
bottom
length
%
源码
对部分蝴蝶的设定
<section class="scene3d">
<div class="cube skybox">
<var class="scale">
<figure class="face front"></figure>
<figure class="face back"></figure>
<figure class="face right"></figure>
<figure class="face left"></figure>
<figure class="face top"></figure>
<figure class="face bottom"></figure>
</var>
</div>
<div class="butterfly_container">
<var class="rotate3d">
<var class="scale">
<var class="translate3d">
<var class="translate3d-1">
<figure class="butterfly">
<svg class="wing left" viewBox="0 0 50 100" class="icon shape-codepen">
<use class="left" xlink:href="#shape-butterfly-1"></use>
</svg>
<svg class="wing right" viewBox="0 0 50 100" class="icon shape-codepen">
<use class="left" xlink:href="#shape-butterfly-1"></use>
</svg>
</figure>
</var>
</var>
</var>
</var>
</div>
飞动的设置
@-webkit-keyframes rotating {
0% {
-webkit-transform: rotate3d(0, 0, 0, 0deg);
-moz-transform: rotate3d(0, 0, 0, 0deg);
-ms-transform: rotate3d(0, 0, 0, 0deg);
-o-transform: rotate3d(0, 0, 0, 0deg);
transform: rotate3d(0, 0, 0, 0deg);
}
100% {
-webkit-transform: rotate3d(0, 1, 0, 720deg);
-moz-transform: rotate3d(0, 1, 0, 720deg);
-ms-transform: rotate3d(0, 1, 0, 720deg);
-o-transform: rotate3d(0, 1, 0, 720deg);
transform: rotate3d(0, 1, 0, 720deg);
}
}
@-moz-keyframes rotating {
0% {
-webkit-transform: rotate3d(0, 0, 0, 0deg);
-moz-transform: rotate3d(0, 0, 0, 0deg);
-ms-transform: rotate3d(0, 0, 0, 0deg);
-o-transform: rotate3d(0, 0, 0, 0deg);
transform: rotate3d(0, 0, 0, 0deg);
}
100% {
-webkit-transform: rotate3d(0, 1, 0, 720deg);
-moz-transform: rotate3d(0, 1, 0, 720deg);
-ms-transform: rotate3d(0, 1, 0, 720deg);
-o-transform: rotate3d(0, 1, 0, 720deg);
transform: rotate3d(0, 1, 0, 720deg);
}
}
@-ms-keyframes rotating {
0% {
-webkit-transform: rotate3d(0, 0, 0, 0deg);
-moz-transform: rotate3d(0, 0, 0, 0deg);
-ms-transform: rotate3d(0, 0, 0, 0deg);
-o-transform: rotate3d(0, 0, 0, 0deg);
transform: rotate3d(0, 0, 0, 0deg);
}
100% {
-webkit-transform: rotate3d(0, 1, 0, 720deg);
-moz-transform: rotate3d(0, 1, 0, 720deg);
-ms-transform: rotate3d(0, 1, 0, 720deg);
-o-transform: rotate3d(0, 1, 0, 720deg);
transform: rotate3d(0, 1, 0, 720deg);
}
}
@-o-keyframes rotating {
0% {
-webkit-transform: rotate3d(0, 0, 0, 0deg);
-moz-transform: rotate3d(0, 0, 0, 0deg);
-ms-transform: rotate3d(0, 0, 0, 0deg);
-o-transform: rotate3d(0, 0, 0, 0deg);
transform: rotate3d(0, 0, 0, 0deg);
}
100% {
-webkit-transform: rotate3d(0, 1, 0, 720deg);
-moz-transform: rotate3d(0, 1, 0, 720deg);
-ms-transform: rotate3d(0, 1, 0, 720deg);
-o-transform: rotate3d(0, 1, 0, 720deg);
transform: rotate3d(0, 1, 0, 720deg);
}
}
@keyframes rotating {
0% {
-webkit-transform: rotate3d(0, 0, 0, 0deg);
-moz-transform: rotate3d(0, 0, 0, 0deg);
-ms-transform: rotate3d(0, 0, 0, 0deg);
-o-transform: rotate3d(0, 0, 0, 0deg);
transform: rotate3d(0, 0, 0, 0deg);
}
100% {
-webkit-transform: rotate3d(0, 1, 0, 720deg);
-moz-transform: rotate3d(0, 1, 0, 720deg);
-ms-transform: rotate3d(0, 1, 0, 720deg);
-o-transform: rotate3d(0, 1, 0, 720deg);
transform: rotate3d(0, 1, 0, 720deg);
}
}
@-webkit-keyframes rotatingY {
100% {
-webkit-transform: rotateY(-360deg);
-moz-transform: rotateY(-360deg);
-ms-transform: rotateY(-360deg);
-o-transform: rotateY(-360deg);
transform: rotateY(-360deg);
}
}
@-moz-keyframes rotatingY {
100% {
-webkit-transform: rotateY(-360deg);
-moz-transform: rotateY(-360deg);
-ms-transform: rotateY(-360deg);
-o-transform: rotateY(-360deg);
transform: rotateY(-360deg);
}
}
@-ms-keyframes rotatingY {
100% {
-webkit-transform: rotateY(-360deg);
-moz-transform: rotateY(-360deg);
-ms-transform: rotateY(-360deg);
-o-transform: rotateY(-360deg);
transform: rotateY(-360deg);
}
}
@-o-keyframes rotatingY {
100% {
-webkit-transform: rotateY(-360deg);
-moz-transform: rotateY(-360deg);
-ms-transform: rotateY(-360deg);
-o-transform: rotateY(-360deg);
transform: rotateY(-360deg);
}
}
对蝴蝶形体的设置
.butterfly_container {
position: absolute;
left: 50%;
top: 50%;
width: 100px;
height: 100px;
margin-left: -50px;
margin-top: -50px;
-webkit-transform-origin: 50% 50%;
-moz-transform-origin: 50% 50%;
-ms-transform-origin: 50% 50%;
-o-transform-origin: 50% 50%;
transform-origin: 50% 50%;
-webkit-transform-style: preserve-3d;
-moz-transform-style: preserve-3d;
-ms-transform-style: preserve-3d;
-o-transform-style: preserve-3d;
transform-style: preserve-3d;
-webkit-animation: rotatingY 10s linear infinite;
-moz-animation: rotatingY 10s linear infinite;
-ms-animation: rotatingY 10s linear infinite;
-o-animation: rotatingY 10s linear infinite;
animation: rotatingY 10s linear infinite;
}
.butterfly_container var {
position: absolute;
left: 50%;
top: 50%;
width: 100px;
height: 100px;
margin-left: -50px;
margin-top: -50px;
-webkit-transform-style: preserve-3d;
-moz-transform-style: preserve-3d;
-ms-transform-style: preserve-3d;
-o-transform-style: preserve-3d;
transform-style: preserve-3d;
}
.butterfly_container var.rotate3d {
-webkit-transform: rotate3d(1, 0.5, 0, 70deg);
-moz-transform: rotate3d(1, 0.5, 0, 70deg);
-ms-transform: rotate3d(1, 0.5, 0, 70deg);
-o-transform: rotate3d(1, 0.5, 0, 70deg);
transform: rotate3d(1, 0.5, 0, 70deg);
}
.butterfly_container var.translate3d {
-webkit-transform: translate3d(-300px, 0px, 0px);
-moz-transform: translate3d(-300px, 0px, 0px);
-ms-transform: translate3d(-300px, 0px, 0px);
-o-transform: translate3d(-300px, 0px, 0px);
transform: translate3d(-300px, 0px, 0px);
}
.butterfly_container var.translate3d-1 {
-webkit-animation: fluttering 10s ease-in-out infinite;
-moz-animation: fluttering 10s ease-in-out infinite;
-ms-animation: fluttering 10s ease-in-out infinite;
-o-animation: fluttering 10s ease-in-out infinite;
animation: fluttering 10s ease-in-out infinite;
}
.butterfly_container.scale_half var.scale {
-webkit-transform: scale3d(0.5, 0.5, 0.5);
-moz-transform: scale3d(0.5, 0.5, 0.5);
-ms-transform: scale3d(0.5, 0.5, 0.5);
-o-transform: scale3d(0.5, 0.5, 0.5);
transform: scale3d(0.5, 0.5, 0.5);
}
.butterfly_container.scale_third var.scale {
-webkit-transform: scale3d(0.333, 0.333, 0.333);
-moz-transform: scale3d(0.333, 0.333, 0.333);
-ms-transform: scale3d(0.333, 0.333, 0.333);
-o-transform: scale3d(0.333, 0.333, 0.333);
transform: scale3d(0.333, 0.333, 0.333);
}
.butterfly_container.scale_quarter var.scale {
-webkit-transform: scale3d(0.25, 0.25, 0.25);
-moz-transform: scale3d(0.25, 0.25, 0.25);
-ms-transform: scale3d(0.25, 0.25, 0.25);
-o-transform: scale3d(0.25, 0.25, 0.25);
transform: scale3d(0.25, 0.25, 0.25);
}
.butterfly_container figure.butterfly {
position: absolute;
left: 50%;
top: 50%;
width: 100px;
height: 100px;
margin-left: -50px;
margin-top: -50px;
-webkit-transform-style: preserve-3d;
-moz-transform-style: preserve-3d;
-ms-transform-style: preserve-3d;
-o-transform-style: preserve-3d;
transform-style: preserve-3d;
-webkit-transform-origin: 50% 50%;
-moz-transform-origin: 50% 50%;
-ms-transform-origin: 50% 50%;
-o-transform-origin: 50% 50%;
transform-origin: 50% 50%;
}
.butterfly_container figure.butterfly .wing {
position: absolute;
width: 50px;
height: 100px;
-webkit-transform-style: preserve-3d;
-moz-transform-style: preserve-3d;
-ms-transform-style: preserve-3d;
-o-transform-style: preserve-3d;
transform-style: preserve-3d;
-webkit-transform-origin: 50% 50%;
-moz-transform-origin: 50% 50%;
-ms-transform-origin: 50% 50%;
-o-transform-origin: 50% 50%;
transform-origin: 50% 50%;
-webkit-transform: translate3d(0, 0, 0) rotate3d(1, 0.5, 0, 45deg);
-moz-transform: translate3d(0, 0, 0) rotate3d(1, 0.5, 0, 45deg);
-ms-transform: translate3d(0, 0, 0) rotate3d(1, 0.5, 0, 45deg);
-o-transform: translate3d(0, 0, 0) rotate3d(1, 0.5, 0, 45deg);
transform: translate3d(0, 0, 0) rotate3d(1, 0.5, 0, 45deg);
}
点击直接资料领取
如果你在学习python或者Java哪怕是C遇到问题都可以来给我留言,因为在学习初期新手总会走很多弯路,这个时候如果没有有个人来帮一把的话很容易就放弃了。身边很多这样的例子许多人学着学着就转了专业换了方向,不仅是自身问题还是没有正确的学习。所以作为一个过来人我希望有问题给我留言,说不上是帮助就是顺手敲几行字的事情。
这里有python,Java学习资料还有有有趣好玩的编程项目,更有难寻的各种资源。反正看看也不亏。
边栏推荐
猜你喜欢

LeetCode 142. 环形链表 II
![The [MySQL] time field is set to the current time by default](/img/40/5f1d3448259ab703c4b5dc29713a99.png)
The [MySQL] time field is set to the current time by default

超越锂电池——未来电池的概念

乔治·华盛顿大学 : Hanhan Zhou | PAC:多智能体强化学习中具有反事实预测的辅助价值因子分解

CPU exception handling

Law of Large Numbers

MATLAB data type - character type

The most difficult 618 in history, TCL won the first place in both jd.com and tmall.com shares in the TV industry

Implementation of ARP module in LwIP

ML:机器学习工程化之团队十大角色背景、职责、产出物划分之详细攻略
随机推荐
[vscade] preview MD file
Batch generate folders based on file names
The [MySQL] time field is set to the current time by default
Great health industry annual must attend event, 2022 Shandong International Great Health Industry Expo
These 10 copywriting artifacts help you speed up the code. Are you still worried that you can't write a copywriting for US media?
memcached基础3
网上开通证券账户安全吗 手机炒股靠谱吗
Unable to create a folder to save the sketch: MKDIR sketch
世界很大,有人把二维码纹在脖子上
Keepalived 实现 Redis AutoFailover (RedisHA)17
Keepalived 实现 Redis AutoFailover (RedisHA)11
2022 Health Expo, Shandong health care exhibition, postpartum health and sleep health exhibition
Law of Large Numbers
At present, which securities company is the best and safest to open an account for stock speculation?
LeetCode 142. 环形链表 II
Kept to implement redis autofailover (redisha) 17
Buuctf PWN write UPS (6)
自定义类加载器对类加密解密
CEC-I 中华学习机使用说明与问答
乔治·华盛顿大学 : Hanhan Zhou | PAC:多智能体强化学习中具有反事实预测的辅助价值因子分解