防疫不防学,逆战2020!
闲话少絮,切入正题:本文详细讲解css的3D常用属性,及其实现立方体的两种方式。
首先我要明确x、y、z坐标轴的方向如何:3D即是三维空间,在3D空间内一般使用3D坐标轴确定元素位置,那么x、y、z坐标轴的方向如何?如果以屏幕正中心为3D空间的原点,以原点水平向右的方向为x轴线正方向,以原点水平向下的方向为y轴正方向,以垂直于屏幕穿过原点由屏幕向外(向我们射来)的方向为z轴的正方向,这种x、y、z轴构成的空间为基础,我们对元素的位置进行调整以达到我们需要的3D效果。
说起CSS的3D属性,在平面中我们对元素进行位置平移、旋转、缩放和倾斜,那么在3D中我们除了在x、y轴进行的操作外,增加了对z轴的操作。
3D变换的变形属性:transform
一、3D平面位移:
1、transform:translate3d(参数1,参数2,参数3);
*沿x、y、z轴同时位移
参数1:x轴移动的距离(正值沿着x轴往右)
参数2:y轴移动的距离(正值沿着y轴往下)
参数3:z轴移动的距离(正值沿着z轴往外)
2、transform:translateX(参数);
*单独沿x轴进行位移
3、transform:translateY(参数);
*单独沿y轴进行位移
4、transform:translateZ(参数);
*单独沿z轴进行位移
二、3D旋转
1、transform:rotateX(参数);
*参数为正值是绕着x轴顺时针旋转
2、transform:rotateY(参数);
*参数为正值是绕着y轴顺时针旋转
3、transform:rotateZ(参数);
*参数为正值是绕着z轴顺时针旋转
4、transform:rotate3d(x,y,z,a);
*绕着xyz轴同时旋转
x,y,z取值为 0或1,当值为1时表示允许沿着该轴线旋转,当值为零是表示不允许沿着该轴线旋转,a的值是旋转的度数。
在我们旋转的过程中要注意一个问题,我们x、y、z轴的坐标原点在元素的中心,也即是元素默认的的变形原点,当然变形原点可以通过transform-origin:参数1 参数2;
进行设置,我们第二种立方体的实现方法就需要对变形原点进行改变再平移旋转实现的,请看第二种实现方式给出的具体用法。
三、3D缩放
transform:scale3d(x,y,z);*元素整体缩放
transform:scaleX();*沿着x轴缩放
transform:scaleY();*沿着y轴缩放
transform:scaleZ();*沿着z轴缩放
缩放的参数的取值小于1表示缩小,大于1表示放大,等于1表示不尽兴缩放。
在了解这些属性后,还有最重要的一个步骤,让该元素的父元素形成一个3D“舞台”,让其子元素能够在这个“舞台”中进行3d变换:transform-style:preserve-3d;
第二种实现立方体方法具体代码如下:
原文:https://www.cnblogs.com/wangtianliang/p/12392916.html