CSS3中transform2D变形详解

CSS3变形

在CSS3中,动画效果包括3个部分:

  • 变形(transform)
  • 过渡(transition)
  • 动画(animation)

在实际开发中,有时需要实现元素的各种变形效果,如平移,缩放,旋转,倾斜等。

在CSS3中,可以使用transform属性来实现元素的变形效果

语法:

transform:none | transform-function;

属性值

  • transform属性的默认值为none,表示不变形。
  • transform-function用于设置变形方法,可以是一个或多个变形方法列表。

使用transform属性实现元素的2D变形,2D变形主要有平移、缩放、旋转和倾斜4种变形效果。

transform属性一般配合以下方法来实现各种变形效果

方法说明
translate()平移
scale()缩放
skew()倾斜
rotate()旋转

注意:transform无法作用于行内元素

2D变形

translate()方法

概念:transform属性的translate()方法定义元素的平移效果

语法:

transform:translateX(x);  /*沿x轴方向平移*/
transform:translateY(y);  /*沿y轴方向平移*/
transform:translate(x,y); /*沿x轴和y轴同时平移*/

属性值

属性值说明
单个长度/百分比一个长度值或百分比,表示二维平移,与声明了x轴和y轴的平移一样(此时省略的第二个值默认为0)。
两个长度/百分比两个长度值或百分比表示在二维上分别按照指定x轴和y轴的值进行的平移。
三个长度/百分比三个长度或百分比,表示分别指定x轴,y轴,z轴的值进行三维平移。等同于translate3d()方法(3D平移)
none表示不应用平移效果

所有的CSS3变形中的2D变形采用的坐标系都是W3C坐标系。
在这里插入图片描述

实例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>平移</title>
		<style>
			*{
				padding:0;
				margin:0;
			}
			table{
				margin:100px;
			
			}
			td{
				width:300px;
				height:300px;
				text-align:center;
				border:1px solid rgba(255,105,180,0.6);
			}
			div{
				width:150px;
				height:150px;
				margin:0 auto;
				border:5px solid chartreuse;
				text-align:center;
				line-height:150px;
				font-size:20px;
			}
			
			.a:hover{
				/* 等同于translate(30px,0) */
				transform:translateX(30px); 
				
			}
			.b:hover{
				/* 等同于translate(0,30px) */
				transform:translateY(30px);
			}
			.c:hover{
				transform:translate(30px,30px);
			}
		</style>
	</head>
	<body>
		<table>
			<tr>
				<td>
					<div class="a">tranaslateX</div>
				</td>
				<td>
					<div class="b">translateY</div>
				</td>
				<td>
					<div class="c">translate</div>
				</td>
			</tr>
		</table>
	</body>
</html>

运行结果

请添加图片描述

scale()方法

概念:transform属性的scale()方法定义元素的缩放效果

缩放,指的是缩小放大

语法:

transform:scaleX(x); /*沿x轴方向缩放*/
transform:scaleY(y); /*沿y轴方向缩放*/
translate:scale(x,y); /*沿x轴和y轴同时缩放*/

属性值

  • x和y的属性值可以是正数、负数或小数

  • 正数表示基于指定的宽度和高度放大元素

  • 负数不表示缩小元素,而是表示先翻转元素(如文字被翻转),再缩放元素

  • 若第二个属性值省略,则默认表示等于第一个属性的值

  • 当值为1时将不进行任何处理。

  • 使用大于1的数值表示放大元素

  • 使用小于1的小数表示缩小元素

注意:scale仅适用于在二维平面上的切换。如果需要进行空间中的缩放,必须使用scale3D().

