css3转换概述

Posted 氢核

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了css3转换概述相关的知识,希望对你有一定的参考价值。

转换是使元素改变形状、尺寸和位置的一种效果,我们可以使用2D或3D转换来进行元素的转换,转换包括移动(translate)、缩放(scale)、旋转(rotate)、倾斜(skew)。2D转换与3D转换的不同在于Z轴的有无,其实转换方法的意思很好懂,主要是转换属性的理解,2D转换有transform(允许元素进行转换并设置转换参数)和transform-origin(转换基点的设置)两个属性,3D转换属性除了这两个属性还有transform-style(让子元素能实现3D变换)、perspective(3D视距,观察距离)、perspective-origin(我们观察的角度,图形是没变的,只是我们观察的角度不同,看到的效果是不一样的,类似横看成岭侧成峰的效果)、persepective-visibility。首先要注意在css中的坐标轴是这样的:

2D Transform 方法

函数 描述
matrix(n,n,n,n,n,n) 定义 2D 转换,使用六个值的矩阵。
translate(x,y) 定义 2D 转换,沿着 X 和 Y 轴移动元素。
translateX(n) 定义 2D 转换,沿着 X 轴移动元素。
translateY(n) 定义 2D 转换,沿着 Y 轴移动元素。
scale(x,y) 定义 2D 缩放转换,改变元素的宽度和高度。
scaleX(n) 定义 2D 缩放转换,改变元素的宽度。
scaleY(n) 定义 2D 缩放转换,改变元素的高度。
rotate(angle) 定义 2D 旋转,正数顺时针,负数逆时针
skew(x-angle,y-angle) 定义 2D 倾斜转换,沿着 X 和 Y 轴。
skewX(angle) 定义 2D 倾斜转换,沿着 X 轴。
skewY(angle) 定义 2D 倾斜转换,沿着 Y 轴。

2D转换属性:

属性 描述 CSS
transform 向元素应用 2D 或 3D 转换。该属性允许我们对元素进行旋转、缩放、移动或倾斜。 3
transform-origin 允许你改变被转换元素的位置。 3

transform-origin(改变转换基点的位置)

在没有重置transform-origin改变元素原点位置的情况下,CSS变形进行的旋转、位移、缩放,扭曲等操作都是以元素自己中心位置进行变形。但很多时候,我们可以通过transform-origin来对元素进行原点位置改变,使元素原点不在元素的中心位置,以达到需要的原点位置。例如对于元素旋转,首先要知道我们在旋转元素时,都是围绕一个中心点旋转的,默认情况之下,中心点是居于元素X轴和Y轴的50%处,但我们可以通过这个属性来改变中心点的位置。

transform-origin取值和元素设置背景中的background-position取值类似,如下表所示:

css3转换概述

下面通过transform-origin改变元素原点到左上角,然后改变旋转度数进行旋转:

css3转换概述            css3转换概述

css3转换概述                            css3转换概述


3D Transform 方法

函数 描述
matrix3d(n,n,n,n,n,n,n,n,n,n,n,n,n,n,n,n) 定义 3D 转换,使用 16 个值的 4x4 矩阵。
translate3d(x,y,z) 定义 3D 转化。
translateX(x) 定义 3D 转化,仅使用用于 X 轴的值。
translateY(y) 定义 3D 转化,仅使用用于 Y 轴的值。
translateZ(z) 定义 3D 转化,仅使用用于 Z 轴的值。
scale3d(x,y,z) 定义 3D 缩放转换。
scaleX(x) 定义 3D 缩放转换,通过给定一个 X 轴的值。
scaleY(y) 定义 3D 缩放转换,通过给定一个 Y 轴的值。
scaleZ(z) 定义 3D 缩放转换,通过给定一个 Z 轴的值。
rotate3d(x,y,z,angle) 定义 3D 旋转。
rotateX(angle) 定义沿 X 轴的 3D 旋转。
rotateY(angle) 定义沿 Y 轴的 3D 旋转。
rotateZ(angle) 定义沿 Z 轴的 3D 旋转。
perspective(n) 定义 3D 转换元素的透视视图。

3D转换属性

属性 描述 CSS
transform 向元素应用 2D 或 3D 转换。 3
transform-origin 允许你改变被转换元素的位置。 3
transform-style 规定被嵌套元素如何在 3D 空间中显示。 3
perspective 规定 3D 元素的透视效果。 3
perspective-origin 规定 3D 元素的底部位置。 3
backface-visibility 定义元素在不面对屏幕时是否可见。 3

transform-style(表示允许子元素进行3D转换)

要利用 CSS3 实现 3D 的效果,最主要的就是借助 transform-style 属性。父元素transform-style:preserve-3d后,transform-style 只有两个值可以选择:

 
   
   
 
  1. transform-style: flat|preserve-3d;

  2. transform-style: flat; // 默认,子元素将不保留其 3D 位置

  3. transform-style: preserve-3d; // 子元素将保留其 3D 位置。

当我们指定一个容器的 transform-style 的属性值为 preserve-3d 时,容器的后代元素便会具有 3D 效果,也就是当前父容器设置了 preserve-3d 值后,它的子元素就可以相对于父元素所在的平面,进行 3D 变形操作。当父元素设置了 transform-style:preserve-3d 后,就可以对子元素进行 3D 变形操作了,3D 变形和 2D 变形一样可以,使用 transform 属性来设置,或者可以通过制定的函数或者通过三维矩阵来对元素变型操作, 如translateX(length) 、translateY(length) 、 translateZ(length) 、scale3d(number,number,number)等。

perspective(视距,观察距离)

perspective是用来设置3D视距的,相当于景深的概念。perspective 为一个元素设置三维透视的距离,仅作用于元素的后代,而不是其元素本身。简单来说,当元素没有设置 perspective 时,也就是当 perspective:none/0 时所有后代元素被压缩在同一个二维平面上,不存在景深的效果。而如果设置 perspective 后,将会看到三维的效果。下面是设置不同perspective值的效果图:

css3转换概述

css3转换概述                   

  css3转换概述

perspective-origin(观察角度的量标)

perspective-origin 实际就是指我们观察角度的一个量标,表示 3D 元素透视视角的基点位置,默认的透视视角中心在容器是 perspective 所在的元素,而不是他的后代元素的中点,也就是 perspective-origin: 50% 50%。该属性必须与 perspective 属性一同使用,而且只影响 3D 转换元素。值得注意的是,CSS3 3D 变换中的透视的透视点是在浏览器的前方。下面是设置不同perspective-origin值的效果图:

css3转换概述

注意:perspective和perspective-origin是一起使用的,而且他们总是在父元素中设置,而只对子元素产生效果的。通过调整 persepective 和 perspective-origin 的值,可以看到不一样的图形,正如我们观测一个物体的角度和距离物体的距离不断发生改变,我们看的物体也是不一样的。


以上是关于css3转换概述的主要内容,如果未能解决你的问题,请参考以下文章

在代码片段中包含类型转换

sql 日期转换代码片段 - Dato,120,konvertere

CSS3的2D转换3D转换和过渡

HTML Bookmarklet模板:将任何JavaScript代码片段转换为Bookmarklet

CSS3 2D 转换

十条jQuery代码片段助力Web开发效率提升