CSS学习17--CSS3 过渡、2D变形、3D变形、动画

CSS3 过渡、2D变形、3D变形、动画

  • 一、过渡
  • 二、2D变形 transform
    • 1.移动 translate
    • 2.缩放 scale
    • 3. 旋转 rotate
    • 4. 倾斜 skew
  • 三、3D变形
    • 1. rotateX()rotateY() rotateZ()
    • 2. 体会透视 perspective
    • 3. translateX() translateY() translateZ()
    • 4. 开门大吉例子
    • 5. backface-visibility
  • 四、动画
    • 例子:无缝滚动

一、过渡

为元素从一种样式变为另一种样式时添加效果。

transition: 过渡属性 花费时间 运动曲线 何时开始;
前两个值不可省略,运动曲线默认ease,合适开始默认0s立即开始可以省略。

注意:transition需要写在div里而不是hover里;多个属性设置不同时,用逗号隔开;需要描述所有属性变化时,过渡属性值为all。

<html>
	<head>
		<style>
			div {
				width: 200px;
				height: 200px;
				background-color: pink;
				transition: width 0.2s ease 0s,height 0.3s ease-in 1s;
				/* transition: all 0.6s ease 0s; */
			}
			div:hover {
				width: 300px;
				height: 300px;
			}
		</style>
	</head>
	<body>
	<div></div>
</html>

二、2D变形 transform

做元素的变形、位移、缩放,可以和transition结合使用。

1.移动 translate

用translate平移

transform: translate(x,y)

<html>
	<head>
		<style>
			div {
				width: 200px;
				height: 200px;
				background-color: pink;
				transition: all 0.5s;
			}
			div:active { /*鼠标点击没有松开鼠标,相当于点击*/
				transform: translate(100px,200px);
				transform: translate(50%,100%);
			}
		</style>
	</head>
	<body>
	<div></div>
</html>

注意:

  • 只移动一个坐标可以把另一个坐标设为0;

  • 也可以写成:translateX(只跟一个参数);translateY(只跟一个参数)。

  • translate移动的距离如果是%,则以自己的宽度为准,而不是父亲为准。

    <html>
    	<head>
    		<style>
    			div {
    				width: 200px;
    				height: 200px;
    				background-color: pink;
    				position: absolute; /*盒子居中对齐*/
    				left: 50%; /*以父级宽度为准*/
    				margin-left: -100px; /*需要计算*/
    				top: 50%;
    				transform: translate(-50%,-50%);
    			}
    		</style>
    	</head>
    	<body>
    	<div></div>
    </html>
    

2.缩放 scale

transform: scale(x,y)
x和y的值小于1为缩小倍数,大于1为放大倍数。

<html>
	<head>
		<style>
			div {
				width: 200px;
				height: 200px;
				background-color: pink;
			}
			div:hover {
				transform: scale(1.2,1.5);
			}
		</style>
	</head>
	<body>
	<div></div>
</html>

注意:

  • 如果只写一个参数,宽高都缩放!

  • 谁做动画,谁加过渡!

    <html>
    	<head>
    		<style>
    			div {
    				width: 100px;
    				height: 50px;
    				background-color: pink;
    				overflow: hidden;
    			}
    			div img {
    				transition: all 0.3s;
    			}
    			div:hover img {
    				transform: scale(1.2,1.5);
    			}
    		</style>
    	</head>
    	<body>
    	<div>
    		<img src="images/search.png" alt="">
    	</div>
    </html>
    

3. 旋转 rotate

transform: rotate(*deg)
正值是顺时针,负值是逆时针;比如90deg是顺时针旋转90度

<html>
	<head>
		<style>
			div {
				width: 100px;
				height: 50px;
				background-color: pink;
				overflow: hidden;
			}
			div img {
				transition: all 0.3s;
			}
			div:hover img {
				transform: rotate(90deg);
			}
		</style>
	</head>
	<body>
	<div>
		<img src="images/search.png" alt="">
	</div>
</html>

旋转中心点的设置:

	<html>
		<head>
			<style>
				div img {
					padding: 200px;
					transition: all 0.3s;
					transform-origin: bottom top;
				}
				div:hover img {
					transform: rotate(90deg);
				}
			</style>
		</head>
		<body>
		<div>
			<img src="images/search.png" alt="">
		</div>
	</html>

4. 倾斜 skew

transform: skew(x,y);

<html>
	<head>
		<style>
			div {
				font-size: 50px;
				font-weight: 700;
				transition: all 0.2s;
			}
			div:hover {
				transform: skew(20deg,0);
			}
		</style>
	</head>
	<body>
	<div>
		123
	</div>
