【Web2D/3D】CSS3的2D/3D转换、过渡、动画(第一篇)
1. 前言
本篇开始介绍Web2D和3D相关基础知识,会从CSS3的2D/3D转换、过渡、动画,讲到Canvas 2D图形绘制,再到SVG,最后到WebGL。
坐标系:左上点是坐标原点(0,0),x轴正方向向右,y轴正方向向下,z轴正方向向外(垂直屏幕向外)。
2. 2D转换
CSS3的2D/3D旋转,适用左手定则确认顺时针方向和逆时针方向(角度值是顺正逆负)
| css函数 | 说明 | 示例 |
| translate(x,y) | 定义2D转换,沿着X和Y轴移动 | div { transform:translate(10px, 20px); } |
| translateX(x) | 定义2D转换,沿着X轴移动 | |
| translateY(y) | 定义2D转换,沿着Y轴移动 | |
| rotate(angle) | 定义2D旋转,angle是旋转角度,正值-顺时针,负值-逆时针,旋转轴-穿过元素中心点、垂直于XY平面 | div { transform: rotate(30deg); } |
| scale(x,y) | 定义2D缩放转换,改变元素宽高 注:仅显示上变化了,元素实际尺寸没改变 | div { transform: scale(2,3); } |
| scaleX(n) | 定义2D缩放转换,改变元素宽度 | |
| scaleY(n) | 定义2D缩放转换,改变元素高度 | |
| skew(angleX, angleY) | 定义2D倾斜转换,沿着X和Y轴 注:不管怎么倾斜,元素中心点不变 | div { transform:skew(15deg, 20deg); } |
| skewX(angle) | 定义2D倾斜转换,沿着X轴 正值-X轴正方向往负方向推 负值-X轴负方向往正方向推 | |
| skewY(angle) | 定义2D倾斜转换,沿着Y轴 正值-Y轴正方向往负方向推-倾斜 负值-Y轴负方向往正方向推-倾斜 | |
| matrix(n,n,n,n,n,n) | 定义2D转换,6值矩阵 | |
| transform-origin | 更改变换的参考源(参数点),默认是元素的中心点 transform-origin: x-axis y-axis z-axis; x-axis: left | center | right | length | % y-axis: top | center | bottom | length | % z-axis: length 定义视图置于Z轴何处 | x-axis,y-axis在元素自身中定位参考源位置 0% 0% 表示元素左上角 |
3. 3D转换
| css函数 | 说明 | 示例 |
| translate3d(x,y,z) | 定义3D转换,沿着X、Y和Z轴移动 | <略> |
| translateX(x) | 定义3D转换,沿着X轴移动 | <略> |
| translateY(y) | 定义3D转换,沿着Y轴移动 | <略> |
| translateZ(z) | 定义3D转换,沿着Z轴移动 | <略> |
| rotate3d(x,y,z,angle) | 定义3D旋转,绕(x,y,z)旋转 | <略> |
| rotateX(angle) | 定义3D旋转,绕着X轴旋转 | <略> |
| rotateY(angle) | 定义3D旋转,绕着Y轴旋转 | <略> |
| rotateZ(angle) | 定义3D旋转,绕着Z轴旋转 | <略> |
| scale3d(x,y,z) | 定义3D缩放, | <略> |
| scaleX(x) | 定义3D缩放, | <略> |
| scaleY(y) | 定义3D缩放, | <略> |
| scaleZ(z) | 定义3D缩放, | <略> |
| matrix(n,n,n,n,n,n,n,n, n,n,n,n,n,n,n,n) | 定义3D转换,16值矩阵 | <略> |
| perspective(n) | 定义3D转换元素的透视视图 | <略> |
| 相关CSS属性 | ||
| css属性 | 描述 | 示例 |
| transform-origin | 更改变换的参考源(参数点) | <略> |
| transform-style | 嵌套元素如果在3D空间中显示 1. flat 表示所有子元素在2D平面呈现 2. preserve-3d 表示所有子元素在3D空间中呈现 | <略> |
| perspective | 3D元素的透视效果,设置在父元素上 1. number 元素距离视图的距离,以像素计 2. none 不设置透视 | <略> |
| perspective-origin | 3D元素的底部位置 perspective-origin: x-axis y-axis x-axis: left | center | right | length | % y-axis: top | center | bottom | length | % | <略> |
| backface-visibility | 元素不面对屏幕时是否可见 1. visible 背面可见 2. hidden 背面不可见 | <略> |
4. 过渡
| css属性 | 描述 | 示例 |
| transition | transition: property duration time-function delay是简写 | div { transition: width 2s ease 1s, height 3s linear 2s; } |
| transition-property | 指定css属性的过渡效果 1. none 没有属性会获得过渡效果 2. all 所有属性应用过渡效果 3. property 使用过渡效果的css属性,多个时用逗号,分隔 | |
| transition-duration | 过渡效果花费时间 1. time 完成过渡效果需要花费的时间(秒或毫秒),0值时则无过渡效果 | |
| transition-timing-function | 过渡效果的速度 1. linear 以相同速度开始直到结束,cubic-bezier(0,0,1,1) 2. ease 先慢中快后慢,cubic-bezier(0.25, 0.1, 0.25,1) 3. ease-in 先慢后平滑,cubic-bezier(0.42,0,1,1) 4. ease-out 先平滑后慢,cubic-bezier(0,0,0,58,1) 5. ease-int-out 先慢中平滑后慢,cubic-bezier(0.42,0,0.58,1) 6. cubic-bezier(n,n,n,N) 自定义速度 | |
| transition-delay | 过渡效果何时开始 1. time 指定秒或毫秒数之前要等待过渡效果开始 |
5. 动画
| css属性 | 描述 | 示例 |
| @keyframes | 定义关键帧动画 1. 使用from to定义关键帧 @keyframes myFirst { from { ...... } to { ...... } } 2. 使用百分比%定义关键帧 @keyframes myFirst { 0% { ...... } 30% { ...... } 70% { ...... } 100% { ...... } } | @keyframes myFirst { 0% { background: red; left:0px; top:0px; } 25% { background: yellow; left:200px; top:0px; } 50% { background: blue; left:200px; top:200px; } 75% { background: green; left:0px; top:200px; } 100% { background: red; left:0px; top:0px; } } |
| animation | animation: name duration timing-function delay iteration-count direction fill-mode play-state;的简写 | div { animation-name: myfirst; animation-duration: 5s; animation-timing-function: linear; animation-delay: 2s; animation-iteration-count: infinite; animation-direction: alternate; animation-play-state: running; } |
| animation-name | 1. 指定关键帧动的名称,由@keyFrames定义的 2. none 没有指定动画 | |
| animation-duration | 1. time 动画完成一个周期需要花费时间(秒或毫秒),0值时则无动画效果 | |
| animation-timing-function | 动画效果速度曲线 1. linear 以相同速度开始直到结束,cubic-bezier(0,0,1,1) 2. ease 先慢中快后慢,cubic-bezier(0.25, 0.1, 0.25,1) 3. ease-in 先慢后平滑,cubic-bezier(0.42,0,1,1) 4. ease-out 先平滑后慢,cubic-bezier(0,0,0,58,1) 5. ease-int-out 先慢中平滑后慢,cubic-bezier(0.42,0,0.58,1) 6. cubic-bezier(n,n,n,N) 自定义速度 7. steps(int, start | end) | |
| animation-delay | 动画效果何时开始 1. time 指定秒或毫秒数之前要等待动画效果开始 | |
| animation-iteration-count | 动画被播放的次数 1. number 2. infinite 一直重复播放 | |
| animation-direction | 动画播放的方向 1. normal 正常播放 2. reverse 反向播放 3. alternate 奇数次正向,偶数次逆向 4. alternate-reverse 奇数次逆向,偶数次正向 5. initial 设置该属性为它默认值 6. inherit 从父元素继承 | |
| animation-fill-mode | 动画不播放时,应用到元素的样式 1. none 默认 2. forwards 运用动画结束时的属性值 3. backwards 第一个迭代时第一帧的值 4. both 动画遵循 forwards 和 backwards 的规则。也就是说,动画会在两个方向上扩展动画属性 5. inital 设置该属性为它的默认值 6. inherit 从父元素继承 | |
| animation-play-state | 1. paused 指定暂停动画 2. running 指定运行动画 JS操作会使用到 |
下一篇:【Web2D/3D】SVG(第二篇)-CSDN博客
注:以上,如有不合理之处,还请帮忙指出,大家一起交流学习~
相关文章:
【Web2D/3D】CSS3的2D/3D转换、过渡、动画(第一篇)
1. 前言 本篇开始介绍Web2D和3D相关基础知识,会从CSS3的2D/3D转换、过渡、动画,讲到Canvas 2D图形绘制,再到SVG,最后到WebGL。 坐标系:左上点是坐标原点(0,0),x轴正方向向右,y轴正方向向下&…...
uView NumberBox 步进器
该组件一般用于商城购物选择物品数量的场景 注意:该输入框只能输入大于或等于0的整数 #平台差异说明 App(vue)App(nvue)H5小程序√√√√ #基本使用 通过v-model绑定value初始值,此值是双向绑定的&…...
三菱plc的点动控制循环(小灯闪烁,单控气缸循环)
以为前一段时间小编做了一个气缸定时循环的程序,根据程序有不足之处,所以小编写下这篇文章,将网络上的plc小灯控制进行总结!如果对你有帮助,不要忘了点赞收藏!如果有更加好的梯形图,欢迎评论&am…...
学习Go语言Web框架Gee总结--http.Handler(一)
学习Go语言Web框架Gee总结--http.Handler http-base/go.modhttp-base/main.gohttp-base/gee/gee.gohttp-base/gee/go.mod 网站学习来源:Gee 代码目录结构: http-base/go.mod //指定当前模块的名称为 "example" module example//指定当前模…...
react+redux+antd-mobile 之 记账本案例
1.环境搭建 //使用CRA创建项目,并安装必要依赖,包括下列基础包 //1. Redux状态管理 - reduxjs/toolkit 、 react-redux //2. 路由 - react-router-dom //3. 时间处理 - dayjs //4. class类名处理 - classnames //5. 移动端组件库 - antd-mobile //6. 请…...
Day22
Day22 一,生产者消费者模型 1.1,单个生产者单个消费者 public class Test01 {/*** 知识点:生产者消费者模型 - 单个生产者单个消费者* * 分析:* 产品类 - Phone:属性(brand,price)* 生产者线程 - Producer* 消费者线程 - Consumer* …...
Windows下linux 子系统 WSL2怎样使用usb串口(USBIPD-win4.0.0)
Windows下linux 子系统 WSL2怎样使用usb串口(USBIPD-win4.0.0) 一、widows安装二、ubuntu安装三、widows配置四、wsl配置 一、widows安装 https://github.com/dorssel/usbipd-win 直接下载最新版本的msi文件安装 二、ubuntu安装 sudo apt install lin…...
飞腾Ubantu22.04.3安装OpenNebula测试
1.概述 因OpenneBula官方镜像源只有AMD架构的镜像包不存在ARM的镜像包,借此用源码编译进行测试。 2.官网github地址 下载解压存放在服务器上: https://github.com/OpenNebula/minione/blob/master文件目录: 3.安装依赖包 sudo apt -y …...
gookit/color - Go语言命令行色彩使用库教程
gookit/color - Go语言命令行色彩使用库教程 1.安装2.基础颜色(16-color)3.256色彩/RGB风格 1.安装 go get github.com/gookit/color2.基础颜色(16-color) 提供通用的API方法:Print Printf Println Sprint Sprintf 1、例如: color.Yellow.Println(&q…...
python弹奏《起风了》
代码是很大的! 其实就是python用ctypes调用Win API import ctypes import threading import time winmm = ctypes.windll.winmmclass Scale:Rest = 0C8 = 108B7 = 107A7s = 106A7 = 105G7s = 104G7 = 103F7s = 102F7 = 101E7 = 100D7s = 99D7 = 98C7s = 97C7 = 96B6 = 95A6s…...
Linux---all
Linux常用命令: Linux常用命令-CSDN博客 Linux命令大全(超详细版)_linux命令行大全-CSDN博客Linux常用命令大全(非常全面)-CSDN博客Linux 命令大全(看这一篇就足够)_linux命令-CSDN博客Linux常用命令大全——赶紧收藏…...
前端中级算法题
前端中级算法题 反转字符串 编写一个函数,接受一个字符串作为输入,并返回反转后的字符串。 示例: function reverseString(str) {return str.split().reverse().join(); }reverseString(hello); // 输出: olleh 找出数组中的最大值 编写一个函…...
Ant Design Vue 编译后的网页特点是什么,怎么确认他是用的前端 Ant Design Vue 技术栈的呢?
Ant Design Vue 是一个前端 UI 框架,使用 Vue.js 构建。它包含了大量的预设样式和组件,如按钮、表单、表格等,可以帮助开发者快速构建出优雅且功能丰富的网页。但是,要确定一个编译后的网页是否使用了 Ant Design Vue,…...
python | PYTHON正则表达式
操作符说明实例.表示任何单个字符[]字符集,对单个字符给出取值范围[abc]表示a、b、c,[a-z]表示a到z单个字符[^ ]非字符集,对单个字符给出排除范围[^abc]表示非a或b或c的单个字符*前一个字符0次或无限次扩充abc* 表示ab,abc&#x…...
为什么大学c语言课不顺便教一下Linux,Makefile
为什么大学c语言课不顺便教一下Linux,Makefile,git,gdb等配套工具链呢? 在开始前我有一些资料,是我根据自己从业十年经验,熬夜搞了几个通宵,精心整理了一份「Linux的资料从专业入门到高级教程工具包」&…...
Go后端开发 -- main函数 变量 常量 函数
Go后端开发 – main函数 & 变量 & 常量 & 函数 文章目录 Go后端开发 -- main函数 & 变量 & 常量 & 函数一、第一个main函数1.创建工程2.main函数解析 二、变量声明1.单变量声明2.多变量声明 三、常量1.常量的定义2.优雅的常量 iota 四、函数1.函数返回…...
2023/12/30 c++ work
定义一个Person类,私有成员int age,string &name,定义一个Stu类,包含私有成员double *score,写出两个类的构造函数、析构函数、拷贝构造和拷贝赋值函数,完成对Person的运算符重载(算术运算符、条件运算…...
ctfshow——文件上传
文章目录 文件上传思路web 151web 152web 153知识点解题 web 154web 155web 156web 157web 158web 159web160web 161 文件上传思路 web 151 打开页面显示:前台校验不可靠。说明这题是前端验证。 右键查看源代码,找到与上传点有关的前端代码:…...
【RocketMQ每日一问】RocketMQ SQL92过滤用法以及原理?
1.生产端 public class SQLProducer {public static int count 10;public static String topic "xiao-zou-topic";public static void main(String[] args) {DefaultMQProducer producer MQUtils.createLocalProducer();IntStream.range(0, count).forEach(i -&g…...
Go语言中的包管理工具之Go Path的使用
GoLang 中常用的包管理的方式 1 )概述 常用的有三种 Go PathGo VendorGo Modules 2 )发展历程 早期go的包管理存在很大缺陷,甚至可以说没有官方统一的包管理工具 一方面官方在努力发布一些实验性的包管理工具。同时也出现了很多社区开发…...
WebLaTeX:重构LaTeX创作流程的颠覆式解决方案
WebLaTeX:重构LaTeX创作流程的颠覆式解决方案 【免费下载链接】WebLaTex A complete alternative for Overleaf with VSCode Web Git Integration Copilot Grammar & Spell Checker Live Collaboration Support. Based on GitHub Codespace and Dev contai…...
K230 vs树莓派视觉套件:300元预算该选谁?实测对比工业检测场景
K230与树莓派视觉套件:300元预算下的工业检测实战对比 在工业自动化浪潮中,视觉检测系统正从大型企业向中小型制造车间快速渗透。当预算被严格限制在300元区间时,K230开发板与树莓派摄像头组合成为最受关注的两种解决方案。我们历时三个月在6…...
麒麟V10系统下国产海量数据库安装全攻略(含内核参数优化与避坑指南)
麒麟V10系统下国产海量数据库安装全攻略(含内核参数优化与避坑指南) 在国产化技术快速发展的今天,越来越多的企业和机构开始采用国产操作系统和数据库产品。麒麟V10作为国产操作系统的代表之一,其稳定性和安全性得到了广泛认可。而…...
别再用ls了!从Linux文件系统卡顿,看透MinIO多级目录的性能陷阱与正确用法
从Linux文件系统卡顿到MinIO性能陷阱:高效查询的工程哲学 当你在Linux终端输入ls命令后,系统突然卡死——这种经历对许多开发者来说并不陌生。但很少有人意识到,同样的性能陷阱正潜伏在MinIO这类对象存储系统的日常使用中。本文将揭示文件系…...
别再只用Set5了!超分辨率模型训练,这5个开源数据集(DIV2K、Flickr2K等)的实战配置与对比
超分辨率模型训练:5个开源数据集的深度实战指南 在超分辨率研究领域,数据集的选择往往决定了模型性能的上限。许多开发者习惯性地使用Set5、Set14等小型数据集,却忽略了更丰富的数据资源可能带来的性能突破。本文将深入解析DIV2K、Flickr2K、…...
如何快速找到领域内的核心论文?3 条最有效路径
在做科研文献检索时,很多研究者都会遇到同一个问题: 文献很多,但不知道哪些最重要。例如,当你在数据库中输入一个研究关键词时,检索结果可能会出现几百篇甚至上千篇论文。面对如此庞大的文献数量,很多人会产…...
【AI重塑科研】无需通读全文,三步教你用大模型高效产出文献综述
1. 为什么你需要AI辅助文献综述? 每次打开文献库看到上百篇待读论文就头皮发麻?我完全理解这种感受。去年准备开题报告时,导师要求我两周内完成50篇核心文献的综述,当时差点崩溃。直到我发现用大模型处理文献可以节省90%的时间&am…...
利用快马ai快速生成流水线plc控制逻辑原型,无硬件也能验证思路
最近在做一个自动化流水线的小项目,需要设计PLC控制逻辑。传统方式需要先搭建硬件环境才能调试,但通过InsCode(快马)平台的AI辅助,我实现了无硬件环境下的快速原型验证,分享下这个实用经验。 项目背景与需求分析 这个流水线控制系…...
如何快速使用OpCore Simplify:零基础黑苹果的终极配置指南
如何快速使用OpCore Simplify:零基础黑苹果的终极配置指南 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 还在为复杂的OpenCore配置而烦恼…...
如何安全提取Chrome浏览器密码:3种实用方法完全指南
如何安全提取Chrome浏览器密码:3种实用方法完全指南 【免费下载链接】chromepass Get all passwords stored by Chrome on WINDOWS. 项目地址: https://gitcode.com/gh_mirrors/chr/chromepass 在数字生活中,你是否遇到过忘记网站密码的困扰&…...
