CSS3 transform2D转换平移旋转以及缩放

transform本质上是一系列变形函数,分别是translate位移,scale缩放,rotate旋转,skew扭曲 、

translate(x,y) 设置盒子位移
scale(x,y) 设置盒子缩放
rotate(deg) 设置盒子旋转
skew(x-angle,y-angle) 设置盒子斜切

translate位移

translate位移系列中用于2D的有:translate,translateX,translateY
translateX X轴平移,translateY Y轴平移
translate中有个值 一个表示X轴 一个表示Y轴 0便是不发生平移

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title></title>
		<style>
			div {
			    width: 100px;
			    height: 100px;
			    background-color: royalblue;
				transform:translate(120px,120px) /*X轴和Y轴均平移120px*/
			}
			div:hover {
			    width: 400px;
			    
		</style>
	</head>
	<body>
		<div></div>

	</body>
</html>

在这里插入图片描述

如果只写一个值那么只有X轴为位移 Y轴不发生改变 相当于 translateX(120px)

	transform:translate(120px) /*只有X轴平移120px*/

在这里插入图片描述

translate位移,有点类似于position:relative属性。都是改变相对与原来位置的距离;
设置绝对定位

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8" />
	<title></title>
	<style>
		div {
			position: absolute;
			top: 100px;
			left: 100px;
		    width: 100px;
		    height: 100px;
		    background-color: royalblue;
			/*transform:translateX(120px) ;*/
		}
	</style>
</head>
<body>
	<div></div>

</body>
</html>

在这里插入图片描述

然后添加 transform:translateX(100px);

在这里插入图片描述
该盒子相对与原来位置 在X轴右平移了

如果添加 transform:translateX(-100px);则相对于原来位置在X轴上向左平移100px
在这里插入图片描述

scale缩放

scale缩放系列中用于2D的有:scale,scaleX,scaleY
和平移一样scaleX表示X轴上的变化,scaleY表示Y轴上的变化
scale(X,Y)也有两个值 一个表示X轴 一个表示Y轴 同样也可以设置一个值 但和translate不同的是设置一个值表示X轴和Y轴都发生改变
默认值是1 表示不缩放 0表示完全缩小(看不见了) 2表示放大到原来的2倍
值小于1表示缩小 值大于1表示放大

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8" />
	<title></title>
	<style>
		div {
			position: absolute;
			top: 100px;
			left: 100px;
		    width: 100px;
		    height: 100px;
		    background-color: royalblue;
			transform:scale(2) ;
		}
	</style>
</head>
<body>
	<div></div>

</body>
</html>

在这里插入图片描述

如果只缩放X轴,可以使用scaleX(.5)等同于scale(.5, 1)。Y轴也是一样的
设值Y轴缩放X轴不缩放

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8" />
	<title></title>
	<style>
		div {
			position: absolute;
			top: 100px;
			left: 100px;
		    width: 100px;
		    height: 100px;
		    background-color: royalblue;
			transform:scale(1,.5) ;/*等同于scaleY(0.5)*/
		}
	</style>
</head>
<body>
	<div></div>

</body>
</html>

在这里插入图片描述

同过这我们可以想到如果放大X轴 缩小Y轴

transform:scale(2,.5) ;
在这里插入图片描述

其实scale是可以使用负数值得

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8" />
	<title></title>
	<style>
		.box{
			position: absolute;
			top: 100px;
			left: 100px;
		    width: 100px;
		    height: 100px;
		    background-color: royalblue;
		}
		div{position: absolute;
			top: 50px;
			left: 50px;
		    width: 50px;
		    height: 50px;
		   	background-color: red;
		  }
		
		    
	</style>
</head>
<body>
	<div class="box">
		<div>
			
		</div>
	</div>

</body>
</html>

没有添加缩放属性得时候
在这里插入图片描述

如果加上 transform:scale(-1,1) ;X轴设置了-1 Y轴设置1
在这里插入图片描述
原本 右边得红色小方块 变到了左边 这就相当于3D 下得X轴旋转180deg 产生了颠倒 把原本背对屏幕得一面 翻转到了面对屏幕

rotate旋转

rotate旋转系列中用于2D的有:rotate(rotateX , rotateY,rotateZ都是3D旋转)
只能设单值。正数表示顺时针旋转,负数表示逆时针旋转,说到旋转就需要说一下transform-origin

transform-origin用来设置旋转缩放等中心点坐标,

所有元素都有一个中心原点,默认2D中,元素的中心原点位于X轴和Y轴的50%处。
位移、缩放、旋转、倾斜都是可以通过 transform-origin用来设置旋转缩放等中心点坐标
transform-origin属性取值跟背景 位置background-position属性取值相似 都可以采用 关键字和像素值

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8" />
	<title></title>
	<style>
		div {
			position: absolute;
			top: 100px;
			left: 100px;
		    width: 100px;
		    height: 100px;
		    background-color: royalblue;
			transform:rotate(50deg); /*以原点为中心向右旋转50°*/
		}
	</style>
</head>
<body>
	<div></div>

</body>
</html>

没有设置 transform-origin 以元素得中心点为原点
在这里插入图片描述
设置 transform-origin:0px 0px;以元素得右上角为原点
在这里插入图片描述

平移旋转以及缩放这些变化都可以通过transition(过度) 以及animation(动画)属性产生动画效果在这里插入图片描述
效果代码:

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8" />
	<title></title>
	<style>
		div{
			position: absolute;
			top: 100px;
			left: 100px;
		    width: 100px;
		    height: 100px;
		    background-color: royalblue;
		   	transition: all 1s;
		}
		 div:hover{
		 	transform:rotate(360deg) scale(2);
		 }
	</style>
</head>
<body>
		<div>
		</div>
</body>
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值