transform

向元素应用 2D 或 3D 转换。该属性允许我们对元素进行旋转、缩放、移动或倾斜。

兼容性: Internet Explorer 10、Firefox、Opera 支持 transform 属性。

Internet Explorer 9 支持替代的 -ms-transform 属性(仅适用于 2D 转换)。

Safari 和 Chrome 支持替代的 -webkit-transform 属性(3D 和 2D 转换)。

Opera 只支持 2D 转换。

兼容性写法: -ms-transform:rotate(20deg); /* IE 9 */

-webkit-transform:rotate(20deg); /* Safari and Chrome */

-moz-transform:rotate(20deg); /* firefox */

-o-transform:rotate(20deg);/* Opera */

语法:

//2d旋转

ransform :rotate(angle) | rotataX(angle) | rotateY(angle) | rotateZ(angle)

//3d旋转

transform :rotate(X,Y,z | angle)

//矩阵

transform: matrix(a,b,c,d,e,f)

//倾斜

skew(X,Y)

//缩放

scale(X,Y)

旋转:rotate(angle)

rotate(angle),通过指定的角度对元素进行2D旋转,正值时顺时针旋转,负值时将逆时针旋转。

transform:rotate(-20deg)

<div class="rotate">
<div><span>我不想旋转</span></div>
</div>
<style>
.rotate div{
width: 100px;
height: 100px;
line-height: 100px;
background: green;
color: #fff;
}
.rotate:hover div{
width: 100px;
height: 100px;
line-height: 100px;
background: green;
color: #fff;
-webkit-transform: rotate(-20deg);
-moz-transform: rotate(-20deg);
transform:rotate(-20deg);
margin-bottom:20px;
cursor: pointer;
transition: 0.5s ease-out;
}
.rotate span {
display:block;
-webkit-transform: rotate(20deg);
-moz-transform: rotate(20deg);
transform:rotate(20deg);
}
</style>

缩放:scale()

缩放scale()具有三种情况:scale(x,y)表示X、Y轴同时放缩(如果只给一个值,x、y轴同时缩放相同倍数,给2个不同得值则根据所给数值进行缩放);scaleX(x)仅向水平方向缩放(x轴);scaleY(y)仅向垂直方向缩放(y轴);但他们的缩放中心点是一样的,中心点就是元素中心的位置,缩放倍数小于1表示缩小X呗,大于1表示放大x倍。

transform:scale(0.8) /*缩小0.8倍*/

<div class="scale">
<div class="scale1"></div>
</div>
<style>
.scale{
width: 200px;
height: 200px;
border: 1px dashed #000;
}
.scale1{
width: 198px;
height: 198px;
background: #ffc0cb;
}
.scale1:hover{
transition: 0.2s;
transform: scale(0.8);
-webkit-transform: scale(0.8);
-moz-transform: scale(0.8);
opacity: 0.9;
cursor: pointer;
}
</style>

transform:scale(1.5,0.8) /*沿x轴放大1.5倍,沿y轴缩小0.8倍*/

<div class="scale">
<div class="scale2"></div>
</div>
<style>
.scale{
width: 200px;
height: 200px;
border: 1px dashed #000;
}
.scale2{
width: 198px;
height: 198px;
background: #ffc0cb;
}
.scale2:hover{
transition: 0.2s;
transform:scale(1.5,0.8);
-webkit-transform: scale(1.5,0.8);
-moz-transform: scale(1.5,0.8);
opacity: 0.9;
cursor: pointer;
}
</style>

transform:scaleX(1.5) /*沿x轴放大1.5倍*/

<div class="scale">
<div class="scale3"></div>
</div>
<style>
.scale{
width: 200px;
height: 200px;
border: 1px dashed #000;
}
.scale3{
width: 198px;
height: 198px;
background: #ffc0cb;
}
.scale3:hover{
transition: 0.2s;
transform: scaleX(3);
-webkit-transform: scaleX(3);
opacity: 0.9;
cursor: pointer;
}
</style>

