当前位置:网站首页>Two days of beautiful butterfly animation
Two days of beautiful butterfly animation
2022-06-27 01:11:00 【Fertilizer science】
Table of contents title
demonstration

Technology stack
About svg Tag in svg On the reuse of graphics , It's through labels defs To solve the .
for instance : Red circles in the graph ● And yellow circles ● Are reusable elements . The structure is the same , Just the difference in color and position .
About figure:
<figure Tags specify independent stream content ( Images 、 Chart 、 Photo 、 Code and so on ).
<figure The content of the element should be related to the main content , At the same time, the position of the element is independent of the main content . If deleted , Should not affect document flow .
About perspective-origin:
perspective-origin Attribute definitions 3D The element is based on X Axis and Y Axis . This property allows you to change 3D Bottom position of element .
By definition perspective -Origin attribute , It is a child element of an element , Perspective , Not the elements themselves .
perspective-origin: x-axis y-axis;
x-axis
Define the view in x Position on the shaft . The default value is :50%.
Possible value :
left
center
right
length
%
y-axis
Define the view in y Position on the shaft . The default value is :50%.
Possible value :
top
center
bottom
length
%
Source code
Some butterfly settings
<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>
Flying settings
@-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);
}
}
Setting of butterfly shape
.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);
}
Click to get the information directly
If you are learning python perhaps Java Even if it is C If you have any problems, you can leave me a message , Because in the early stage of learning, novices always take many detours , At this time, if there is no one to help, it is easy to give up . There are many such examples around. Many people change their majors and directions as they learn , Not only their own problems, but also the lack of correct learning . So as a passer-by, I hope to leave a message to me if you have any questions , It's not help, it's just a matter of typing a few lines easily .
Here you are python,Java Learning materials and interesting programming projects , More difficult to find resources . Anyway, it's not a loss to see .
边栏推荐
- memcached基础6
- Esp32 add multi directory custom component
- ESP32-SOLO开发教程,解决CONFIG_FREERTOS_UNICORE问题
- Topolvm: kubernetes local persistence scheme based on LVM, capacity aware, dynamically create PV, and easily use local disk
- Kept to implement redis autofailover (redisha) 17
- 在线文本数字识别列表求和工具
- Lambda表达式
- Keepalived 实现 Redis AutoFailover (RedisHA)15
- How to convert an old keyboard into a USB keyboard and program it yourself?
- Keepalived 实现 Redis AutoFailover (RedisHA)17
猜你喜欢

Gaussian and Summary Stats

在线文本数字识别列表求和工具

Solve the problem that only one line of text is displayed or not displayed in u8glib

Summary of working at home during the epidemic | community essay solicitation

JSON parsing, esp32 easy access to time, temperature and weather

CEC-I 中华学习机使用说明与问答
![Find the minimum value in the rotation sort array ii[classical Abstract dichotomy + how to break the game left, middle and right are equal]](/img/75/05d5765588dfde971167fbc72e2aa8.png)
Find the minimum value in the rotation sort array ii[classical Abstract dichotomy + how to break the game left, middle and right are equal]

buuctf-pwn write-ups (6)

ESP32实验-自建web服务器配网02

Topolvm: kubernetes local persistence scheme based on LVM, capacity aware, dynamically create PV, and easily use local disk
随机推荐
世界很大,有人把二维码纹在脖子上
Moher College -x-forwarded-for injection vulnerability practice
Encapsulation of unified result set
Other service registration and discovery
寻找旋转排序数组中的最小值 II[经典抽象二分 + 如何破局左中右三者相等]
TopoLVM: 基于LVM的Kubernetes本地持久化方案,容量感知,动态创建PV,轻松使用本地磁盘
Flink 实战问题(七):No Watermark(Watermarks are only available EventTime is used)
memcached基础
气液滑环与其他滑环的工作原理有什么区别
Kept to implement redis autofailover (redisha) 13
自定义类加载器对类加密解密
JSON解析,ESP32轻松获取时间气温和天气
用代码生成流程图,Markdown的使用方法
Interface test framework practice (I) | requests and interface request construction
Object access mechanism and others
可视化介绍 Matplotlib 和 Plotnine
ESP32实验-自建web服务器配网02
直播回顾 | 子芽&CCF TF:云原生场景下软件供应链风险治理技术浅谈
Keepalived 实现 Redis AutoFailover (RedisHA)15
Custom MVC (imported into jar package) + difference from three-tier architecture + reflection + interview questions