CSS3 转换(Transform)

简介:

转换 transform

能够对元素进行移动、缩放、转动、拉长或拉伸


在CSS中,允许元素实现 2D 和 3D的转换效果,主要包含 :旋转,缩放,移动,倾斜        

2D :元素只能在X轴和Y轴平面上发生变化       

3D :元素还可以在 Z轴上发生变化


取值:

none:无转换

2D Transform Functions:

matrix():

以一个含六值的(a,b,c,d,e,f)变换矩阵的形式指定一个2D变换,相当于直接应用一个[a,b,c,d,e,f]变换矩阵

translate():

指定对象的2D translation(2D平移)。第一个参数对应X轴,第二个参数对应Y轴。如果第二个参数未提供,则默认值为0

translatex():

指定对象X轴(水平方向)的平移

translatey():

指定对象Y轴(垂直方向)的平移

rotate():

指定对象的2D rotation(2D旋转),需先有 <' transform-origin '> 属性的定义

scale():

指定对象的2D scale(2D缩放)。第一个参数对应X轴,第二个参数对应Y轴。如果第二个参数未提供,则默认取第一个参数的值

scalex():

指定对象X轴的(水平方向)缩放

scaley():

指定对象Y轴的(垂直方向)缩放

skew():

指定对象skew transformation(斜切扭曲)。第一个参数对应X轴,第二个参数对应Y轴。如果第二个参数未提供,则默认值为0

skewx():

指定对象X轴的(水平方向)扭曲

skewy():

指定对象Y轴的(垂直方向)扭曲

3D Transform Functions:

matrix3d():

以一个4x4矩阵的形式指定一个3D变换

translate3d():

指定对象的3D位移。第1个参数对应X轴,第2个参数对应Y轴,第3个参数对应Z轴,参数不允许省略

translatez():

指定对象Z轴的平移

rotate3d():

指定对象的3D旋转角度,其中前3个参数分别表示旋转的方向x,y,z,第4个参数表示旋转的角度,参数不允许省略

rotatex():

指定对象在x轴上的旋转角度

rotatey():

指定对象在y轴上的旋转角度

rotatez():

指定对象在z轴上的旋转角度

scale3d():

指定对象的3D缩放。第1个参数对应X轴,第2个参数对应Y轴,第3个参数对应Z轴,参数不允许省略

scalez():

指定对象的z轴缩放

perspective():

指定透视距离


1、2D转换

    使元素在x轴 和 y轴上所进行的转换效果可以称之为2D转换,包括:位移、缩放、旋转、倾斜


1-1、位移 translate()

    让元素产生一个位置的移动变化效果

函数:translate(一个值) -->只在x轴位移距离

          translate(值1,值2) --> 在x轴和y轴的位移距离

取值:数值 | 百分比,可以取负值

           x为正,则向右移动; x为负,则向左移动。

           y为正,则向下移动; y为负,则向上移动。


代码示例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<!doctype html>
< html >
  < head >
   < meta  charset = "UTF-8" >
   < title >位移</ title >
   < style >
     div{
       width:100px;
       height:100px;
       /*绝对定位*/
       position:absolute;
       top:0;
       left:0;
     }
     #d1{
       border:1px dotted #333;
     }
     #d2{
       border:1px solid #f00;
       background-color:#ddd;
       opacity:0.5;
       /*位移*/
       -webkit-transform:translate(50px,50px);
             -moz-transform:translate(50px,50px);
             -ms-transform:translate(50px,50px);
             transform:translate(50px,50px);
     }
   </ style >
  </ head >
  < body >
   < div  id = "d1" ></ div >
   < div  id = "d2" ></ div >
  </ body >
</ html >

wKioL1g1X2CRhOCeAAAE3Bu7CuI980.png


1-2、缩放  scale()

      改变元素的大小称之为 缩放

函数:scale(), scale(x), scale(x,y)

         注意:如果只给一个值,那么,第二个默认与第一个值相等

取值:默认值为1

          缩小:0到1之间的数值

          放大:大于1的数值