</html>

三、3D变形

3D多了z轴,遵循左手法则。
在这里插入图片描述
在这里插入图片描述

1. rotateX()rotateY() rotateZ()

<html>
	<head>
		<style>
			div img {
				transition: all 0.2s;
			}
			div:hover img {
				transform: rotateX(180deg);
			}
		</style>
	</head>
	<body>
	<div>
		<img src="images/course.png" alt="">
	</div>
</html>

2. 体会透视 perspective

  • 透视原理:近大远小。
  • 浏览器透视:把近大远小的所有图像,透视在屏幕上。
  • perspective:视距,表示视点距离屏幕的长短。视点,用于模拟透视效果时人眼的位置

注:并非任何情况下需要透视效果,根据开发需要进行设置。
perspective一般作为一个属性,设置给父元素,作用于所有3D转换的子元素

<html>
	<head>
		<style>
			div {
				perspective: 1000px;
			}
			div img {
				transition: all 0.2s;
			}
			div:hover img {
				transform: rotateX(180deg);
			}
		</style>
	</head>
	<body>
	<div>
		<img src="images/course.png" alt="">
	</div>
</html>

3. translateX() translateY() translateZ()

Z轴是物体到屏幕的距离,透视是一种展示形式。

<html>
	<head>
		<style>
			div {
				margin: 200px;
				perspective: 1000px;
			}
			div img {
				transition: all 0.2s;
			}
			div:hover img {
				transform: translateZ(100px);
			}
		</style>
	</head>
	<body>
	<div>
		<img src="images/course.png" alt="">
	</div>
</html>

transform: translate3d(x,y,z);
z轴只能是px单位

<html>
	<head>
		<style>
			div {
				margin: 200px;
				perspective: 1000px;
			}
			div img {
				transition: all 0.2s;
			}
			div:hover img {
				transform: translate3d(100px,100px,100px);
			}
		</style>
	</head>
	<body>
	<div>
		<img src="images/course.png" alt="">
	</div>
</html>

4. 开门大吉例子

<html>
	<head>
		<style>
			div {
				width: 200px;
				height: 180px;
				margin: 200px;
				background: url(images/course.png);
				perspective: 1000px;
				position: relative;
			}
			span {
				display: block;
				width: 100px;
				height: 180px;
				background-color: pink;
				border: 1px solid black;
				transition: all 0.2s;
			}
			span.door-l {
				position: absolute;
				top: 0;
				left: 0;
				transform-origin: left;
			}
			span.door-r {
				position: absolute;
				top: 0;
				right: 0;
				transform-origin: right;
			}
			div:hover .door-l   {
				transform: rotateY(-130deg);
			}
			div:hover .door-r  {
				transform: rotateY(130deg);
			}
		</style>
	</head>
	<body>
	<div>
		<span class="door-l"></span>
		<span class="door-r"></span>
	</div>
</html>

在这里插入图片描述

5. backface-visibility

用于设置图片不正向对着屏幕时是否可见。
可以用来写翻转图片,先translateY(180deg),当backface-visibility:hidden可以实现翻转时显示背面图片。

四、动画

animation: 动画名称 动画时间 运动曲线 何时开始 播放次数 是否反方向;

动画名称是自定义的

<html>
	<head>
		<style>
			div {
				width: 200px;
				height: 180px;
				margin: 200px;
				background: url(images/course.png);
				/*animation: name duration timing-function delay iteration-count direction fill-mode;*/
				animation: go 2s ease 0s 2 reverse;
			}
			@keyframes go { /*定义动画*/
				from{
					transform: translate(0);
				}
				to{
					transform: translate(600px);
				}
			}
		</style>
	</head>
	<body>
	<div>
	</div>
</html>

例子:无缝滚动

<html>
	<head>
		<style>
			* {
				margin: 0;
				padding: 0;
			}
			ul {
				list-style: none;
			}
			nav {
				width: 1200px;
				height: 20px;
			}
			nav li {
				float: left;
			}
			nav ul {
				width: 200%; /*两倍!!!*/
				animation: moving 2s linear infinite;
			}
			div {
				width: 200px;
				height: 20px;
			}
			@keyframes moving { /*定义动画*/
				from{
					transform: translate(0);
				}
				to{
					transform: translate(-1000px);
				}
			}
			nav:hover ul { /*鼠标经过nav,里面的ul不做动画*/
				animation-play-state: paused ;
			}
		</style>
	</head>
	<body>
	<nav>
		<ul>
			<li><div style="background-color: red;"></div></li>
			<li><div style="background-color: orange;"></div></li>
			<li><div style="background-color: yellow;"></div></li>
			<li><div style="background-color: green;"></div></li>
			<li><div style="background-color: blue;"></div></li>
			<li><div style="background-color: purple;"></div></li>
			<li><div style="background-color: red;"></div></li>
			<li><div style="background-color: orange;"></div></li>
			<li><div style="background-color: yellow;"></div></li>
			<li><div style="background-color: green;"></div></li>
			<li><div style="background-color: blue;"></div></li>
			<li><div style="background-color: purple;"></div></li>
		</ul>
	</nav>
