CSS3的变形有移动、旋转、缩放、扭曲四种,来看个例子先:
html:
<!DOCTYPE html> <head> <meta charset="utf-8" /> <title>变形</title> <link href="style.css" rel="stylesheet" /> </head> <body> <div class="normal">normal</div> <div class="normal translate">translate</div> <div class="normal rotate">rotate</div> <div class="normal scale">scale</div> <div class="normal skew">skew</div> </body>check the result
css:
.normal {
  width : 100px;
  height : 100px;
  background : red;
  margin-left : 100px;
}
.translate {
  transform : translate(100px, 0); /*chrome firefox opera ie*/
  -ms-transform : translate(100px, 0); /*ie*/
  -moz-transform : translate(100px, 0); /*firefox*/
  -webkit-transform : translate(100px, 0); /*chrome 360 sogou baidu safari opera*/
  -o-transform : translate(100px, 0); /*baidu*/
}
.rotate {
  transform : rotate(45deg); /*chrome firefox opera ie*/
  -ms-transform : rotate(45deg); /*ie*/
  -moz-transform : rotate(45deg); /*firefox*/
  -webkit-transform : rotate(45deg); /*chrome 360 sogou baidu safari opera*/
  -o-transform : rotate(45deg); /*baidu*/
}
.scale {
  transform : scale(2, 0.5); /*chrome firefox opera ie*/
  -ms-transform : scale(2, 0.5); /*ie*/
  -moz-transform : scale(2, 0.5); /*firefox*/
  -webkit-transform : scale(2, 0.5); /*chrome 360 sogou baidu safari opera*/
  -o-transform : scale(2, 0.5); /*baidu*/
}
.skew {
  transform : skew(45deg, 0deg); /*chrome firefox opera ie*/
  -ms-transform : skew(45deg, 0deg); /*ie*/
  -moz-transform : skew(45deg, 0deg); /*firefox*/
  -webkit-transform : skew(45deg, 0deg); /*chrome 360 sogou baidu safari opera*/
  -o-transform : skew(45deg, 0deg); /*baidu*/
}	
	
移动的话就是用translate,两个属性,x方向和y方向。同样有浏览器兼容性问题。旋转是rotate,只有一个参数就是度数。缩放是scale,两个参数,x方向的缩放因子和y方向的缩放因子。扭曲是skew,两个参数,x方向的扭曲角度和y方向的扭曲角度。
这里默认时所有的变形都是以中心点位变化原点,那么能不能改变变化原点呢?当然可以,我们试着改变一下,还是原来的变化,只是把变化原点改为左上角:
html:
<!DOCTYPE html> <head> <meta charset="utf-8" /> <title>变形</title> <link href="style.css" rel="stylesheet" /> </head> <body> <div class="normal">normal</div> <div class="normal translate">translate</div> <div class="normal rotate">rotate</div> <div class="normal scale">scale</div> <div class="normal skew">skew</div> </body>check the result
css:
.normal {
  width : 100px;
  height : 100px;
  background : red;
  margin-left : 100px;
  transform-origin : top left;
  -ms-transform-origin : top left;
  -moz-transform-origin : top left;
  -webkit-transform-origin : top left;
  -o-transform-origin : top left;
}
.translate {
  transform : translate(100px, 0); /*chrome firefox opera ie*/
  -ms-transform : translate(100px, 0); /*ie*/
  -moz-transform : translate(100px, 0); /*firefox*/
  -webkit-transform : translate(100px, 0); /*chrome 360 sogou baidu safari opera*/
  -o-transform : translate(100px, 0); /*baidu*/
}
.rotate {
  transform : rotate(45deg); /*chrome firefox opera ie*/
  -ms-transform : rotate(45deg); /*ie*/
  -moz-transform : rotate(45deg); /*firefox*/
  -webkit-transform : rotate(45deg); /*chrome 360 sogou baidu safari opera*/
  -o-transform : rotate(45deg); /*baidu*/
}
.scale {
  transform : scale(2, 0.5); /*chrome firefox opera ie*/
  -ms-transform : scale(2, 0.5); /*ie*/
  -moz-transform : scale(2, 0.5); /*firefox*/
  -webkit-transform : scale(2, 0.5); /*chrome 360 sogou baidu safari opera*/
  -o-transform : scale(2, 0.5); /*baidu*/
}
.skew {
  transform : skew(45deg, 0deg); /*chrome firefox opera ie*/
  -ms-transform : skew(45deg, 0deg); /*ie*/
  -moz-transform : skew(45deg, 0deg); /*firefox*/
  -webkit-transform : skew(45deg, 0deg); /*chrome 360 sogou baidu safari opera*/
  -o-transform : skew(45deg, 0deg); /*baidu*/
}	
	
大家可以对比看看效果,相信很快就能理解transform-origin的意思。
那么基于transform和之前学过的一些文字特效,我们可以做出一些有意思的效果,比如说镜像:
html:
<!DOCTYPE html> <head> <meta charset="utf-8" /> <title>变形</title> <link href="style.css" rel="stylesheet" /> </head> <body> <div class="mirror" title="mirror font">mirror font</div> </body>check the result
css:
@font-face {
    font-family: 'naughty_cartoonsregular';
    src: url('Naughty Cartoons-webfont.eot');
    src: url('Naughty Cartoons-webfont.eot?#iefix') format('embedded-opentype'),
         url('Naughty Cartoons-webfont.woff2') format('woff2'),
         url('Naughty Cartoons-webfont.woff') format('woff'),
         url('Naughty Cartoons-webfont.ttf') format('truetype'),
         url('Naughty Cartoons-webfont.svg#naughty_cartoonsregular') format('svg');
    font-weight: normal;
    font-style: normal;
}
.mirror {
  font-family : 'naughty_cartoonsregular';
  position : relative;
  color : red;
  opacity : 0.7;
}
.mirror:before {
  content : attr(title);
  position : absolute;
  top : 100%;
  transform : scale(1, -1); /*chrome firefox opera ie*/
  -ms-transform : scale(1, -1); /*ie*/
  -moz-transform : scale(1, -1); /*firefox*/
  -webkit-transform : scale(1, -1); /*chrome 360 sogou baidu safari opera*/
  -o-transform : scale(1, -1); /*baidu*/
}
.mirror:after {
  content : '';
  background : -moz-linear-gradient(top, rgba(255, 255, 255, 0), rgba(255, 255, 255, 1));
  background : -webkit-linear-gradient(top, rgba(255, 255, 255, 0), rgba(255, 255, 255, 1));
  background : -ms-linear-gradient(top, rgba(255, 255, 255, 0), rgba(255, 255, 255, 1));
  width : 100%;
  height : 100%;
  position : absolute;
  top : 100%;
  left : 0px;
}	
	
这个例子看懂了吗?我们设置scale的y因子为-1,这样就相当于镜像了,而为了实现渐变效果,我们用了一个白色透明度从1变为0的东西叠加到镜像上面,就形成了这种效果。这里可能大家最不理解的就是before和after了,这也是前端常用的一个技巧,大家可以打开chrome的Elements看看,会不会多出一个::before和::after呢?
补充一个before和after的简单例子:
html:
<!DOCTYPE html> <head> <meta charset="utf-8" /> <title>变形</title> <link href="style.css" rel="stylesheet" /> </head> <body> <div class="normal">normal</div> </body>check the result
css:
.normal:before {
  content : 'before';
  color : red;
}
.normal:after {
  content : 'after';
  color : blue;
}	
	
这个例子很简单吧,看看就懂了,我就不解释了!
 ,不要超过100元哦!
,不要超过100元哦!