代码示例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<!doctype html>
< html >
  < head >
   < meta  charset = "UTF-8" >
   < title >位移</ title >
   < style >
     div{
       width:200px;
       height:200px;
       /*绝对定位*/
       position:absolute;
       top:300px;
       left:400px;
     }
     #d1{
       border:1px dotted #333;
     }
     #d2{
       border:1px solid #f00;
       background-color:#ddd;
       opacity:0.5;
       /*缩放*/
       -webkit-transform:scaleX(1.5);
             -moz-transform:scaleX(1.5);
             -ms-transform:scaleX(1.5);
             transform:scaleX(1.5);
     }
   </ style >
  </ head >
  < body >
   < div  id = "d1" >原始元素</ div >
   < div  id = "d2" >缩放元素</ div >
  </ body >
</ html >

wKioL1g1YkiA_IELAAAPatS2CTE470.png

1-3、旋转   rotate( )

    使元素围绕着一个点(转换原点)实现角度的变化 称之为 旋转

函数:rotate( ndeg )

            注意:需先指定旋转原点 <transform-origin>

取值:n取值为正,按顺时针旋转; n取值为负,按逆时针旋转


不指定旋转原点,即按元素中心旋转:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<!doctype html>
< html >
  < head >
   < meta  charset = "UTF-8" >
   < title >位移</ title >
   < style >
     div{
       width:200px;
       height:200px;
       /*绝对定位*/
       position:absolute;
       top:300px;
       left:400px;
     }
     #d1{
       border:1px dotted #333;
     }
     #d2{
       border:1px solid #f00;
       background-color:#ddd;
       opacity:0.5;
       /*位移*/
       -webkit-transform:rotate(45deg);
       -moz-transform:rotate(45deg);
       -ms-transform:rotate(45deg);
       transform:rotate(45deg);
     }
   </ style >
  </ head >
  < body >
   < div  id = "d1" >原始元素</ div >
   < div  id = "d2" >旋转元素</ div >
  </ body >
</ html >

wKioL1g2SwCDB7vcAAAYCW3gsbs133.png

也可改变默认转换原点:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<style>
   div{
     width : 200px ;
     height : 200px ;
     /*绝对定位*/
     position : absolute ;
     top : 300px ;
     left : 400px ;
   }
   #d 1 {
     border : 1px  dotted  #333 ;
   }
   #d 2 {
     border : 1px  solid  #f00 ;
     background-color : #ddd ;
     opacity: 0.5 ;
     /*更改转换原点*/
     -webkit-transform-origin: 0px  0px ;
     -moz-transform-origin: 0px  0px ;
     -ms-transform-origin: 0px  0px ;
     /*位移*/
     -webkit-transform:rotate( 45 deg);
     -moz-transform:rotate( 45 deg);
     -ms-transform:rotate( 45 deg);
     transform:rotate( 45 deg);
   }
</style>

wKioL1g2S8OgH_rGAAAXjZ_V1K4451.png

1-4、倾斜  skew( )

    能够改变元素的形状,以原点位置,让元素围绕着 x轴 或 y轴 按照一定的角度倾斜

函数: skew( x,y) , skew( x ) <==> skewX( ndeg ) , skewY( ndeg )

取值:角度


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
<!doctype html>
< html >
  < head >
   < meta  charset = "UTF-8" >
   < title >位移</ title >
   < style >
     div{
       width:200px;
       height:200px;
       /*绝对定位*/
       position:absolute;
       top:300px;
       left:400px;
     }
     #d1{
       border:1px dotted #333;
     }
     #d2{
       border:1px solid #f00;
       background-color:#ddd;
       opacity:0.5;
       /*向x轴倾斜30deg*/
       -webkit-transform:skew(30deg);
       -moz-transform:skew(30deg);
       -ms-transform:skew(30deg);
       transform:skew(30deg);
 
     }
   </ style >
  </ head >
  < body >
   < div  id = "d1" >原始元素</ div >
   < div  id = "d2" >倾斜元素</ div >
  </ body >
</ html >

wKioL1g2TrPTC9cxAAAf6uxLdSE439.png

