【前端】空间转换与动画

目录

1.空间转换

1.1位移

1.2旋转

1.3立体呈现

1.4缩放

2.动画


1.空间转换

空间:是从坐标轴角度定义的,x,y,z三条坐标轴构成了一个立体空间,z轴位置与视线方向相同

空间转换也叫3D转换,实现元素在空间内的位移,旋转,缩放等效果

属性:transform

取值:正值指向屏幕外,负值指向屏幕内

 

1.1位移

语法:

transform: translate3d(x,y,z);

transform: translateX();

transform: translateY();

transform: translateZ();

取值:

  • 像素单位数值
  • 百分比

📖Note:

默认情况下,无法观察到Z轴位移效果

原因:Z轴是视线方向,移动效果应该是距离的远或近,电脑屏幕是平面,默认无法观察远近效果

解决方案:

属性:perspective 添加给父级

取值:像素单位值,数值一般在800~1200

效果:实现透视效果

perspective:也叫做视距,视距就是人的眼睛到屏幕的距离

取值:正负值均可。设置为正值,视距减小;设置为负值,视距增大

perspective:1000px

即设置1000px为视距的初始值。设置太小(小于800px),近大效果太明显;设置太大(大于1200px),近大远小效果不明显

1.2旋转

语法:

transform:rotateZ(值)    和rotate(值)实现的效果相同

transform:rotateX(值)

transform:rotateY(值)

根据设计图判断旋转的方向?

空间转换:左手法则

判断旋转方向:左手握住旋转轴,拇指指向正值方向,手指弯曲方向为旋转正值方向

1.3立体呈现

属性:transform-style:preserve-3d;

效果:使子元素处于真正的3d空间

呈现立体图形步骤:

  1. 盒子父元素添加transform-style:preserve-3d;
  2. 按需求设置子盒子的位置(位移或旋转)