实例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>缩放</title>
		<style>
			*{
				padding:0;
				margin:0;
			}
			table{
				margin:100px;
			
			}
			td{
				width:300px;
				height:300px;
				text-align:center;
				border:1px solid rgba(255,105,180,0.6);
			}
			div{
				width:150px;
				height:150px;
				margin:0 auto;
				border:5px solid chartreuse;
				text-align:center;
				line-height:150px;
				font-size:20px;
			}
			.a:hover{
				/* 表示元素在x轴方向放大为原来的1.5倍 */
				transform:scaleX(1.5); 
				
			}
			.b:hover{
				/* 表示元素在y轴方向放大为原来的1.2倍 */
				transform:scale(1.2);
			}
			.c:hover{
				/* 表示元素在x轴和y轴两个方向同时放大,x轴方向缩小为原来的0.6陪,y轴方向 放大为原来的1.5倍*/
				transform:scale(0.8,1.2);
			}
			</style>
	</head>
	<body>
		<table>
			<tr>
				<td>
					<div class="a">scaleX</div>
				</td>
				<td>
					<div class="b">scaleY</div>
				</td>
				<td>
					<div class="c">scale</div>
				</td>
			</tr>
		</table>
	</body>
</html>

运行结果

请添加图片描述

rotate()方法

概念:transform属性的rotate()方法定义元素的旋转效果

语法:

transform:rotate(angle);

参数说明

  • 参数angle仅只有一个,该参数表示元素相对于中心原点旋转的度数,单位为deg
  • 若度数为正时,则按照顺时针旋转
  • 若度数为负时,则按照逆时针旋转

实例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>旋转</title>
		<style>
			*{
				padding:0;
				margin:0;
			}
			table{
				margin:100px;
			
			}
			td{
				width:300px;
				height:300px;
				text-align:center;
				border:1px solid rgba(255,105,180,0.6);
			}
			div{
				width:150px;
				height:150px;
				margin:0 auto;
				border:5px solid chartreuse;
				text-align:center;
				line-height:150px;
				font-size:20px;
			}
			.a:hover{
				/* 表示元素顺时针旋转45度 */
				transform:rotate(45deg); 
				
			}
			.b:hover{
				/* 表示元素逆时针旋转45度 */
				transform:rotate(-45deg);
			}
		</style>
	</head>
	<body>
		<table>
			<tr>
				<td>
					<div class="a">rotate(45deg)</div>
				</td>
				<td>
					<div class="b">rotate(-45deg)</div>
				</td>
			</tr>
		</table>
	</body>
</html>

运行结果
请添加图片描述

skew()方法

概念:skew()方法定义一个元素在二维平面上的倾斜转换

语法:

transform:skewX(x); /*沿X轴方向倾斜*/
transform:skewY(y); /*沿Y轴方向倾斜*/
transform:skew(x,y);/*沿x轴和y轴同时倾斜*/

参数说明

  • 参数x表示在x轴方向的倾斜度数,单位为deg。如果度数为正,则表示元素沿x轴方向逆时针倾斜;如果度数为负,则表示元素沿x轴方向顺时针倾斜。
  • 参数y表示在y轴方向的倾斜度数,单位为deg。如果度数为正,则表示元素沿y轴方向逆时针倾斜;如果度数为负,则表示元素沿y轴方向顺时针倾斜。
  • 若省略第二个参数,则取默认值0。

实例:

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>倾斜</title>
		<style>
			*{
				padding:0;
				margin:0;
			}
			table{
				margin:100px;
			
			}
			td{
				width:300px;
				height:300px;
				text-align:center;
				border:1px solid rgba(255,105,180,0.6);
			}
			div{
				width:150px;
				height:150px;
				margin:0 auto;
				border:5px solid chartreuse;
				text-align:center;
				line-height:150px;
				font-size:20px;
			}
			.a:hover{
				transform:skewX(30deg); 
				
			}
			.b:hover{
				transform:skewX(-30deg);
			}
			.c:hover{
				transform:skewY(30deg);
			}
			.d:hover{
				transform:skewY(-30deg);
			}
			.e:hover{
				transform:skew(20deg,30deg);
			}
		</style>
	</head>
	<body>
		<table>
			<tr>
				<td>
					<div class="a">skewX(30deg)</div>
				</td>
				<td>
					<div class="b">shewX(-30deg)</div>
				</td>
				<td>
					<div class="c">skewY(30deg)</div>
				</td>
				<td>
					<div class="d">skewY(-30deg)</div>
				</td>
				<td>
					<div class="e">skew(20deg,30deg)</div>
				</td>
			</tr>
		</table>
	</body>