2、3D转换

     在 x轴 和 y轴的基础上,增加对 z轴(空间轴)的转换效果


2-1、perspective 属性

    3D元素的透视效果,假定 人眼 到投射平面的距离

注意:(1)、使用 perspective属性,元素本身不会得到3D转换效果,其子元素才有3D转换效果

          (2)、浏览器兼容性,需带前缀 -webkit-perspective, -moz-perspective, 没有-ms-


2-2、3D转换--旋转

函数:rotateX( xdeg )   rotateY( ydeg )  rotateZ( zdeg )

          rotate3d(x,y,z,deg)   x,y,z 大于0,即表示该轴参与旋转

          rotate3d(1,1,1,45deg);  -->  rotateX(45deg)  rotateY(45deg)  rotateZ(45deg);

          rotate3d(1,0,0,45deg);  -->  rotateX(45deg);


代码示例如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<!doctype html>
< html >
  < head >
   < meta  charset = "UTF-8" >
   < title >Document</ title >
   < style >
     #parent{
       width:200px;
       height:200px;
       border:1px solid #ddd;
       margin:100px auto;
       /*1、perspective:定义 人眼 到投射平面的距离*/
       -webkit-perspective:1200px;
       -moz-perspective:1200px;
       perspective:1200px;
     }
     #son{
       width:100px;
       height:100px;
       margin:50px auto;
       background-color:#e4393c;
       /*3D转换-旋转*/
       -webkit-transform:rotate3d(1,1,1,45deg);
       -moz-transform:rotate3d(1,1,1,45deg);
       -ms-transform:rotate3d(1,1,1,45deg);
       transform:rotate3d(1,1,1,45deg);
     }
   </ style >
  </ head >
  < body >
   <!-- 父元素设置 perspective , 子元素实现3d转换 -->
   < div  id = "parent" >
     < div  id = "son" >3d转换元素</ div >
   </ div >
  </ body >
</ html >

wKioL1g2U9WADpWpAAAXZGdH4AA923.png

2-3、3D转换--位移

      在2D基础上,增加了对 z轴上的位移距离

函数:

        translateZ( zdeg )

        取值为正:向着人眼方向移动,物体越大

        取值为负:远离人眼方向,物体越小

       

        translate3d(x,y,z):左右,上下,前后


2-4、transform-style 属性

作用:如何在3D空间中,呈现被嵌套的元素

          规范了当前元素的子元素,呈现什么样的位置显示

取值

        flat:子元素将不保留其3D位置,呈D位置显示

        preserve-3d:子元素将保留其3D位置



转换的原点  transform-origin

默认位置:原点是在元素的中心位置

取值:数值 | 百分比 | 关键字

两个值:表示x轴 和 y轴的位置

三个值:表示x轴,y轴,z轴


兼容性:

wKiom1g1WwTwFOVuAABAfqDgTYI449.png

本文转自   frwupeng517   51CTO博客,原文链接:http://blog.51cto.com/dapengtalk/1875900

相关文章
|
7月前
CSS3 transform 文字切斜展开动画
CSS3 transform 文字切斜展开动画
54 0
|
7月前
CSS3 transform 立体导航栏
CSS3 transform 立体导航栏
29 0
|
4月前
|
JavaScript 前端开发
CSS3 transform 字体模糊问题
CSS3 transform 字体模糊问题
|
7月前
CSS3 transform
CSS3 transform
32 0
|
7月前
CSS3 transform: translateX || translateY || translateZ
CSS3 transform: translateX || translateY || translateZ
17 0
|
7月前
CSS3 transform 音乐盒子开盖效果
CSS3 transform 音乐盒子开盖效果
29 0
|
7月前
|
前端开发
css提示文字上下左右居中-transform加absolute
css提示文字上下左右居中-transform加absolute
|
8月前
|
前端开发
CSS中transform的使用
CSS中transform的使用
|
8月前
|
前端开发
Css中Transform的属性及使用
Css中Transform的属性及使用
103 0
|
8月前
|
前端开发
CSS transform实现按钮边框旋转效果
CSS transform实现按钮边框旋转效果