案例:3D导航

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>3D导航</title><style>ul {margin: 0;padding: 0;list-style: none;}.navs {width: 300px;height: 40px;margin: 50px auto;}.navs li {position: relative;float: left;width: 100px;height: 40px;line-height: 40px;/* 过渡 */transition: all .5s;/* 让子级处于3D空间 */transform-style: preserve-3d;}.navs li a {position: absolute;left: 0;top: 0;display: block;width: 100%;height: 100%;text-align: center;text-decoration: none;color: #fff;}.navs li a:first-child {background-color: green;/* 向Z轴正方向移动20px */transform: translateZ(20px);}.navs li a:last-child {background-color: orange;/* 注意旋转方向的判断 面向这个平面进行判断 */transform: rotateX(90deg) translateZ(20px);}/* li:hover 立方体旋转 */.navs li:hover {transform: rotateX(-90deg);}</style>
</head><body><div class="navs"><ul><li><a href="#">首页</a><a href="#">Index</a></li><li><a href="#">登录</a><a href="#">Login</a></li><li><a href="#">注册</a><a href="#">Register</a></li></ul></div>
</body></html>

1.4缩放

语法:

transform: scale3d(x,y,z);

transform: scaleX(倍数);

transform: scaleY(倍数);

transform: scaleY(倍数); 

2.动画

过渡:实现两个状态间的变化过程

动画效果:实现多个状态间的变化过程,动画过程可控(重复播放,最终画面,是否暂停)

动画的本质是快速切换大量图片使在人脑中形成的具有连续性的画面

构成动画的最小单元:帧或动画帧

动画的实现步骤:

1️⃣定义动画

/* 两个状态 */

@keyframes 动画名称 {

    from {}

    to {}

}

/* 多个状态 */

@keyframes 动画名称 {

    0% {}

    10% {}

    15% {}

    100% {}

}

百分比:指的是该样式占动画总时长的百分比

2️⃣使用动画

animation: 动画名称 动画花费时长; 

animation复合属性:

animation:动画名称 动画时长 速度曲线 延迟时间 重复次数 动画方向 执行完毕状态;

📖Note:

  • 动画名称和动画时长必须赋值
  • 取值不分先后顺序
  • 如果有两个时间值,第一个表示动画时长,第二个表示延迟时间

animation的拆分写法:不常用

补间动画:平滑连续的动画

逐帧动画:分步动画

使用steps可以实现逐帧动画

精灵动画实现步骤:

1.准备显式区域:设置盒子尺寸是一张小图的尺寸,背景图为当前精灵图

2.定义动画:改变背景图的位置(移动距离就是精灵图的宽度)

3.使用动画

  • 添加速度曲线steps(N),N与精灵图上的小图个数相同
  • 添加无限重复效果

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>.box {/* 1680/12 */width: 140px;height: 140px;/* 便于观察盒子位置 *//* border: 1px solid #000; *//* 精灵图作为背景图 */background-image: url(../images/bg.png);/* 使用动画 */animation: run 1s steps(12) infinite,move 5s forwards;}/* 定义人物动画 */@keyframes run {/* 改变背景图的位置 */from {background-position: 0 0;}to {background-position: -1680px 0;}}/* 定义盒子移动动画 */@keyframes move {/* 改变背景图的位置 *//* 动画的开始状态和盒子的默认样式相同,可以省略开始状态的代码 */from {transform: translateX(0);}to {transform: translateX(800px);}}</style>
</head>
<body><div class="box"></div>
</body>
</html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/526666.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第89篇:方程式工具包远程溢出漏洞图形界面版V0.3(内置永恒之蓝、永恒冠军、永恒浪漫等)...

Part1 前言 大家好&#xff0c;我是ABC_123。我从年前到现在&#xff0c;一直在整理曾经写过的红队工具&#xff0c;逐步把自己认为比较好用的原创工具发出来给大家用一用&#xff0c;方便大家在日常的攻防比赛、红队评估项目中解放双手&#xff0c;节省时间精力和体力。本期给…

Java中常用的集合及方法(2)

在Java&#xff08;JDK8&#xff09;中&#xff0c;集合&#xff08;Collection&#xff09;是数据结构的实现&#xff0c;用于存储和操作对象集合。 集合&#xff08;Collection&#xff09;中包含的一般类或接口&#xff1a; 在这其中呢&#xff0c;我们经常使用的其实就是L…

【经管数据-更新】华证ESG评级得分数据(2009-2023年)

一、数据说明 参考《经济研究》中方先明&#xff08;2023&#xff09;的做法&#xff0c;将华证ESG评级进行赋值&#xff0c;指标包含C、CC、CCC、B、BB、BBB、A、AA、AAA共9个等级&#xff0c;将上市公司ESG 等级从低到高分别赋值为1至9 二、数据来源&#xff1a;世界银行&am…

PCB检测,基于YOLOV8NANO

PCB检测&#xff0c;基于YOLOV8NANO&#xff0c;训练得到PT模型&#xff0c;转换成ONNX&#xff0c;只需要OPENCV&#xff0c;支持C/PYTHON/ANDROID开发PCB检测&#xff0c;基于YOLOV8NANO&#xff0c;只需要OPENCV

P9238 [蓝桥杯 2023 省 A] 翻转硬币(杜教筛+莫比乌斯)

题目&#xff1a;https://www.luogu.com.cn/problem/P9238 思路&#xff1a; 代码&#xff1a; #define _CRT_SECURE_NO_WARNINGS #include<iostream> #include<string> #include<cstring> #include<cmath> #include<ctime> #include<algo…

LLM实施的五个阶段

原文地址&#xff1a;Five Stages Of LLM Implementation 大型语言模型显着提高了对话式人工智能系统的能力&#xff0c;实现了更自然和上下文感知的交互。这导致各个行业越来越多地采用人工智能驱动的聊天机器人和虚拟助手。 2024 年 2 月 20 日 介绍 从LLMs的市场采用情况可以…

Springboot+vue的高校危化试剂仓储系统(有报告)。Javaee项目,springboot vue前后端分离项目。

演示视频&#xff1a; Springbootvue的高校危化试剂仓储系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot vue前后端分离项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#x…

DataLoader

import torchvision from torch.utils.data import DataLoader from torch.utils.tensorboard import SummaryWriter# 准备的测试数据集 数据放在了CIFAR10文件夹下test_data torchvision.datasets.CIFAR10("./CIFAR10",trainFalse, transformtorchvision.transfor…

Unity3d C#实现文件(json、txt、xml等)加密、解密和加载(信息脱敏)功能实现(含源码工程)

前言 在Unity3d工程中经常有需要将一些文件放到本地项目中&#xff0c;诸如json、txt、csv和xml等文件需要放到StreamingAssets和Resources文件夹目录下&#xff0c;在程序发布后这些文件基本是对用户可见的状态&#xff0c;造成信息泄露&#xff0c;甚至有不法分子会利用这些…

动态规划课堂4-----子数组系列

目录 引入&#xff1a; 例题1&#xff1a;最大子数组和 例题2&#xff1a;环形子数组的最大和 例题3&#xff1a;乘积最大子数组 例题4&#xff1a;乘积为正数的最长子数组 总结&#xff1a; 结语&#xff1a; 引入&#xff1a; 在动态规划&#xff08;DP&#xff09;子…

Python+Django+Html网页前后端指纹信息识别

程序示例精选 PythonDjangoHtml网页前后端指纹信息识别 如需安装运行环境或远程调试&#xff0c;见文章底部个人QQ名片&#xff0c;由专业技术人员远程协助&#xff01; 前言 这篇博客针对《PythonDjangoHtml网页前后端指纹信息识别》编写代码&#xff0c;代码整洁&#xff0…

小迪安全33WEB 攻防-通用漏洞文件上传中间件解析漏洞编辑器安全

#知识点&#xff1a; 1、中间件安全问题 2、中间件文件上传解析 3、Web 应用编辑器上传 编辑器也就是第三方插件&#xff0c;一般都是文件上传漏洞 #详细点&#xff1a; 1、检测层面&#xff1a;前端&#xff0c;后端等 2、检测内容&#xff1a;文件头&#xff0c;完…