【Web前端开发基础】CSS3之空间转换和动画

CSS3之空间转换和动画

目录

  • CSS3之空间转换和动画
    • 一、空间转换
      • 1.1 概述
      • 1.2 3D转换常用的属性
      • 1.3 3D转换:translate3d(位移)
      • 1.4 3D转换:perspective(视角)
      • 1.5 3D转换:rotate3d(旋转)
      • 1.6 3D转换:transform-style: preserve-3d(立体呈现)
      • 1.7 3D转换:scale3d(缩放)
      • 1.7 3D导航案例
    • 二、动画
      • 2.1 动画介绍
      • 2.2 动画的基本使用
      • 2.3 动画的常用属性
      • 2.4 逐帧动画

一、空间转换

目标:使用transform属性实现元素在空间内的位移、旋转、缩放等效果

1.1 概述

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

  • 空间转换也叫3D转换

  • 属性:transform
    在这里插入图片描述

  • 2D转换能够改变元素X轴和Y轴方向特性,3D转换还能改变Z轴方向特性,并且可以通过视角设置透视关系,使元素具有透视效果

1.2 3D转换常用的属性

在这里插入图片描述

1.3 3D转换:translate3d(位移)

目标:使用translate实现元素空间位移效果

  • 语法
    • transform: translate3d(x, y, z);
    • transform: translateX(x);
    • transform: translateY(y);
    • transform: translateZ(z);
  • 取值(正负即可):① 数字+px ② 百分比
  • 注意点:x,y,z是不能够省略的,如果没有就写0

1.4 3D转换:perspective(视角)

