当前位置:网站首页>做了两天的唯美蝴蝶动画
做了两天的唯美蝴蝶动画
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学习资料还有有有趣好玩的编程项目,更有难寻的各种资源。反正看看也不亏。
边栏推荐
- Encapsulation of unified result set
- Flink practical problems (VII): no watermark (watermarks are only available eventtime is used)
- getReader() has already been called for this request
- Visual introduction to Matplotlib and plotnine
- TopoLVM: 基于LVM的Kubernetes本地持久化方案,容量感知,动态创建PV,轻松使用本地磁盘
- BootstrapBlazor + FreeSql实战 Chart 图表使用(2)
- flutter系列之:flutter中的flow
- Count the logarithm of points that cannot reach each other in an undirected graph [classic adjacency table building +dfs Statistics - > query set optimization] [query set manual / write details]
- 30《MySQL 教程》MySQL 存储引擎概述
- 清华&智源 | CogView2:更快更好的文本图像生成模型
猜你喜欢
![自定义JSP[if,foreach,数据,select]标签](/img/a2/fc75c182d572d86f4466323e31d6c3.png)
自定义JSP[if,foreach,数据,select]标签

JSON解析,ESP32轻松获取时间气温和天气

Lambda expression

05 | standard design (Part 2): how to standardize the different styles of commit information, which are difficult to read?

XSS攻击笔记(上)

Operating instructions and Q & A of cec-i China learning machine

Modeling specifications: environment settings
![统计无向图中无法互相到达点对数[经典建邻接表+DFS统计 -> 并查集优化][并查集手册/写的详细]](/img/cc/a0be58eddc72c22a9a6ee5c61eb81a.png)
统计无向图中无法互相到达点对数[经典建邻接表+DFS统计 -> 并查集优化][并查集手册/写的详细]

USB协议中HID设备描述符以及键盘按键值对应编码表

一键加速索尼相机SD卡文件的复制操作,文件操作批处理教程
随机推荐
Custom MVC (imported into jar package) + difference from three-tier architecture + reflection + interview questions
史上最难618,TCL夺得电视行业京东和天猫份额双第一
Solve the problem that only one line of text is displayed or not displayed in u8glib
MATLAB data type - character type
Kept to implement redis autofailover (redisha) 12
Interface test framework practice (I) | requests and interface request construction
Memcached foundation 6
Count the logarithm of points that cannot reach each other in an undirected graph [classic adjacency table building +dfs Statistics - > query set optimization] [query set manual / write details]
How to control the quality of HD slip ring in the production process
How to use ch423? Cheap domestic IO expansion chip
Esp32 experiment - self built web server distribution network 02
Operating instructions and Q & A of cec-i China learning machine
Basic introduction to C program structure Preview
统一结果集的封装
Bootstrapblazor + FreeSQL actual combat chart usage (2)
Reading graph augmentations to learn graph representations (lg2ar)
memcached基础5
解决unable to create a folder to save the sketch: mkdir sketch
JSON parsing, esp32 easy access to time, temperature and weather
memcached基础7