css3中2d与3d转换详解

我与影子孤独终老i 提交于 2019-12-01 00:15:51

2012年9月,W3C组织发布了CSS3变形工作草案。CSS3变形允许CSS把元素转变为2D 或3D空间,这个草案包括了CSS3 2D变形和CSS3 3D变形。

CSS3变形是一些效果的集合,比如平移、旋转、缩放和倾斜效果,每个效果都被称作为变形函数(Transform Function),它们可以操控元素发生旋转、缩放、和平移等变化。这些效果在之前都需要依赖图片、Flash或JavaScript才能完成。而使用纯CSS来完成这些变形则无需加载这些额外的文件,再一次提升了你的开发效率,还提高了页面的执行效率。

2D变换:

css3的transform属性指一组转换函数
css3的2D transform包括translate(x,y)位移、rotate(angle)旋转、scale(x,y)缩放、skew(x-angle,y-angle)倾斜和matrix()。从而改变元素的位置、形状和大小。
只要含有两个参数的都可以分开写,如下:
移动
translateX(n) 沿着 X 轴移动元素。
translateY(n) 沿着 Y 轴移动元素。

缩放
scaleX(n) 改变元素的宽度。
scaleY(n) 改变元素的高度。

倾斜
skewX(angle) 沿着 X 轴方向倾斜。
skewY(angle) 沿着 Y 轴方向倾斜。

属性:
transform-origin:更改元素的中心点。默认为transform-origin:50% 50%;

实例:
位移

12345678910111213141516171819
   html:   <div class="box">	<div class="x">			</div></div>   css:   .box{	margin: 100px;	width: 100px;	height: 100px;	border: 1px solid gray;}.x{	width: 100%;	height: 100%;	background: orange;	transform:translate(50%,50%); }

效果:

旋转:
transform-origin:为默认值(可以不写)

1234567891011121314151617181920
   html:   <div class="box">	<div class="x">			</div></div>   css:   .box{	margin: 100px;	width: 100px;	height: 100px;	border: 1px solid gray;}.x{	width: 100%;	height: 100%;	background: orange;	transform:rotate(45deg); 	transform-origin:50% 50%;}

效果:

transform-origin:0 0;以左上角0 0 为中中心点

1234567891011121314151617181920
   html:   <div class="box">	<div class="x">			</div></div>   css:   .box{	margin: 100px;	width: 100px;	height: 100px;	border: 1px solid gray;}.x{	width: 100%;	height: 100%;	background: orange;	transform:rotate(45deg); 	transform-origin:0 0;}

效果:


注意:rotate的角度为正数顺时针旋转,为负数逆时针旋转。

缩放
以0,0为中心点,x轴缩放0.5倍,y轴缩放2倍

1234567891011121314151617181920
   html:   <div class="box">	<div class="x">			</div></div>   css:   .box{	margin: 100px;	width: 100px;	height: 100px;	border: 1px solid gray;}.x{	width: 100%;	height: 100%;	background: orange;	transform:scale(0.5,2); 	transform-origin:0 0;}

效果:

扭曲

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
   html:   <div class="box">	<div class="comm x">			</div></div><div class="box">	<div class="comm y">			</div></div><div class="box">	<div class="comm z">			</div></div><div class="box">	<div class="comm x1">			</div></div><div class="box">	<div class="comm y1">			</div></div>   css:   .box{	margin: 100px;	width: 100px;	height: 100px;	border: 1px solid gray;	float: left;}.comm{	width: 100%;	height: 100%;	background: orange;		}.x{	transform:skew(30deg,0deg);	transform-origin:50% 50%;}.y{	transform:skew(0deg,30deg);	transform-origin:50% 50%;}.z{	transform:skew(30deg,30deg);	transform-origin:50% 50%;}.x1{	transform:skew(30deg,0deg);	transform-origin:0% 0%;}.y1{	transform:skew(-30deg,0deg);	transform-origin:0% 0%;}

效果:


注意:
skew(30deg,0deg)角度为正数时逆时针旋转,角度为负数时,顺时针旋转。

3D变换

原文:大专栏  css3中2d与3d转换详解


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!