目标:使用perspective属性实现透视效果

  • 思考:生活中,同一个物体,观察距离不同,视觉上有什么区别?
    • 答:近大远小、近清楚远模糊
  • 思考:默认情况下,为什么无法观察到Z轴位移效果?
    • 答:Z轴是视线方向,移动效果是距离的远或近, 电脑屏幕是平面,默认无法观察远近效果
  • 属性(添加给父级
    • perspective: 值;
    • 取值:像素单位数值, 数值一般在800 – 1200
  • 作用
    • 空间转换时,为元素添加近大远小、近实远虚的视觉效果
      在这里插入图片描述

1.5 3D转换:rotate3d(旋转)

目标:使用rotate实现元素空间旋转效果

  • 语法
    • transform: rotate3d(x, y, z, angle);
    • transform: rotateX(x);
    • transform: rotateY(y);
    • transform: rotateZ(z);
  • 注意点:
    • rotate3d(x, y, z, angle) :用来设置自定义旋转轴的位置及旋转的角度
    • x,y,z 取值为0-1之间的数字
  • 左手法则:判断旋转方向: 左手握住旋转轴, 拇指指向正值方向, 手指弯曲方向为旋转正值方向
    在这里插入图片描述

1.6 3D转换:transform-style: preserve-3d(立体呈现)

目标: 使用transform-style: preserve-3d呈现立体图形

  • 思考:使用perspective透视属性能否呈现立体图形?

    • 答:不能,perspective只增加近大远小、近实远虚的视觉效果
  • 实现方法

    • 添加transform-style: preserve-3d;
    • 使子元素处于真正的3d空间
      在这里插入图片描述
  • transform-style取值

    • preserve-3d :设置3D转换
    • flat :默认值
  • 呈现立体图形步骤

    1. 盒子父元素添加transform-style: preserve-3d;
    2. 按需求设置子盒子的位置(位移或旋转)
  • 注意:空间内,转换元素都有自已独立的坐标轴,互不干扰
    在这里插入图片描述

1.7 3D转换:scale3d(缩放)

目标:使用scale实现空间缩放效果

  • 语法
    • transform: scale3d(x, y, z)
    • transform: scaleX(x)
    • transform: scaleY(y)
    • transform: scaleZ(z)

1.7 3D导航案例

目标:使用立体呈现技巧实现3D导航效果

  • 实现思路:
    1. 搭建立方体:绿色盒子是立方体的前面,橙色盒子是立方体的上面
      在这里插入图片描述

      • li标签
        • 添加立体呈现属性transform-style: preserve-3d;
        • 添加旋转属性(为了便于观察效果,案例完成后删除即可)
          在这里插入图片描述
      • a标签
        • 调节a标签的位置
          • a标签定位(子绝父相)
          • 英文部分添加旋转和位移样式
          • 中文部分添加位移样式
            在这里插入图片描述
    2. 添加hover状态旋转切换效果

      • 鼠标滑过li, 添加空间旋转样式
      • li添加过渡属性
    3. 注意: 案例完成后,删除li的旋转样式

二、动画

目标:使用animation添加动画效果

2.1 动画介绍

  • 动画是CSS3中具有颠覆性的特征之一,有通过设置多个节点来精确控制一个或一组动画,常用来实现复杂的动画效果。
    相较于过渡,动画可以实现更多变化,更多控制,连续自动播放等效果

  • 动画效果:实现多个状态间的变化过程,动画过程可控(重复播放、最终画面、是否暂停)
    在这里插入图片描述

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

  • 构成动画的最小单元:帧或动画帧
    在这里插入图片描述

2.2 动画的基本使用

  • 制作动画分为两步:

    1. 先定义动画
      在这里插入图片描述

    2. 再使用(调用)动画
      在这里插入图片描述

  • 动画的序列

    • 0%是动画的开始,100%是动画的完成。这样的规则就是动画序列
    • 在 @keyframes 中规定某项CSS样式,就能创建由当前样式逐渐改为新样式的动画效果
    • 动画是元素从一种样式逐渐变化为另外一种样式的效果。你可以改变任意多的样式任意多的次数
    • 请使用百分比来规定变化发生的时间,或者关键词 from 和 to ,等同于 0% 和 100%
  1. 使用 @keyframes 定义动画(类似定义类选择器)
/* 定义动画 *//* ① 百分比 */
@keyframes 动画名 {0% {初始状态样式}100% {动画结束时样式}
}/* 关键字 */
@keyframes 动画名 {from {初始状态样式}to {动画结束时样式}
}
  1. 元素使用动画
/* 使用(调用动画) */使用动画的元素 {/* 调用动画 */animation-name: 动画名称;/* 持续时间 */animation-duration: 持续时间;
}
  1. 快速体验
    定义并使用动画
/* 需求:我们打开页面,盒子就从左边走到右边 */
/* 第1种:百分比 */
/* 1.定义动画 */
@keyframes move {0% {transform: translate(0, 0);}100% {transform: translate(1000px, 0);}
}
/* 第2种:关键字 */
/* 1.定义动画 */
/* from 和 to 等价于 0% 和 100% */
@keyframes move {from {transform: translate(0, 0);}to {transform: translate(1000px, 0);}
}
div {width: 200px;height: 200px;background-color: pink;/* 2.调用动画 *//* 动画名称 */animation-name: move;/* 动画持续时间 */animation-duration: 2s;
}

动画序列里的百分比

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initialscale=1.0"><title>Document</title><style>/* 动画序列 *//* 1. 可以做多个状态的变化 keyframes 关键帧*//* 2. 里面的百分比要是整数 *//* 3. 里面的百分比就是 总的时间的划分 eg: 6s * 25% = 1.25s*/@keyframes move {/* 起始状态,可以为空或者不写 */0% {transform: translate(0, 0);}25% {transform: translate(1000px, 0);}50% {transform: translate(1000px, 500px);}75% {transform: translate(0, 500px);}100% {transform: translate(0, 0);}}div {width: 200px;height: 200px;background-color: pink;/* 调用动画,直接使用名字调用 */animation-name: move;/* 设置动画持续时间 */animation-duration: 6s;}</style>
</head>
<body><div></div>
</body>
</html>
  1. 动画的连写
    在这里插入图片描述
    • 动画名称和动画时长必须赋值
    • 取值不分先后顺序
    • 如果有2个时间值,第一个时间表示动画时长,第二个时间表示延迟时间

2.3 动画的常用属性

在这里插入图片描述

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>@keyframes move {0% {transform: translate(0, 0);}100% {transform: translate(1000px, 0);}}div {width: 100px;height: 100px;background-color: pink;/* 动画名称(必备属性) */animation-name: move;/* 持续时间(必备属性)*/animation-duration: 2s;/* 动画运动速度曲线 */animation-timing-function: ease;/* 动画何时开始 */animation-delay: 1s;/* 重复次数 iteration 重复的 count 次数 infinite 无限 */animation-iteration-count: infinite;/* 是否反方向播放 默认是normal 若需要逆向播放,则使用alternate*/animation-direction: alternate;/* 动画结束状态 默认是backwards 回到起始状态,我们也可以让他停留在结束状态
forwards */animation-fill-mode: forwards;}div:hover {/* 动画播放状态 *//* 鼠标经过 div, 让这个 div 的动画停止,鼠标离开 div 就继续播放动画 */animation-play-state: paused;}</style>
</head>
<body><div></div>
</body>
</html>

2.4 逐帧动画

目标:使用steps实现逐帧动画

  • 属性: animation-timing-function

  • 取值: steps(数字):逐帧动画
    在这里插入图片描述

  • 逐帧动画:帧动画。开发中,一般配合精灵图实现动画效果

  • animation-timing-function: steps(N); 将动画过程等分成N份
    在这里插入图片描述

  • 精灵动画制作步骤

    • 准备显示区域
      • 设置盒子尺寸是一张小图的尺寸,背景图为当前精灵图
    • 定义动画
      • 改变背景图的位置(移动的距离就是精灵图的宽度)
    • 使用动画
      • 添加速度曲线steps(N),N与精灵图上小图个数相同
      • 添加无限重复效果
        在这里插入图片描述
  • 多组动画

    • 思考:如果想让小人跑远一些,该如何实现?
    • 答:精灵动画的同时添加盒子位移动画
      在这里插入图片描述
/* 样式代码 */
.box {width: 140px;height: 140px;background: url("./images/jlbg.png") no-repeat 0 0;animation: run 1s steps(12) 3, move 3s linear forwards;
}
@keyframes run {/* 动画的开始状态和原来的默认样式相同时,可以省略开始状态的代码 */0% {background-position: 0 0;}100% {background-position: -1680px 0;}
}
@keyframes move {0% {transform: translate(0);}100% {transform: translate(1000px);}
}
<!-- 结构代码 -->
<div class="box"></div>

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

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

相关文章

vit细粒度图像分类(一)CADF学习笔记

1.摘要&#xff1a; 目的 基于Transformer架构的网络在图像分类中表现出优异的性能。然而&#xff0c;注意力机制往往只关注图像中的显著性特征&#xff0c;而忽略了其他区域的次级显著信息&#xff0c;基于自注意力机制的Transformer也是如此。为了获取更多的有效信息&#…

Spring基于AbstractRoutingDataSource实现MySQL多数据源

目录 多数据源实现 yml配置文件 配置类 业务代码 案例演示 多数据源实现 yml配置文件 spring:datasource:type: com.alibaba.druid.pool.DruidDataSourcedatasource1:url: jdbc:mysql://127.0.0.1:3306/datasource1?serverTimezoneUTC&useUnicodetrue&characte…

企业转型:虚拟化对云计算的影响

虚拟化被认为是IT行业最优秀的技术之一。虚拟化提供的灵活性和效率&#xff0c;有助于企业根据不断变化的需求扩展其IT基础设施。虚拟化是云基础设施的基础&#xff0c;允许按需动态分配和管理计算资源。这种适应性对于满足现代企业的多样化需求至关重要&#xff0c;因为现代企…

外汇天眼:美国证券交易委员会(SEC)采纳了一系列规定,以加强与特殊目的收购公司(SPACs)相关的投资者保护

美国证券交易委员会&#xff08;SEC&#xff09;今天通过了一系列新规和修订&#xff0c;以增强特殊目的收购公司&#xff08;SPACs&#xff09;的首次公开募股&#xff08;IPOs&#xff09;中的披露&#xff0c;并在SPACs与目标公司之间的后续业务合并交易&#xff08;de-SPAC…

u盘可以分区吗?怎么分区?分区后不显示出来怎么办

随着科技的不断发展&#xff0c;U盘已经成为人们传输和存储数据的重要设备之一。而针对U盘的分区问题&#xff0c;很多人对此还不太了解。比如&#xff0c;U盘可以分区吗&#xff1f;U盘怎么分区&#xff1f;U盘分区后不显示出来怎么办&#xff1f;下面我们一起来针对这些问题进…

SpringCloud Aliba-Seata【下】-从入门到学废【8】

目录 1.数据库创建 1.seata_account库下建表 2.seata_order库下建表 3.seata_storage库下建表 4.在每个库下创建回滚日志 2.创建订单模块 2.1建工程 2.2加pom 2.3改yml 2.4file.conf 2.5registry.conf 2.6domain 2.7Dao 2.8Service 2.9controller 2.10confi…

对 MODNet 网络结构直接剪枝的探索

文章目录 1 写在前面2 遇到问题3 解决方案4 探索过程4.1 方案一4.2 方案二4.3 方案三 5 疑惑与思考5.1 Q15.2 Q2 1 写在前面 在前面的文章中&#xff0c;笔者与小伙伴们分享了对 MODNet 主干网络部分以及其余分支分别剪枝的探索历程&#xff0c;即先分解、再处理、后融合的手法…

C++:缺省参数函数重载

目录 C/C语言 函数调用的工作原理&#xff1a; 函数调用一般分为两个部分&#xff1a; 缺省参数&#xff1a; 缺省参数的分类&#xff1a; 全缺省参数 半缺省参数 注意事项&#xff1a; 缺省参数与C语言的调用参数对比&#xff1a; 函数重载&#xff1a; 函数重载…

pve8.1 安装、创建centos7虚拟机及配置

之前创建虚拟机centos7时&#xff0c;硬盘分配太大了&#xff0c;做成模板后无法进行修改了&#xff0c;安装完pve8.1后&#xff0c;强迫症犯了重新创建一下顺便记录一下配置过程。由于目前centos7还是生产用的比较多的版本所以本次还是安装centos7.9版本。 一、下载镜像 下载…

利用Redis List实现数据库分页快速查询的有效方法

目录 引言 传统数据库分页查询的挑战 Redis List的优势 利用Redis List实现分页查询 1. 数据准备 2. 分页查询 3. 分页缓存 4. 分页处理 结论 引言 随着Web应用程序的发展和用户数量的增加&#xff0c;数据库分页查询变得越来越常见。分页查询允许用户在大型数据集中…

JVM/GC复习

JVM/GC JVM(java虚拟机)MATjstack(将正在运行的JVM的线程进行快照并且打印出来)死锁VisualVM工具(监控线程内存使用情况)JMX GC垃圾回收算法1.引用计数法2.标记清除发3.标记压缩算法4.复制算法5.分代算法 收集器1.串行垃圾收集器2.并行垃圾收集器2.CMS垃圾收集器 3.G1垃圾收集器…

营销一体化平台如何助力企业增长?3个案例深度解析

无论大家怎么想&#xff0c;反对和批评的声音有多大&#xff0c;还是有很多企业从组织层面为CMO下了很多需要及时转化的KPI要求。 原因无外乎是增长乏力。再加上外部环境处在产业升级换代、科技革命在即的当口&#xff0c;企业比以往任何时候都意识到营销变革的重要性。 然而…

两相步进电机驱动原理

两相步进电机驱动 前言什么是步进电机驱动器细分控制电机内部结构图片步进电机驱动原理&#xff08;重要&#xff09;步进电机参数&#xff11;、步距角&#xff1a;收到一个脉冲转动的角度&#xff12;、细分数 &#xff1a;&#xff11;&#xff0f;&#xff12;&#xff0c…

清华大学对港澳台华侨生新增额外招生项目来啦

导读 众所周知的是&#xff0c;港澳台和华侨生录取清华大学和北京大学&#xff0c;除了港澳台联考&#xff0c;DSE申请等形式之外&#xff0c;那只有和普通内地高中生混在一起的录取方式。但是其实近些年来&#xff0c;清华大学也为尖子生开辟了新的录取方式&#xff0c;我们一…

Qt Quick程序的发布|Qt5中QML和Qt Quick 的更改

# Quick程序的发布旧版做法 # Qt5中QML和Qt Quick 的更改 1.QML语言的更改(Qt4->Qt5) 在QML语言中,只有少量更改会影响QML代码的迁移:无法直接导入单独的文件(例如:import"MyType.qml”),需要导人该文件所在的目录; JavaScript文件中的相对路径被解析…

线性代数:矩阵的定义

目录 一、定义 二、方阵 三、对角阵 四、单位阵 五、数量阵 六、行&#xff08;列&#xff09;矩阵 七、同型矩阵 八、矩阵相等 九、零矩阵 十、方阵的行列式 一、定义 二、方阵 三、对角阵 四、单位阵 五、数量阵 六、行&#xff08;列&#xff09;矩阵 七、同型矩…

手写一个图形验证码

文章目录 需求分析 需求 使用 JS 写一个验证码&#xff0c;并在前端进行校验 分析 新建文件 VueImageVerify.vue <template><div class"img-verify"><canvas ref"verify" :width"state.width" :height"state.height&qu…

河南嘉家购商贸有限公司获绿色积分信用认证

“实现绿色产业、打造完善的绿色产业链、走可持续发展共创共赢”。近日&#xff0c;河南嘉家购商贸有限公司获得绿色积分认证&#xff0c;确认了该企业在绿色消费积分领域的领先地位。 据了解&#xff0c;河南嘉家购商贸有限公司始终将绿色积分视为企业发展的核心要素。全面优化…

如何实现无公网ip远程访问本地websocket服务端【内网穿透】

文章目录 1. Java 服务端demo环境2. 在pom文件引入第三包封装的netty框架maven坐标3. 创建服务端,以接口模式调用,方便外部调用4. 启动服务,出现以下信息表示启动成功,暴露端口默认99995. 创建隧道映射内网端口6. 查看状态->在线隧道,复制所创建隧道的公网地址加端口号7. 以…

G1与ZGC

G1垃圾收集器(-XX:UseG1GC)详解 G1(Garbage-First)是一款面向服务器的垃圾收集器&#xff0c;主要针对配备多颗处理器及大容量内存的机器。以极高概率满足GC停顿时间要求的同时&#xff0c;还具备高吞吐量性能特性。 G1把内存区域划分为小格子(Region)&#xff0c;最多可以有2…