css3 里面的动画——2d、3d动画

本文详细介绍了如何使用CSS的transform属性实现2D到3D动画的转变,包括平移、旋转、缩放和倾斜等操作,并展示了如何通过@keyframes创建动画效果,最后通过一个实例展示了2D球体如何转变为3D并添加动画。

1.2d 动画

属性:

transform适用于2D或3D转换的元素
transform-origin允许更改转换元素位置

转换方法:

matrix(n,n,n,n,n,n)定义 2D 转换,使用六个值的矩阵。
translate(x,y)定义 2D 转换,沿着 X 和 Y 轴移动元素。
translateX(n)定义 2D 转换,沿着 X 轴移动元素。
translateY(n)定义 2D 转换,沿着 Y 轴移动元素。
scale(x,y)定义 2D 缩放转换,改变元素的宽度和高度。
scaleX(n)定义 2D 缩放转换,改变元素的宽度。
scaleY(n)定义 2D 缩放转换,改变元素的高度。
rotate(angle)定义 2D 旋转,在参数中规定角度。
skew(x-angle,y-angle)定义 2D 倾斜转换,沿着 X 和 Y 轴。
skewX(angle)定义 2D 倾斜转换,沿着 X 轴。
skewY(angle)定义 2D 倾斜转换,沿着 Y 轴。

2.3d 动画

属性:

transform向元素应用2D或3D转换
transform-origin允许改变被转换元素的位置
transform-style规定被嵌套元素在3D空间中如何显示
perspective规定3D元素透视效果
perspective规定3D元素底部位置
backface-visibility定义元素在不面对屏幕时是否可见

转换方法:

matrix3d(n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n)定义 3D 转换,使用16个值的矩阵。
translate3d(x,y,z)定义 3D 转换
translateX(x)定义 3D 转换,仅使用用于X轴的值。
translateY(y)定义 3D 转换,仅使用用于Y 轴的值。
translatez(n)定义3D转换,仅使用用于Z轴的值。
scale3d(x,y,z)定义 3D 缩放转换。
scaleX(x)定义 3D 缩放转换,通过给定一个X轴的值。
scaleY(y)定义 3D 缩放转换,通过给定一个Y轴的值。
scalez(z)定义3D缩放转换,通过给定一个z轴的值。
rotate3d(x,y,z,angle)定义 3D 旋转.
rotateX(angle)定义 沿X轴的3D转换。
rotateY(angle)定义沿Y轴的3D转换。
rotateZ(angle)定义沿Z轴的3D转换。
perspective(n)定义3D转换元素的透视视图。

 

属性解释:

transform (2d、3d转换)
translate(平移x,y,z)  
rotate(旋转x,y,z)  
skew(变形 deg)  
scale(伸缩 w,h)
translate 默认x
rotate 默认旋转z轴为旋转中心 

3.创建动画

@keyframes属性:animation

下面我们来展示一个实例:

(1)创建一个视觉上的2d球体

<body>
  <div class="sqpar">
      <div class="sq sq1"></div>
      <div class="sq sq2"></div>
      <div class="sq sq3"></div>
      <div class="sq sq4"></div>
      <div class="sq sq5"></div>
      <div class="sq sq6"></div>
      <div class="sq sq7"></div>
      <div class="sq sq8"></div>
  </div>
</body>
<style>
        * {
            margin: 0;
            padding: 0;
        }

        html, body {

            width: 100%;
            height: 100%;
            background: black;
        }
        .sq{
            position: absolute;
            width: 500px;
            height: 500px;
            border-radius: 50%;
            border: 1px dashed #fff;
        }/*给到统一样式将形状变成圆环。*/
        
        .sq2{
            transform: rotatey(30deg);/*绕y轴旋转30度*/
        }
        .sq3{
            transform: rotatey(60deg);/*绕y轴旋转60度*/
        }
        .sq4{
            transform: rotatey(90deg);/*绕y轴旋转90度*/
        }
        .sq5{
            transform: rotatey(120deg);/*绕y轴旋转120度*/
        }
        .sq6{
            transform: rotatey(150deg);/*绕y轴旋转150度*/
        }
