You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
####### transform-style
首先认识一下transform-style,如果不改变transform-style的默认值,就无法再三维变换中观察到我们所做的变换。其值可以设为flat(默认)——子元素将不保留其 3D 位置;或者preserve-3d——子元素将保留其 3D 位置。
perspective属性需要和perspective-origin 属性搭配使用,perspective-origin 属性定义 3D 元素所基于的 X 轴和 Y 轴。该属性允许您改变 3D 元素的底部位置。当为元素定义 perspective-origin 属性时,其子元素会获得透视效果,而不是元素本身。
5、2D变换
CSS3 的 transform 属性允许我们移动、旋转、缩放和倾斜元素,可同时对一个元素进行变形的多种属性操作,在多个变形函数使用时需要用空格隔开。。它的基本语法是:
先上一张图,系统地介绍一下transform属性的可选值:
旋转
在上面的所有这些函数中,rotate可能就是最简单的函数了,它会让元素围绕一个固定的点进行旋转,允许负值,元素将逆时针旋转。
文档一旦经过变换,看起来就像把position:relative应用到它上面一样,也就是说该元素相当于两个元素一样。原始的、转换前的元素会保持在文档流中的位置,所以后续的所有元素都会受到它以及它的margin和padding的影响。经过变换后的元素并不影响页面的布局,但它会位于页面剩余部分之上的一个新层中,意味着这个新的元素可以覆盖后续的元素。
transform-origin
该属性用来指定元素的中心点位置,默认变形原点在元素中心,即X轴和Y轴的50%处。
平移
控制平移的函数是 translate(),该函数将元素从它的默认位置进行平移。在 2D 变换模块它包含了下列两个独立函数:
此属性可以实现垂直水平居中:
倾斜
通过 skew() 方法,元素翻转给定的角度,根据给定的水平线(X 轴)和垂直线(Y 轴)参数:
skew() 函数使用的是角度值,也可以使用负值,而函数的简写形式可以使用一个或两个值。如果使用一个值,第二个值 skewY 会默认为 0。
如果是沿着 x轴 倾斜,那么就是元素的水平边依然保持水平,而竖直边则按照度数倾斜旋转;如果是沿着 y轴 倾斜,那么就是元素的竖直边依然保持竖直状态,但是水平边则按照度数倾斜旋转。
缩放
通过 scale() 方法,元素的尺寸会增加或减少,根据给定的宽度(X 轴)和高度(Y 轴)参数:
scale()还可以使用负值,使用负值的效果就是垂直的翻转元素,创建原来元素的映射。
多重变换
把transform属性中用空格隔开列出多个函数,就可以在一个单独的元素上应用多重变换。
使用矩阵变换元素
matrix() 方法把所有 2D 转换方法组合在一起。matrix() 方法需要六个参数,包含数学函数,允许您:旋转、缩放、移动以及倾斜元素。
更深入具体介绍matrix()方法可以 点击这里
使用webkit反射
“Web2.0”的一种常见的设计手法就是反射的图片——即让一张图片看上去似乎在光滑的表面上出现了反射。
CSS3中的-webkit-box-reflect即可实现这一效果,语法为:
更深入具体介绍-webkit-box-reflect()方法可以 点击这里
也有另一种参数写法:
例子:
注意:反射和其他变换效果行为是一样的:它并没有占据页面布局流的位置,而是位于主体内容之上的层,因此会覆盖在后面的元素上。
6、3D变换
CSS3 3D并非我们所想的3D效果,其实CSS3 3D就是纯粹利用计算的方法,基于浏览器的高效能,在2D的空间上制作一个3D的圆形,就像我们在一张纸上画一个立方体之类的,因为3D效果借助了浏览器来运算,所以自然而然地非常耗性能,往往只要有过多的形状转换来为3D呈现,所以如果有过多的3D呈现的话,就会发现电脑会开始疯狂地运转,所以3D效果还是要慎用的。
####### transform-style
首先认识一下transform-style,如果不改变transform-style的默认值,就无法再三维变换中观察到我们所做的变换。其值可以设为flat(默认)——子元素将不保留其 3D 位置;或者preserve-3d——子元素将保留其 3D 位置。
transform-style指定的值会影响元素的子元素,而不是元素本身。本质上,它的作用就是设置子元素究竟是在分离的平面中显示还是全部被收缩到一起。
但是如果一个元素的overflow值为hidden,它的子元素就无法以3d显示,所以元素看上去就像是transform-style值被设置为flat一样。
变换函数
绕轴旋转
2D里面旋转只有一条旋转所围绕的轴,所以rotate只需要一个单独的值。但是3D旋转中,有3条轴可以围绕旋转,所以就需要3个属性进行控制。
rotate3d()可详见 这里
沿轴平移
在2D中我们已经试过将元素沿着X轴和Y轴移动——translateX和translateY函数,三维中就是添加一个translateZ函数:
现在有一个新的简写函数translate3d,能够设置全部的三个值:
缩放
与二维的scale函数一样,三维里增加了scaleZ子函数:
同样地,新的简写函数scale3d能够设置三个值.。
变换矩阵
2D变换矩阵比较难懂的就是matrix函数了,它允许设置六个值(基于网络状排列)和一些三角几何计算去应用复杂的变换。
对应地3d中存在matrix3d函数,可以设置16个值:
这个函数非常强大——也非常复杂。。。
透视
CSS 3D提供了一个全新的函数——perspective。perspective 属性定义 3D 元素距视图的距离,以像素计。该属性允许您改变 3D 元素查看 3D 元素的视图。
当为元素定义 perspective 属性时,其子元素会获得透视效果,而不是元素本身。
perspective属性需要和perspective-origin 属性搭配使用,perspective-origin 属性定义 3D 元素所基于的 X 轴和 Y 轴。该属性允许您改变 3D 元素的底部位置。当为元素定义 perspective-origin 属性时,其子元素会获得透视效果,而不是元素本身。
显示或隐藏背面
元素旋转的时候,一旦元素的正面远离我们的时候,我们会看到元素的背面。默认情况下,元素似乎就像透明一样,使所以实际上我们看到正面所显示内容的反转图像。CSS3提供了backface-visibility属性来改变这一情况。
如果在旋转元素不希望看到其背面时,该属性很有用。
更多关于2D/3D变换可以参考:
漫谈CSS transform动画技术
CSS3 3D transform变换
CSS3 变换
The text was updated successfully, but these errors were encountered: