CSS3新增的语法(三)【2D,3D,过渡,动画】

news2024/10/12 20:21:26

CSS3新增的语法(三)【2D,3D,过渡,动画】

    • 10.2D变换
      • 10.1. 2D位移
      • 10.2. 2D缩放
      • 10.3. 2D旋转
      • 10.4. 2D扭曲(了解)
      • 10.5. 多重变换
      • 10.6. 变换原点
    • 11. 3D变换
      • 11.1. 开启3D空间
      • 11.2. 设置景深
      • 11.3. 透视点位置
      • 11.4. 3D 位移
      • 11.5. 3D 旋转
      • 11.6. 3D 缩放
      • 11.7. 多重变换
      • 11.8. 背部可见性
    • 12. 过渡
      • 12.1. transition-property
      • 12.2. transition-duration
      • 12.3. transition-delay
      • 12.4. transition-timing-function
      • 12.5. transition 复合属性
    • 13. 动画
      • 13.1. 什么是帧
      • 13.2. 什么是关键帧
      • 13.3. 动画的基本使用
      • 13.4. 动画的其他属性
      • 13.5. 动画复合属性

10.2D变换

10.1. 2D位移

2D 位移可以改变元素的位置,具体使用方式如下:

  1. 先给元素添加 转换属性 transform;
  2. 编写 transform 的具体值,相关可选值如下:
含义
translateX设置水平方向位移,需指定长度值;若指定的是百分比,是参考自身宽度的百分比。
translateY设置垂直方向位移,需指定长度值;若指定的是百分比,是参考自身高度的百分比。
translate一个值代表水平方向,两个值代表:水平和垂直方向。
  1. 注意点:
  1. 位移与相对定位很相似,都不脱离文档流,不会影响到其它元素。
  2. 与相对定位的区别:相对定位的百分比值,参考的是其父元素;位移的百分比值,参考的是 其自身。
  3. 浏览器针对位移有优化,与定位相比,浏览器处理位移的效率更高。
  4. transform 可以链式编写,例如:
    transform: translateX(30px) translateY(40px);
  5. 位移对行内元素无效。
  6. 位移配合定位,可实现元素水平垂直居中
.box {
	position: absolute;
	left: 50%;
	top: 50%;
	transform: translate(-50%, -50%);
}

10.2. 2D缩放

2D 缩放是指:让元素放大或缩小,具体使用方式如下:

  1. 先给元素添加 转换属性 transform;
  2. 编写 transform 的具体值,相关可选值如下:
含义
scaleX设置水平方向的缩放比例,值为一个数字, 1 表示不缩放,大于 1 放大,小于 1 缩小。
scaleY设置垂直方向的缩放比例,值为一个数字, 1 表示不缩放,大于 1 放大,小于 1 缩小。
scale同时设置水平方向、垂直方向的缩放比例,一个值代表同时设置水平和垂直缩放;两个值分别代表:水平缩放、垂直缩放。
  1. 注意点:
  1. scale 的值,是支持写负数的,但几乎不用,因为容易让人产生误解。
  2. 借助缩放,可实现小于 12px 的文字。

10.3. 2D旋转

2D 旋转是指:让元素在二维平面内,顺时针旋转或逆时针旋转,具体使用方式如下:

  1. 先给元素添加 转换属性 transform;
    2.编写 transform 的具体值,相关可选值如下:
含义
rotate设置旋转角度,需指定一个角度值( deg ),正值顺时针,负值逆时针。

注意: rotateZ(20deg) 相当于 rotate(20deg) ,当然到了 3D 变换的时候,还能写: rotate(x,x,x)

10.4. 2D扭曲(了解)

2D 扭曲是指:让元素在二维平面内被“拉扯”,进而“走形”,实际开发几乎不用,了解即可,具体使用方
式如下:

  1. 先给元素添加 转换属性 transform;
  2. 编写 transform 的具体值,相关可选值如下:
    在这里插入图片描述

10.5. 多重变换

多个变换,可以同时使用一个 transform 来编写。
transform: translate(-50%, -50%) rotate(45deg);

注意点:多重变换时,建议最后旋转。(旋转后的坐标原点会变)