</html>

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

[数据集][目标检测]车油口挡板开关闭合检测数据集VOC+YOLO格式138张2类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;138 标注数量(xml文件个数)&#xff1a;138 标注数量(txt文件个数)&#xff1a;138 标注类别…

CleanMyMac X2024破解版mac电脑清理工具

今天&#xff0c;我要跟大家分享一个让我彻底告别电脑卡顿的秘密武器——CleanMyMac X。这不仅仅是一款普通的清理工具&#xff0c;它是你电脑的私人健身教练&#xff0c;让电脑焕发青春活力&#xff01; CleanMyMac直装官方版下载地址&#xff1a; http://wm.makeding.com/i…

【通用分割模型】SAM 2论文翻译

文章目录 摘要1 引言2 相关工作3 任务&#xff1a;可提示视觉分割4 模型5 数据5.1 数据引擎5.2 SA-V数据集 6 零样本实验6.1 视频任务6.1.1 提示视频分割6.1.2 半监督视频对象分割6.1.3 公平性评估 6.2 图像任务 7 与半监督VOS的最新技术的比较8 数据和模型消融8.1 数据消融8.2…

JavaSE篇之内部类和图书系统

1.内部类(类中类) 在Java中&#xff0c;将一个类定义在另一个类内部&#xff0c;前者称为内部类&#xff0c;后者称为外部类。 注意事项&#xff1a; 1. 1.静态内部类&#xff08;被static修饰的内部类&#xff09; 1.在静态内部类的方法中不能直接引用外部类的成员变量&…

手把手教你捏一个自己的Agent

01 前言 Modelscope AgentFabric是一个基于ModelScope-Agent的交互式智能体应用&#xff0c;用于方便地创建针对各种现实应用量身定制智能体&#xff0c;目前已经在生产级别落地。 AgentFabric围绕可插拔和可定制的LLM构建&#xff0c;并增强了指令执行、额外知识检索和利用…

Qt控制开发板的LED

Qt控制开发板的LED 使用开发板的IO接口进行控制是嵌入式中非常重要的一点&#xff0c;就像冯诺依曼原理说的一样&#xff0c;一个计算机最起码要有输入输出吧&#xff0c;我们有了信息的接收和处理&#xff0c;那我们就要有输出。 我们在开发板上一般都是使用开发板的GPIO接口…

Leetcode 旋转图像

解题思路&#xff1a; 转置矩阵&#xff1a;通过将矩阵的行列互换来实现转置操作。水平翻转矩阵&#xff1a;通过将每行的数据进行对称交换&#xff0c;从而完成90度旋转。 通过这两个步骤&#xff0c;矩阵就会顺时针旋转90度。 class Solution { public:void rotate(vector…

数仓建设:为什么我们的数据容易被业务方质疑?

目录 0 问题背景 1 问题产生的原因 2 问题解决方案 3 小结 数字化建设通关指南专栏原价99&#xff0c;现在活动价39.9&#xff0c;按照阶梯式增长&#xff0c;直到恢复原价 0 问题背景 “ 在数字化建设进程中&#xff0c;无论是处于数据产品的你&#xff0c;或是数据开发的…

【鸿蒙】HarmonyOS NEXT星河入门到实战8-自定义组件-组件通信

目录 1、模块化语法 1.1 模块化基本认知 1.2 默认导出和导入 1.2.1 在ets下新建tools目录 1.2.2 在tools下新建moduls.ets文件 1.2.3 index.ets 1.3 按需导出和导入 1.4 全部导入 2、自定义组件 -基础 2.1 自定义组件 - 基本使用 2.2 自定义组件 -通用样式 2.2.1 et…

重生奇迹MU 红龙剑士的风采 游戏玩家的记忆