</style>

效果展示:

(2)2d效果转为3d效果

在sqpar样式中添加代码:
.sqpar{
            transform-style:preserve-3d;  /*2d转3d*/
        }

(3)创建动画效果

.sqpar{
            animation: sq_animate 3s linear infinite;            
        }
@keyframes sq_animate {
            from {
                transform: rotatey(0deg);
            }
            to{
                transform: rotatey(360deg);
            }
        }

注意:@keyframes 设置的便是动画效果,若想给哪个对象加上该效果,则用admition属性 ,其后加上@keyframes同名样式名,如上代码中的sq_animate.

经过上述3步,一个转动的框架球就出现啦。效果如下(静态图是有些看不粗来~~~)

 

【完美复现】面向配电网韧性提升的移动储能预布局与动态调度策略【IEEE33节点】(Matlab代码实现)内容概要:本文介绍了基于IEEE33节点的配电网韧性提升方法,重点研究了移动储能系统的预布局与动态调度策略。通过Matlab代码实现,提出了一种结合预配置和动态调度的两阶段优化模型,旨在应对电网故障或极端事件时快速恢复供电能力。文中采用了多种智能优化算法(如PSO、MPSO、TACPSO、SOA、GA等)进行对比分析,验证所提策略的有效性和优越性。研究不仅关注移动储能单元的初始部署位置,还深入探讨其在故障发生后的动态路径规划与电力支援过程,从而全面提升配电网的韧性水平。; 适合人群:具备电力系统基础知识和Matlab编程能力的研究生、科研人员及从事智能电网、能源系统优化等相关领域的工程技术人员。; 使用场景及目标:①用于科研复现,特别是IEEE顶刊或SCI一区论文中关于配电网韧性、应急电源调度的研究;②支撑电力系统在灾害或故障条件下的恢复力优化设计,提升实际电网应对突发事件的能力;③为移动储能系统在智能配电网中的应用提供理论依据和技术支持。; 阅读建议:建议读者结合提供的Matlab代码逐模块分析,重点关注目标函数建模、约束条件设置以及智能算法的实现细节。同时推荐参考文中提及的MPS预配置与动态调度上下两部分,系统掌握完整的技术路线,并可通过替换不同算法或测试系统进一步拓展研究。
先看效果: https://pan.quark.cn/s/3756295eddc9 在C#软件开发过程中,DateTimePicker组件被视为一种常见且关键的构成部分,它为用户提供了图形化的途径来选取日期与时间。 此类控件多应用于需要用户输入日期或时间数据的场景,例如日程管理、订单管理或时间记录等情境。 针对这一主题,我们将细致研究DateTimePicker的操作方法、具备的功能以及相关的C#编程理念。 DateTimePicker控件是由.NET Framework所支持的一种界面组件,适用于在Windows Forms应用程序中部署。 在构建阶段,程序员能够通过调整属性来设定其视觉形态及运作模式,诸如设定日期的显示格式、是否展现时间选项、预设的初始值等。 在执行阶段,用户能够通过点击日历图标的下拉列表来选定日期,或是在文本区域直接键入日期信息,随后按下Tab键或回车键以确认所选定的内容。 在C#语言中,DateTime结构是处理日期与时间数据的核心,而DateTimePicker控件的值则表现为DateTime类型的实例。 用户能够借助`Value`属性来读取或设定用户所选择的日期与时间。 例如,以下代码片段展示了如何为DateTimePicker设定初始的日期值:```csharpDateTimePicker dateTimePicker = new DateTimePicker();dateTimePicker.Value = DateTime.Now;```再者,DateTimePicker控件还内置了事件响应机制,比如`ValueChanged`事件,当用户修改日期或时间时会自动激活。 开发者可以注册该事件以执行特定的功能,例如进行输入验证或更新关联的数据:``...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值