10.6. 变换原点

  • 元素变换时,默认的原点是元素的中心,使用 transform-origin 可以设置变换的原点。
  • 修改变换原点对位移没有影响, 对旋转和缩放会产生影响。
  • 如果提供两个值,第一个用于横坐标,第二个用于纵坐标。
  • 如果只提供一个,若是像素值,表示横坐标,纵坐标取 50% ;若是关键词,则另一个坐标取 50%
  1. transform-origin: 50% 50% , 变换原点在元素的中心位置,百分比是相对于自 身。—— 默认值
  2. transform-origin: left top ,变换原点在元素的左上角 。
  3. transform-origin: 50px 50px , 变换原点距离元素左上角 50px 50px 的位置。
  4. transform-origin: 0 ,只写一个值的时候,第二个值默认为 50% 。

11. 3D变换

11.1. 开启3D空间

重要原则:元素进行 3D 变换的首要操作:父元素必须开启 3D 空间!

  • 使用 transform-style 开启 3D 空间,可选值如下:

    • flat : 让子元素位于此元素的二维平面内( 2D 空间)—— 默认值
    • preserve-3d : 让子元素位于此元素的三维空间内( 3D 空间)

11.2. 设置景深

何为景深?—— 指定观察者与 z=0 平面的距离,能让发生 3D 变换的元素,产生透视效果,看来更加立体。

使用 perspective 设置景深,可选值如下:

  • none : 不指定透视 ——(默认值)
  • 长度值 : 指定观察者距离 z=0 平面的距离,不允许负值。

注意: perspective 设置给发生 3D 变换元素的父元素!

11.3. 透视点位置

所谓透视点位置,就是观察者位置;默认的透视点在元素的中心。

使用 perspective-origin 设置观察者位置(透视点的位置),例如:
/* 相对坐标轴往右偏移400px, 往下偏移300px(相当于人蹲下300像素,然后向右移动400像素看元素)*/
perspective-origin: 400px 300px;
注意:通常情况下,我们不需要调整透视点位置。

11.4. 3D 位移

3D 位移是在 2D 位移的基础上,可以让元素沿 z 轴位移,具体使用方式如下:

  1. 先给元素添加 转换属性 transform;
  2. 编写 transform 的具体值, 3D 相关可选值如下:
含义
translateZ设置 z 轴位移,需指定长度值,正值向屏幕外,负值向屏幕里,且不能写百分比。
translate3d第1个参数对应 x 轴,第2个参数对应 y 轴,第3个参数对应 z 轴,且均不能省略。

11.5. 3D 旋转

3D 旋转是在 2D 旋转的基础上,可以让元素沿 x 轴和 y 轴旋转,具体使用方式如下:

  1. 先给元素添加 转换属性 transform;
  2. 编写 transform 的具体值, 3D 相关可选值如下:
    在这里插入图片描述

11.6. 3D 缩放

3D 缩放是在 2D 缩放的基础上,可以让元素沿 z 轴缩放,具体使用方式如下:

  1. 先给元素添加 转换属性 transform;
  2. 编写 transform 的具体值, 3D 相关可选值如下:
含义
scaleZ设置 z 轴方向的缩放比例,值为一个数字, 1 表示不缩放,大于 1 放大,小于 1 缩小。(会影响景深)
scale3d第1个参数对应 x 轴,第2个参数对应 y 轴,第3个参数对应 z 轴,参数不允许省略。

11.7. 多重变换

多个变换,可以同时使用一个 transform 来编写。
transform: translateZ(100px) scaleZ(3) rotateY(40deg);

注意点:多重变换时,建议最后旋转。

11.8. 背部可见性

使用 backface-visibility 指定元素背面,在面向用户时是否可见,常用值如下:

  • visible : 指定元素背面可见,允许显示正面的镜像。—— 默认值
  • hidden : 指定元素背面不可见

注意: backface-visibility 需要加在发生 3D 变换元素的自身上。

12. 过渡

过渡可以在不使用 Flash 动画,不使用 JavaScript 的情况下,让元素从一种样式,平滑过渡为另一 种样式。