位移:translate()

位移:translate()也具有三种情况:translate(x,y)水平方向和垂直方向同时移动(x轴y轴同时移动);translateX(x)仅水平方向移动(X轴移动);translateY(y)仅水平方向移动(X轴移动)

translate(20px,10px)

<div class="scale">
<div class="translate1">translate(20px,10px)</div>
</div>
<style>
.scale{
width: 200px;
height: 200px;
border: 1px dashed #000;
}
.translate1{
width: 200px;
height: 200px;
background: lime;
cursor: pointer;
}
.translate1:hover{ transform: translate(20px,10px);
-webkit-transform:translate(20px,10px);
background: #ffc0cb;
transition: 1s;
}
</style>

translateX(100px)

<div class="scale">
<div class="translate2">translateX(100px)</div>
</div>
<style>
.scale{
width: 200px;
height: 200px;
border: 1px dashed #000;
}
.scale2{
width: 198px;
height: 198px;
background: #ffc0cb;
}
.scale2:hover{
transition: 0.2s;
transform:scale(1.5,0.8);
-webkit-transform: scale(1.5,0.8);
-moz-transform: scale(1.5,0.8);
opacity: 0.9;
cursor: pointer;
}
</style>

translateY(100px)

<div class="scale">
<div class="translate3">translateY(100px)</div>
</div>
<style>
.scale{
width: 200px;
height: 200px;
border: 1px dashed #000;
}
.scale3{
width: 198px;
height: 198px;
background: #ffc0cb;
}
.scale3:hover{
transition: 0.2s;
transform: scaleX(3);
-webkit-transform: scaleX(3);
opacity: 0.9;
cursor: pointer;
}
</style>

扭曲/倾斜:skew()

同样,扭曲:skew()也具有三种情况:skew(x,y)水平方向和垂直方向同时发生扭曲变形(x轴y轴扭曲变形,第二个参数为可选参数,如果不填表示Y轴为0deg);skewX(x)仅水平方向发生扭曲(X轴扭曲),skewY(y)仅水平方向发生扭曲(X轴扭曲)

transform: skew(20deg,30deg)

<div class="skew">
<div>
<span>我是文字,我决定不被扭曲</span>
</div>
</div>
<style>
.skew{
width:200px;
height: 200px;
border: 1px dashed #000;
margin-left: 200px;
margin-top: 50px;
}
.skew div{
width:200px;
height: 200px;
background: orange;
transform: skew(20deg,30deg);
-webkit-transform: skew(20deg,30deg);
-moz-transform: skew(20deg,30deg);
-o-transform: skew(20deg,30deg);
-ms-transform: skew(20deg,30deg);
}
.skew span{
display: block;
transform: skew(-20deg,-30deg);
-webkit-transform: skew(-20deg,-30deg);
-moz-transform: skew(-20deg,-30deg);
-o-transform: skew(-20deg,-30deg);
-ms-transform: skew(-20deg,-30deg);
}
</style>

transform: skew(20deg)/*等价于:transform: skewX(20deg)*/

<div class="skew1">
<div>
<span>不填Y的参数,看效果</span>
</div>
</div>
<style>
.skew1{
width:200px;
height: 200px;
border: 1px dashed #000;
margin-left: 200px;
margin-top: 50px;
}
.skew1 div{
width:200px;
height: 200px;
background: orange;
transform: skew(20deg);
-webkit-transform: skew(20deg);
-moz-transform: skew(20deg);
-o-transform: skew(20deg);
-ms-transform: skew(20deg);
}
.skew1 span{
display: block;
transform: skew(-20deg);
-webkit-transform: skew(-20deg);
-moz-transform: skew(-20deg);
-o-transform: skew(-20deg);
-ms-transform: skew(-20deg);
}
</style>

transform: skewY(30deg)