</html>

运行结果
请添加图片描述

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

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

相关文章

APP备案流程

一、 APP备案是指 自2000年起&#xff0c;依据《互联网信息服务管理办法》(国务院令第292号)规定&#xff0c;电信主管部门对从事互联网信息服务的网站开展备案核准工作(即ICP备案)。经过20多年的持续优化完善&#xff0c;已形成“电信主管部门-网络接入服务提供者-互联网信息…

数据结构之排序二叉树

排序二叉树 基本概念 二叉树是一种从上往下的树状结构的数据结构&#xff0c;从根节点开始每个节点最多有两个子节点&#xff0c;左边的为左子节点&#xff0c;右边的为右子节点。 排序二叉树–有顺序&#xff0c;且没有重复元素的二叉树。顺序为&#xff1a; 对每个节点而…

APP流量变现——4项关键指标决定了APP混合变现的收入

APP流量变现的方式有很多种&#xff0c;主要的可以分为IAA&#xff08;广告&#xff09;收入、IAP&#xff08;用户应用内付费&#xff09;收入、订阅收入、单次买断收入。这里主要围绕当前流行的混合变现模式&#xff0c;即广告收入&#xff08;IAA&#xff09;应用内付费&…

探索 hasOwnProperty:处理对象属性的关键(上)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

spring cloud之集成sentinel

写在前面 源码 。 本文一起看下spring cloud的sentinel组件的使用。 1&#xff1a;准备 1.1&#xff1a;理论 对于一个系统来说&#xff0c;最重要的就是高可用&#xff0c;那么如何实现高可用呢&#xff1f;你可能会说&#xff0c;集群部署不就可以了&#xff0c;但事实并…

window11后台服务优化记录

这里:\WINDOWS\xxx\svchost.exe -k netsvcs -p 信号聚合器服务&#xff0c;用于根据时间、网络、地理位置、蓝牙和 CDF 因素评估信号。支持的功能包括设备解锁、动态锁定和动态 MDM 策略 参考&#xff1a; 优化参考v1

数字化发展助力青少年阅读回归“慢节奏”

近日&#xff0c;《2024年学前及中小学生寒假分年级阅读推荐书目》发布&#xff0c;正尝试引领青少年阅读在短视频时代回归“慢节奏”。该推荐书目针对每个学龄孩子的学习特点、认知特点、心理特点进行推荐&#xff0c;旨在培养孩子的深度思考能力。 在数字化时代&#xff0c;…

Docker的介绍及安装基本操作命令

前言 Docker 是一个开源的应用容器引擎&#xff0c;基于 Go 语言 并遵从 Apache2.0 协议开源。 Docker 可以让开发者打包他们的应用以及依赖包到一个轻量级、可移植的容器中&#xff0c;然后发布到任何流行的 Linux 机器上&#xff0c;也可以实现虚拟化。 容器是完全使用沙箱…

K8S 存储卷

意义&#xff1a;存储卷----数据卷 容器内的目录和宿主机的目录进行挂载 容器在系统上的生命周期是短暂的&#xff0c;delete,k8s用控制器创建的pod&#xff0c;delete相当于重启&#xff0c;容器的状态也会回复到初始状态 一旦回到初始状态&#xff0c;所有的后天编辑的文件…

区间预测 | Matlab实现CNN-BiLSTM-KDE的卷积双向长短期神经网络结合核密度估计多变量时序区间预测

区间预测 | Matlab实现CNN-BiLSTM-KDE的卷积双向长短期神经网络结合核密度估计多变量时序区间预测 目录 区间预测 | Matlab实现CNN-BiLSTM-KDE的卷积双向长短期神经网络结合核密度估计多变量时序区间预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.CNN-BiLSTM-KDE多…

显示器新赛道Type-C接口