12.1. transition-property

  • 作用:定义哪个属性需要过渡,只有在该属性中定义的属性(比如宽、高、颜色等)才会以有过渡 效果。
  • 常用值:
    1. none :不过渡任何属性。
    2. all :过渡所有能过渡的属性。
    3. 具体某个属性名 ,例如: width 、 heigth ,若有多个以逗号分隔。

注意:

  1. 不是所有的属性都能过渡,值为数字,或者值能转为数字的属性,都支持过渡,否则不支持 过渡。
  2. 常见的支持过渡的属性有:颜色、长度值、百分比、 z-index 、 opacity 、 2D 变换属 性、 3D 变换属性、阴影。

12.2. transition-duration

  • 作用:设置过渡的持续时间,即:一个状态过渡到另外一个状态耗时多久。
  • 常用值:
    1. 0 :没有任何过渡时间 —— 默认值。
    2. s 或 ms :秒或毫秒。
    3. 列表 :
      • 如果想让所有属性都持续一个时间,那就写一个值。
      • 如果想让每个属性持续不同的时间那就写一个时间的列表。
        transition-duration:1s,2s;(两个过渡方式时)

12.3. transition-delay

  • 作用:指定开始过渡的延迟时间,单位: s 或 ms

12.4. transition-timing-function

  • 作用:设置过渡的类型
  • 常用值:
    1. ease : 平滑过渡 —— 默认值
    2. linear : 线性过渡
    3. ease-in : 慢 → 快
    4. ease-out : 快 → 慢
    5. ease-in-out : 慢 → 快 → 慢
    6. step-start : 等同于 steps(1, start)
    7. step-end : 等同于 steps(1, end)
    8. steps( integer,?) : 接受两个参数的步进函数。第一个参数必须为正整数,指定函数的
    步数。第二个参数取值可以是 start 或 end ,指定每一步的值发生变化的时间点。第二个
    参数默认值为 end 。
    9. cubic-bezie ( number, number, number, number): 特定的贝塞尔曲线类型。
    ------ 在线制作贝赛尔曲线:https://cubic-bezier.com

12.5. transition 复合属性

如果设置了一个时间,表示 duration ;
如果设置了两个时间,第一是 duration ,第二个是 delay ;
其他值没有顺序要求。

transition:1s 1s linear all;

13. 动画

13.1. 什么是帧

一段动画,就是一段时间内连续播放 n 个画面。每一张画面,我们管它叫做“帧”。一定时间内连续快速播放若干个帧,就成了人眼中所看到的动画。同样时间内,播放的帧数越多,画面看起来越流 畅。

13.2. 什么是关键帧

关键帧指的是,在构成一段动画的若干帧中,起到决定性作用的 2-3 帧。
在这里插入图片描述

13.3. 动画的基本使用

  • 第一步:定义关键帧(定义动画)
    1. 简单方式定义:

      	/*写法一*/
      	@keyframes 动画名 {
      		from {
      			/*property1:value1*/
      			/*property2:value2*/
      		}
      		to {
      			/*property1:value1*/
      		}
      	}
      
      
    2. 完整方式定义:

      @keyframes testKey {
      	0% {
      		/*property1:value1*/
      	}
      	20% {
      		/*property1:value1*/
      	}
      	40% {
      		/*property1:value1*/
      	}
      	60% {
      		/*property1:value1*/
      	}
      	80% {
      		/*property1:value1*/
      	}
      	100% {
      		/*property1:value1*/
      	}
      }
      
      
  • 第二步:给元素应用动画,用到的属性如下:
    1. animation-name :给元素指定具体的动画(具体的关键帧)
    2. animation-duration :设置动画所需时间
    3. animation-delay :设置动画延迟
      	box {
      		/* 指定动画 */
      		animation-name: testKey;
      		/* 设置动画所需时间 */
      		animation-duration: 5s;
      		/* 设置动画延迟 */
      		animation-delay: 0.5s;
      	}
      