<div class="skew2">
<div>
<span>Y轴扭曲</span>
</div>
</div>
<style>
.skew2{
width:200px;
height: 200px;
border: 1px dashed #000;
margin-left: 200px;
margin-top: 50px;
margin-bottom: 100px;
}
.skew2 div{
width:200px;
height: 200px;
background: orange;
transform: skewY(30deg);
-webkit-transform: skewY(30deg);
-moz-transform: skewY(30deg);
-o-transform: skewY(30deg);
-ms-transform: skewY(30deg);
}
.skew2 span{
display: block;
transform: skewY(-30deg);
-webkit-transform: skewY(-30deg);
-moz-transform: skewY(-30deg);
-o-transform: skewY(-30deg);
-ms-transform: skewY(-30deg);
}
</style>

矩阵:matrix(a,b,c,d,e,f)

transform:matrix(1,0,0,1,0,0)
/**********************/
/*矩阵:matrix(a,b,c,d,e,f)
*a:水平缩放 1为原始大小 应用:scale()
*b:纵向扭曲(拉伸) 0为不变 应用:skew()
*c:横向扭曲(拉伸) 0为不变
*d:垂直缩放 1为原始大小
*e:水平偏移量 0是初始位置 应用:translate()
*f:垂直偏移量 0是初始位置
*/
/**********************/


transform: matrix(0.8,0,0,0.8,10,10);
/*transform: matrix(水平缩小0.8倍,水平拉伸0,垂直拉伸0,垂直缩小0.8倍,水平偏移10px,垂直偏移10px)*/

<div class="matrix">
<div></div>
</div>
<style>
.matrix{
width:200px;
height:200px;
border: 1px dashed #000;
}
.matrix div{
width: 200px;
height: 200px;
background: red;
}
.matrix div:hover{
cursor: pointer;
background: #ffff00;
transform: matrix(0.8,0,0,0.8,10,10);
-webkit-transform: matrix(0.8,0,0,0.8,10,10);
-moz-transform:matrix(0.8,0,0,0.8,10,10);
-o-transform: matrix(0.8,0,0,0.8,10,10);
-ms-transform: matrix(0.8,0,0,0.8,10,10);
transition: 0.5s;
}
</style>

