transform
属性向元素应用 2D
或 3D
转换。该属性允许我们对元素进行旋转、缩放、移动或倾斜。学会 transform
的使用,才能更好创造出更好的页面效果。
2D转换
平移 translate()
translate()
方法,根据左(X轴)和顶部(Y轴)位置给定的参数,从当前元素位置移动。
div { -ms-transform: translate(50px,100px); /* IE 9 */ -webkit-transform: translate(50px,100px); /* Safari and Chrome */ transform: translate(50px,100px); } 复制代码
旋转 rotate()
rotate()
方法,在一个给定度数顺时针旋转的元素。负值是允许的,这样是元素逆时针旋转。
div { -ms-transform: rotate(30deg); /* IE 9 */ -webkit-transform: rotate(30deg); /* Safari and Chrome */ transform: rotate(30deg); } 复制代码
缩放 scale()
scale()
方法,该元素增加或减少的大小,取决于宽度(X轴)和高度(Y轴)的参数
div { -ms-transform:scale(2,3); /* IE 9 */ -webkit-transform: scale(2,3); /* Safari */ transform: scale(2,3); /* 标准语法 */ } 复制代码
skew() 斜切
transform:skew( [,]);
包含两个参数值,分别表示X轴和Y轴倾斜的角度,如果第二个参数为空,则默认为0,参数为负表示向相反方向倾斜。
skewX(<angle>)
;表示只在X轴(水平方向)倾斜。
skewY(<angle>)
;表示只在Y轴(垂直方向)倾斜。
div { -ms-transform: skew(30deg,20deg); /* IE 9 */ -webkit-transform: skew(30deg,20deg); /* Safari and Chrome */ transform: skew(30deg,20deg); } 复制代码
matrix() 方法
定义一个变换矩阵,严格来讲,以上的几种方法都是 matrix()
函数的特殊情况。在2D变换中,函数的参数是六个值。
简单来讲,向量来描述空间中的任何一个对象,然后用矩阵来描述空间中的变换。而使某个对象发生运动的方法就是用代表运动的矩阵乘以代表对象的那个向量。也就是说,在线性空间选定基之后,向量刻画对象,矩阵刻画对象的运动,用矩阵与向量的乘法施加运动。
举个例子:
div { transform: matrix(a,b,c,d,e,f); } 复制代码
以上代码用矩阵表示就是:
元素的初始矩阵为 transform: matrix(1,0,0,1,0,0)
;也就是这个属性下元素没有任何变化。
在引入向量施加运动:
这样相乘得出两个式子:
x'=ax+cy+e; 复制代码
y'=bx+dy+f 复制代码
x'
和 y'
就是元素被施加变换后的位置坐标,从这个式子不难看出,如果我们想把 x'
增加100,只需要 e
增加100,那么元素就会右移 100px
;
div { transform: matrix(1,0,0,1,100,0); } 复制代码
再来看一个缩放的例子,假如我们想元素上每一点的x增加到原来的两倍,应该将x的系数变为2,即将a设为2,这样就可以做出水平方向上增大两倍的效果。
div { transform: matrix(2,0,0,1,0,0); } 复制代码
可以看到 matrix
不同的组合可以做出任何你想要的效果。
transform-origin 属性
transform-Origin
属性允许您更改转换元素的位置。
2D转换元素可以改变元素的X和Y轴。 3D转换元素,还可以更改元素的Z轴。
transform-origin: x-axis y-axis z-axis;
div{ -ms-transform: rotate(45deg); /* IE 9 */ -ms-transform-origin:20% 40%; /* IE 9 */ -webkit-transform: rotate(45deg); /* Safari and Chrome */ -webkit-transform-origin:20% 40%; /* Safari and Chrome */ transform: rotate(45deg); transform-origin:20% 40%; } 复制代码
3D 转换
学好3d首先要了解3d效果的坐标系:
3d变换的函数与2d类似,只是加上了3d,比如 translate
变为 translate3d
; translateZ
这表示3d变换中的z轴变换,这些用法和2d基本相同,不在重复,下面是一些3d中比较特殊的属性
属性的使用
transform-style:flat|preserve-3d;规定被嵌套元素如何在 3D 空间中显示(子元素是否保留3d位置)。
<div id="div1"> <div id="div2"> 3dtransform </div> </div> 复制代码
# div1{ height: 200px; width: 200px; margin: 100px; padding:10px; border: 1px solid black; } # div2{ margin:50px; border: 1px solid black; background-color: red; transform: rotateY(60deg); transform-style: preserve-3d; } 复制代码
perspective: number|none;规定 3D元素的透视效果(作用于父元素)。
#div1{ height: 150px; width: 150px; margin: 50px; padding:10px; border: 1px solid black; perspective:150; } #div2{ margin:50px; border: 1px solid black; background-color: yellow; transform: rotateX(45deg); } 复制代码
perspective-origin: x-axis y-axis;规定 3D 元素的底部位置。(作用于父元素,眼睛看元素的方向)
#div1{ height: 150px; width: 150px; margin: 50px; padding:10px; border: 1px solid black; perspective:150; perspective-origin: 10% 10%; } #div2{ margin:50px; border: 1px solid black; background-color: red; transform: rotateX(45deg); } 复制代码
backface-visibility:visible | hidden定义元素在不面对屏幕时是否可见。
-webkit-backface-visibility:hidden; 复制代码
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- WebGL 入门与实践 --- 坐标系变换 :基本变换原理与算法实现
- 图像变换函数
- foldl 和 foldr 的变换
- OpenGL 使用矩阵变换改变视图
- 详解 Winograd 变换矩阵生成原理
- OpenCV 离散傅里叶变换
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
The Java Language Specification, Java SE 7 Edition
James Gosling、Bill Joy、Guy L. Steele Jr.、Gilad Bracha、Alex Buckley / Addison-Wesley Professional / 2013-2-24 / USD 59.99
Written by the inventors of the technology, The Java(r) Language Specification, Java SE 7 Edition, is the definitive technical reference for the Java programming language. The book provides complete, ......一起来看看 《The Java Language Specification, Java SE 7 Edition》 这本书的介绍吧!