13.4. 动画的其他属性

  • animation-timing-function ,设置动画的类型,常用值如下:

    1. ease : 平滑动画 —— 默认值
    2. linear : 线性过渡
    3. ease-in : 慢 → 快
    4. ease-out : 快 → 慢
    5. ease-in-out : 慢 → 快 → 慢
    6. step-start : 等同于 steps(1, start)
    7. step-end : 等同于 steps(1, end)
    8. steps( integer,?) : 接受两个参数的步进函数。第一个参数必须为正整数,指定
      函数的步数。第二个参数取值可以是 start 或 end ,指定每一步的值发生变化的时间
      点。第二个参数默认值为 end 。
    9. cubic-bezie ( number, number, number, number): 特定的贝塞尔曲线类型。
  • animation-iteration-count ,指定动画的播放次数,常用值如下:

    1. number :动画循环次数
    2. infinite : 无限循环
  • animation-direction ,指定动画方向,常用值如下:

    1. normal : 正常方向 (默认)
    2. reverse : 反方向运行
    3. alternate : 动画先正常运行再反方向运行,并持续交替运行
    4. alternate-reverse : 动画先反运行再正方向运行,并持续交替运行
  • animation-fill-mode ,设置动画之外的状态

    1. forwards : 设置对象状态为动画结束时的状态
    2. backwards : 设置对象状态为动画开始时的状态
  • animation-play-state ,设置动画的播放状态,常用值如下:

    1. running : 运动 (默认)
    2. paused : 暂停

13.5. 动画复合属性

只设置一个时间表示 duration ,设置两个时间分别是: duration 和 delay ,其他属性没有数量和 顺序要求。

.inner {
		animation: atguigu 3s 0.5s linear 2 alternate-reverse forwards;
}

备注: animation-play-state 一般单独使用。

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

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

相关文章

java数据结构与算法刷题-----LeetCode79. 单词搜索

java数据结构与算法刷题目录(剑指Offer、LeetCode、ACM)-----主目录-----持续更新(进不去说明我没写完):https://blog.csdn.net/grd_java/article/details/123063846 文章目录 回溯深度优先遍历 回溯深度优先遍历 解题思路:时间复…

Vue 大文件切片上传实现指南包会,含【并发上传切片,断点续传,服务器合并切片,计算文件MD5,上传进度显示,秒传】等功能