CSS3-transform 转换/变换的更多相关文章

  1. CSS3 Transform变形(2D转换)

    Transform:对元素进行变形:Transition:对元素某个属性或多个属性的变化,进行控制(时间等),类似flash的补间动画.但只有两个关键贞.开始,结束.Animation:对元素某个属性 ...

  2. CSS3 transform变换

    CSS3 transform变换 1.translate(x,y) 设置盒子位移2.scale(x,y) 设置盒子缩放3.rotate(deg) 设置盒子旋转4.skew(x-angle,y-angl ...

  3. 【CSS3】 理解CSS3 transform中的Matrix(矩阵)

    理解CSS3 transform中的Matrix(矩阵) by zhangxinxu from http://www.zhangxinxu.com 本文地址:http://www.zhangxinxu ...

  4. 理解CSS3 transform中的Matrix(矩阵)

    一.哥,我被你吓住了 打架的时候会被块头大的吓住,学习的时候会被奇怪名字吓住(如“拉普拉斯不等式”).这与情感化设计本质一致:界面设计好会让人觉得这个软件好用! 所以,当看到上面“Matrix(矩阵) ...

  5. css3 2d转换3d转换以及动画的知识点汇总

    css3 2d转换 2d转换的方法: 1.移动 translate(x, y) 可以改变元素的位置,x.y可为负值: 2.缩放 scale(x, y) 可以对元素进行水平和垂直方向的缩放,x.y的取值 ...

  6. 理解CSS3 transform中的Matrix(矩阵)——张鑫旭

    by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=2427 一.哥,我被你 ...

  7. CSS3 Transform变形理解与应用

    CSS3 Transform变形理解与应用 Transform:对元素进行变形:Transition:对元素某个属性或多个属性的变化,进行控制(时间等),类似flash的补间动画.但只有两个关键贞.开 ...

  8. css3 transform中的matrix矩阵

    CSS3中的矩阵CSS3中的矩阵指的是一个方法,书写为matrix()和matrix3d(),前者是元素2D平面的移动变换(transform),后者则是3D变换.2D变换矩阵为3*3, 如上面矩阵示 ...

  9. CSS3 transform对普通元素的N多渲染影响

    一.一入transform深似海 一个普普通通的元素,如果应用了CSS3 transform变换,即便这个transform属性值不会改变其任何表面的变化(如scale(1), translate(0 ...

  10. CSS3(transform/transition/animation) 基础 总结

    1.CSS3新增的样式(常用) //颜色透明表示rgba(0,0,0,.5) //圆角(定义角半径)border-radius: 5px 10px 15px 20px; //文字/盒子阴影text-s ...

随机推荐

  1. 【Swift 2.1】为 UIView 添加点击事件和点击效果

    前言 UIView 不像 UIButton 加了点击事件就会有点击效果,体验要差不少,这里分别通过自定义和扩展来实现类似 UIButton 的效果. 声明 欢迎转载,但请保留文章原始出处:) 博客园: ...

  2. 处理Xcode 警告

    除了代码中我们手动加入的 #Waring  标示 所产生的警告,我们都应该重视.下面是一些警告的处理. 1,方法过期,或 使用新的api  替换方案 multipartFormRequestWithM ...

  3. svn报错:“Previous operation has not finished; run 'cleanup' if it was interrupted“ 的解决方法

    今天改完代码提交时,提交接近完成但窗口还未关闭电脑蓝屏了.夏天来了,电脑比人还怕热啊~~~   心里咯噔一下,估计svn又会出一些莫名其妙的问题了. 果然,待电脑重启后开eclipse,文件还是新增状 ...

  4. ORACLE应用调优:请避免SQL做大量循环逻辑处理

    前阵子遇到一个案例:一个同事说以前一个运行很正常的包,突然间比以前慢了很多,执行时间非常长,晚上的作业调用这个包跑了几个小时也没有跑出数据.于是我在跟踪.优化过程中定位到包中一个存储过程的一段SQL, ...

  5. MYSQL多实例配置方法 mysqld_multi方法

    在实际的开发过程中,可能会需要在一台服务器上部署多个MYSQL实例,那建议使用MYSQL官方的解决方案 mysqld_multi 1.修改my.cnf 如一个定义两个实例的参考配置: [mysqld_ ...

  6. 关于一个sql的优化分析

    应用这边新上线了一个查询,正在跑,让我看下状态以及分析下能不能再快点. 如下sql: SELECT x.order_no , order_date+7/24 AS order_date, addres ...

  7. MongoDB学习笔记~大叔分享批量添加—批量更新—批量删除

    回到目录 说它是批量操作,就是说将集合对象一次提交到服务器,并对数据进行持久化,如果您的代码是一次一次的提交,那不算是批量操作!在之前的mongodb仓储中并没有对批量更新和批量删除进行实现,而今天在 ...

  8. 把Tomcat注册为windows服务

    配置环境变量 JAVA_HOME=D:\java CLASSPATH=.;%JAVA_HOME%\lib; PATH=%JAVA_HOME%\bin; 提示:一般jre默认在jdk目录下%JAVA_H ...

  9. Kafka简介

    Kafka简介 转载请注明出处:http://www.cnblogs.com/BYRans/ Apache Kafka发源于LinkedIn,于2011年成为Apache的孵化项目,随后于2012年成 ...

  10. CentOS配置Nginx+Tomcat7的多站点支持

    注:以下所有操作均在CentOS 6.5 x86_64位系统下完成. #准备工作# 在这之前需要先把Nginx和Tomcat安装好,具体见:<CentOS安装Nginx-1.6.2+安全配置&g ...