如果把主机比作大脑&#xff0c;那显示器就是眼睛&#xff0c;没有眼睛&#xff0c;大脑再强大也发挥不出效果&#xff0c;所以显示器作为电脑最重要的输出设备&#xff0c;有着举足轻重的地位&#xff0c;可以说在生活中处处都有显示器的影子。其实显示器的历史也是科技发展史…

谈谈Spring Bean

一、IoC 容器 IoC 容器是 Spring 的核心&#xff0c;Spring 通过 IoC 容器来管理对象的实例化和初始化&#xff08;这些对象就是 Spring Bean&#xff09;&#xff0c;以及对象从创建到销毁的整个生命周期。也就是管理对象和依赖&#xff0c;以及依赖的注入等等。 Spring 提供…

GPT 商店强势来袭,人人都要有自己的 GPTs

作者&#xff1a;苍何&#xff0c;前大厂高级 Java 工程师&#xff0c;阿里云专家博主&#xff0c;CSDN 2023 年 实力新星&#xff0c;土木转码&#xff0c;现任部门技术 leader&#xff0c;专注于互联网技术分享&#xff0c;职场经验分享。 &#x1f525;热门文章推荐&#xf…

AlexNet论文翻译与精读

1:该论文解决了什么问题&#xff1f; 图像分类问题 2&#xff1a;该论文的创新点&#xff1f; 1:使用了大的深的卷积神经网络进行图像分类&#xff1b; 2:采用了两块GPU进行分布式训练&#xff1b; 3:采用了Relu进行训练加速&#xff1b; 4:采用局部归一化提高模型泛化能…

DB2除法的小数位问题(四舍五入问题)以及其他常用的函数

DB2除法的小数位问题&#xff08;四舍五入问题&#xff09;以及其他常用的函数 1. DB2取第一条数据2. DB2 中指定值排序2.1 使用case when2.2 使用decode函数 3. 拼接函数4. 强制转换类型——cast函数5. DB2除法的小数位问题&#xff08;四舍五入问题&#xff09;5.1 关于round…

03.C++内存管理笔记

1、C/C内存分布 ①内存分那么多区的原因&#xff1a;不同的数据&#xff0c;有不同的存储需求&#xff0c;各区域满足了不同的需求。 ②存放&#xff1a; 临时变量等临时用的变量&#xff1a;栈区&#xff1b; 动态申请的变量&#xff1a;堆区&#xff1b; 全局变量和静态变…

计算机图形学作业:四阶Bezier曲线、三阶 B 样条曲线

3. 请给出四阶Bezier曲线的矩阵表示形式,并作图绘制出一段四阶Bezier 曲线,要求给出控制点的坐标。(共 20 分) 四阶Bezier曲线的矩阵表示形式为: P(t)=P0P1P2P3P41-46-4104-1212-4006-1260004-4000011ttt3t4 给出控制点为: P0(578,389),P1(1018,175),P2(1442,373),P3(1…

【JaveWeb教程】(20) MySQL数据库开发之 基本查询、条件查询、聚合函数、分组查询、排序查询、分页查询 详细代码示例讲解

目录 1. 数据库操作-DQL1.1 介绍1.2 语法1.3 基本查询1.4 条件查询1.5 聚合函数1.6 分组查询1.7 排序查询1.8 分页查询1.9 案例1.9.1 案例一1.9.2 案例二 在上次学习的内容中&#xff0c;我们讲解了&#xff1a; 使用DDL语句来操作数据库以及表结构&#xff08;数据库设计&…

构建labelstudio镜像的时候,报错node:18,如何解决

解决方案&#xff1a; vi Dockerfile # syntaxdocker/dockerfile:1.3 FROM --platformlinux/amd64 node:18.16-bullseye-slim AS frontend-builder18改成 18.16-bullseye-slim

CodeWave智能开发平台--03--目标:应用创建--09供应商详情页面下

摘要 本文是网易数帆CodeWave智能开发平台系列的第13篇&#xff0c;主要介绍了基于CodeWave平台文档的新手入门进行学习&#xff0c;实现一个完整的应用&#xff0c;本文主要完成09供应商详情页面下主营产品展示及权限管理 CodeWave智能开发平台的13次接触 CodeWave参考资源…