Vue 大文件切片上传实现指南 背景 在Web开发中,文件上传是一个常见的功能需求,尤其是当涉及到大文件上传时,为了提高上传的稳定性和效率,文件切片上传技术便显得尤为重要。通过将大文件切分成多个小块(切片&#xff0…

Rust线程间通信通讯channel的理解和使用

Channel允许在Rust中创建一个消息传递渠道,它返回一个元组结构体,其中包含发送和接收端。发送端用于向通道发送数据,而接收端则用于从通道接收数据。不能使用可变变量的方式,线程外面修改了可变变量的值,线程里面是拿不…

UE5启用SteamOS流程

一、安装OnlineSubsystemSteam插件 1、在UE里安装OnlineSubsystemSteam 2、设置默认开始地图 3、设置DefaultEngine.ini文件: 打开项目根目录/Config/DefaultEngine.ini文件 打开官网的配置说明 复制并粘贴到该文件中 4、设置运行模式 5、测试 确保Steam平台已…

云原生:应用敏捷,华为视角下的应用现代化

Gartner 也提出,到 2023 年,新应用新服务的数量将达到 5 亿,也即是说:“每个企业都正在成为软件企业”。据IDC 预测,到 2025 年三分之二的企业将成为多产的“软件企业”,每天都会发布软件版本。越来越多的企…

【HTML】简单制作一个动态3D正方体

目录 前言 开始 HTML部分 JS部分 CSS部分 效果图 总结 前言 无需多言,本文将详细介绍一段代码,具体内容如下: 开始 首先新建文件夹,创建两个文本文档,其中HTML的文件名改为[index.html],JS的文件名改…

基于Python深度学习的中文情感分析系统(V2.0)

博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…

v3-admin-vite 改造自动路由,view页面自解释Meta

需求 v3-admin-vite是一款不错的后端管理模板,主要是pany一直都在维护,最近将后台管理也进行了升级,顺便完成一直没时间解决的小痛痒: 在不使用后端动态管理的情况下。我不希望单独维护一份路由定义,我希望页面是自解…

STM32的定时器中断Cubemx

STM32的定时器中断Cubemx 0.定时器简介1.配置时钟2.配置定时器3.创建工程4.补充源码 0.定时器简介 基本定时器功能: 16位向上、向下、向上/下自动装载计数器16位可编程(可以实时修改)预分频器,计数器时钟频率的分频系数为1~65535之间的任意…

BGP-(as-path-filter)

BGP-as-path-filter,缺省 as-path-filter,正则表达式,as-path过滤器,对于BGP的as-path属性实际上可以看成是一个包含空格的字符串。 特点:1、通过对BGP路由的as-path属性进行匹配达到对BGP路由的过滤。 2、在route-…

Vue组件封装重要知识点

一、什么是组件? Vue.js的一个核心思想是组件化。所谓组件化,就是把页面拆分成多个组件,每个组件依赖的CSS、JavaScript、模板、图片等资源放在一起开发和维护。组件是资源独立的,组件在系统内部可复用,组件和组件之间…

时序预测 | Matlab实现CPO-BiLSTM【24年新算法】冠豪猪优化双向长短期记忆神经网络时间序列预测

时序预测 | Matlab实现CPO-BiLSTM【24年新算法】冠豪猪优化双向长短期记忆神经网络时间序列预测 目录 时序预测 | Matlab实现CPO-BiLSTM【24年新算法】冠豪猪优化双向长短期记忆神经网络时间序列预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab实现CPO-BiLST…

目标检测——图像中提取文字

一、重要性及意义 图像提取文本,即光学字符识别(OCR)技术,在现代社会中的重要性和意义日益凸显。以下是关于图像提取文本的重要性和意义的几个关键方面: 信息获取的效率提升 快速处理大量文档:OCR技术可…

基于AI智能识别技术的智慧展览馆视频监管方案设计

一、建设背景 随着科技的不断进步和社会安全需求的日益增长,展览馆作为展示文化、艺术和科技成果的重要场所,其安全监控系统的智能化升级已成为当务之急。为此,旭帆科技(TSINGSEE青犀)基于视频智能分析技术推出了展览…

OpenHarmony实战:标准系统移植指南

本文描述了移植一块开发板的通用步骤,和具体芯片相关的详细移植过程无法在此一一列举。后续社区还会陆续发布开发板移植的实例供开发者参考。 定义开发板 本文以移植名为MyProduct的开发板为例讲解移植过程,假定MyProduct是MyProductVendor公司的开发板…

区间概率预测python|QR-CNN-BiLSTM+KDE分位数-卷积-双向长短期记忆神经网络-时间序列区间概率预测+核密度估计

区间预测python|QR-CNN-BiLSTMKDE分位数-卷积-双向长短期记忆神经网络-核密度估计-回归时间序列区间预测 模型输出展示: (图中是只设置了20次迭代的预测结果,宽度较宽,可自行修改迭代参数,获取更窄的预测区间) 注&am…

基于java实现的弹幕视频网站

开发语言:Java 框架:ssm 技术:JSP JDK版本:JDK1.8 服务器:tomcat7 数据库:mysql 5.7(一定要5.7版本) 数据库工具:Navicat11 开发软件:eclipse/myeclip…

mongoDB 优化(2)索引

执行计划 语法: db.collection_xxx_t.find({"param":"xxxxxxx"}).explain(executionStats) 感觉这篇文章写得很好,可以参考 MongoDB——索引(单索引,复合索引,索引创建、使用)_mongo …

【办公类-48-01】20240404每月电子屏台账汇总成docx(问卷星xlsx导入docx,每页20条)

作品展示——docx台账汇总,每页20条 背景需求: 近期上级要求“一屏一码”,幼儿园每个电子屏使用后都要进行开机、关机的记录。安全主任分配工作后,每个园区的每个电子屏都有专人负责登记。 为了便于每月末的台账提交(…

使用Java拓展本地开源大模型的网络搜索问答能力

背景 开源大模型通常不具备最新语料的问答能力。因此需要外部插件的拓展,目前主流的langChain框架已经集成了网络搜索的能力。但是作为一个倔强的Java程序员,还是想要用Java去实现。 注册SerpAPI Serpapi 提供了多种搜索引擎的搜索API接口。 访问 Ser…