在重生奇迹MU游戏中&#xff0c;剑士是一个老牌职业&#xff0c;而其中红龙剑士更是备受瞩目的角色。红龙剑士选手身着一身红色龙王装&#xff0c;仿佛已经沐浴了敌人的鲜血&#xff0c;是一个经验丰富的剑手。很多老玩家都信任剑士这个职业&#xff0c;并视其为忠实的伙伴&…

运行PaddleOCR报错:requests.exceptions.SSLError: HTTPSconnectionPool……

文章目录 问题描述解决方法 问题描述 在运行以下代码时报错&#xff1a; ocr PaddleOCR(lang"en")解决方法 打开cmd&#xff0c;输入以下命令&#xff0c;查找Python解释器所在路径。 找到 Lib\site-packages\paddleocr\ppocr\utils\network.py&#xff0c;将代码…

对于mapper层代码的理解

昨天在改需求的时候&#xff0c;改了一天&#xff0c;发现关于数据库映射那里出现了问题。 因为我对于后端的mapper层了解的并不深&#xff0c;所以导致我改了一天还没发现问题所在。当我好不容易发现了问题出在mapper层&#xff0c;结果我发现我不会改哈哈哈&#xff0c;还是…

错误: 编码GBK的不可映射字符的解决方法

之前我一直用的eclipse来编写java代码&#xff0c;从来没有出现过这个错误&#xff0c;但是转到VS中后我写个中文注释都没法写&#xff0c;写了就报错&#xff0c;于是开始探索原因 出现这种问题大概率你是在官网下载的JDK&#xff0c;默认是国际版的&#xff0c;他在编译时如果…

QGis二次开发 —— 1、Windows10搭建Vs2017-QGis环境(附Vs2017环境效果)(附:Qt助手加入QGis接口说明文档)

OSGeo4W简介 更高级的 QGIS 用户应该使用 OSGeo4W 包。此安装程序可以并行安装多个版本的 QGIS&#xff0c;并且还可以进行更高效的更新&#xff0c;因为每个新版本仅下载和安装更改的组件。      OSGeo4W 存储库包含许多来自 OSGeo 项目的软件。包括 QGIS 和所有依赖项&a…

【图像识别】摄像头捕捉运动到静止视频帧(免费源码分享)

【图像识别】摄像头捕捉运动到静止视频帧(免费源码分享) 1. 本文摘要 本文实现了一个OpenCV和PyQT5 结合的摄像头视频捕捉和运动检测线程&#xff0c;实现了一款界面软件用于功能演示。主要使用帧差法实现&#xff0c;摄像头捕捉运动到静止的图片&#xff0c;捕捉到的图片可用…

朗迪锋亮相2024年中国国际服务贸易交易会

9月12日至14日&#xff0c;2024中国国际服务贸易交易会&#xff08;以下简称“服贸会”&#xff09;在国家会议中心和首钢园区成功举办。本届服贸会由商务部和北京市人民政府共同主办&#xff0c;继续秉承“全球服务 互惠共享”的宗旨&#xff0c;与参展企业一同聚焦“共享智慧…

高性能编程:无锁队列----MsgQueue代码实践

目录 概述 代码结构 1. 头文件解析 (msgqueue.h) 2. 实现文件解析 (msgqueue.c) 核心功能解析 2.1 创建队列 (msgqueue_create) 2.2 放入消息 (msgqueue_put) 2.3 获取消息 (msgqueue_get) 2.4 交换队列 (__msgqueue_swap) 2.5 阻塞与非阻塞模式 2.6 销毁队列 (msgq…

解决mp框架无法更新null值的问题

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、解决方法 前言 在使用mp框架过程中可能会遇到需要将某个字段为null的情况 但是mp自带的方法例如update默认是不支持更新null值的 一、解决方法 主要是这两…

分析图形学示例报告

一、实验任务 二、主要功能模块 三、代码 //自定义坐标系模块 CDC* pDC GetDC();//获得设备上下文 CRect rect;//定义矩形 GetClientRect(&rect);//获得矩形客户去大小 pDC->SetMapMode(MM_ANISOTROPIC);//自定义坐标系 pDC->SetWindowExt(rect.Width()/4, rect.He…

windows server2012 配制nginx安装为服务的时候,直接跳要安装.net框架,用自动的安装,直接失败的解决。

1、上一个已成功在安装过程中的图&#xff1a; 2、之前安装过程中错误的图&#xff1a; 3、离线安装解决&#xff1a; 下载.net framework 3.5&#xff0c;然后解压后&#xff0c;选择指定备用源路径&#xff0c;然后选择.net安装包所在目录&#xff1a; 只要指定上面全路径就…