CSS3 3D变换

时间:2022-12-24 12:22:32

可以这么说,3D变换是基于三维坐标系的。以下是“盗用”的图

CSS3 3D变换

CSS3中的3D变换主要包括以下几个功能函数:

  • 3D位移:包括translateZ()和translate3d();
  • 3D旋转:包括rotateX()、rotateY()、rotateZ()和rotate3d();
  • 3D缩放:包括scaleZ()和scale3d();
  • 3D矩阵:matrix3d();

一、translate3d()

具体的css使用为

transform: translate3d(tx, ty, tz);

  tx、ty、tz应该不用多介绍了。

 二、translateZ()

让元素在3D空间沿Z轴进行位移。具体的css使用为

transform: translateZ(t);

当t为负值的时候,意味着元素在Z轴越移越远,我们人眼看到的就是元素变得越来越小。反之,元素在Z轴越移越近,导致元素变得越大。

translateZ()等同于translate3d(0,0,tz)。

三、rotateX()、rotateY()、rotateZ()和rotate3d()

rotateX(a)、rotateY(a)、rotateZ(a)函数让一个元素围绕X、Y、Z轴旋转。a表示旋转角度值。若为正值,元素顺时针旋转;反之为逆时针。

rotate3d(x,y,z,a),其中,

x(y)(z)取值为0~1的数值,用来描述元素围绕X(Y)(Z)轴旋转的矢量值;

a为角度值,指定元素的空间旋转角度。

当x,y,z三个值同时为0时,元素的3D空间不做任何旋转。rotateX(a)等价于rotate(1,0,0,,a)、rotateY(a)等价于rotate(0,1,0,a)、rotateZ(a)等价于rotate(0,0,1,a)。

四、scaleZ()和scale3d()

即3D缩放。当scale3d()中x轴和Y轴同为1,即scale3d(1,1,sz),其效果等同于scaleZ(sz)。

(个人觉的,除了让元素只在Z轴上按比例缩放、各值取(-1)达到对称变换这些用途具有实用性之外,一般不会去同时缩放x,y吧,因为前者是基于相似图形,具有可控性,后     者要求想象能力实在是太高了>_<)

五、matrix3d()

3D矩阵在此不再赘述,学好图形学中的矩阵变换就行。

实际应用的时候,你必须关注的问题

  相关属性有一个叫做perspective属性,翻译为中文叫做:透视,视角。通俗一点地将就是“看东西的角度,你的眼睛所在的点”。但是在css3 3D变换中,透视点是在浏览器的前方。有人是这么解析的“比方说,一个1680像素宽的显示器中有张图片,应用了3D transform,同时,该元素或该元素父辈元素设置的perspective大小为2000像素。则这张图片呈现的3D效果就跟你本人在1.2个显示器宽度的地方(1680*1.2≈2000)看到的真实效果一致!!”~注意:属性值不能为负值。

CSS3 3D变换

更有趣的是:perspective有两种设置方式,一种是在容器上,一种是在自身元素上。需要注意的一点是:当容器里面只有一个元素的时候,这两种设置方法所表现出来的效果是一样。那这两种设置方法的差异在哪里呢?

且看下图(还是盗用别人的):

CSS3 3D变换

区别很明显,在以整个容器为视角对象的时候,你看到了不同形态的正方形,而当以每个方块为视角对象的时候,所有方块在perspective相同的情况下所表现出来的效果是一样的。打个通俗的比方是:有若干形态相同的杯子摆在橱柜里,你在橱柜外面,不断调整你眼睛所在的位置进行观察,你会看不同的场景图,这所谓的不同是你视角变化的时候前后对照的表现;而如果夸张一点,假如你有n只眼睛,一只眼睛看一个杯子,然后你同方向移动你那n只眼睛,每只眼睛看到的杯子形态还是一样的,这不是视角变化前后的对照,是同一时刻,每只眼睛看到的东西的对照。

还有一个相关属性叫做:perspective-origin。“就是你的眼睛往哪里看”。

还有一个相关属性叫做:transform-style: flat|preserve-3d,flat为默认值,表示的是平面,preserve-3d表示3D透视,实现3d效果。transform-style设置在容器上。

还有一个相关属性叫做:backface-visibility:hidden。因为在css3的3D世界中,我们可以看到背后的元素,但是这却和现实世界不相符,所以就有将backface-visibility设置为hidden的做法。

相关实践代码可以github上的获取: https://github.com/Gyingguo/css3-demo

参考资料: 《图解css3核心技术与案例实战》张鑫旭博客 CSS3 3D transform变换

CSS3 3D变换的更多相关文章

  1. css3 3D变换和动画

    3D变换和动画 建立3D空间,transform-style: preserve-3d perspective: 100px; 景深 perspective-origin:center center ...

  2. CSS3 3D变换实例 滚动的正方体

    笔记: 2D变换 transform 位移   translateX() translateY()  简写:translate(X值,Y值)  正值向右,负值向左 旋转 rotate()  rotat ...

  3. css3 3d变换和动画——回顾

    1.transform-style 属性指定嵌套原始是怎样在三维空间中呈现. 语法:transform-style: flat | preserve-3d flat 表示所有子元素在2D平面呈现. p ...

  4. CSS3之3D变换实例详解

    CSS3的3D效果很赞,本文实现简单的两种3D翻转效果.首先看效果和源代码,文末是文绉绉的总结部分^_^ 以下CSS代码为了简洁没有添加前缀,请视情况自行添加(自动化时代推荐使用其他的一些方法,如gu ...

  5. 好吧,CSS3 3D transform变换,不过如此!

    一.写在前面的秋裤 早在去年的去年,我就大肆介绍了2D transform相关内容.看过海贼王的都知道,带D的家伙都不是好惹的,2D我辈尚可以应付,3D的话,呵呵,估计我等早就在千里之外被其霸气震晕了 ...

  6. 好吧,CSS3 3D transform变换,不过如此!——张鑫旭

    一.写在前面的秋裤 早在去年的去年,我就大肆介绍了2D transform相关内容.看过海贼王的都知道,带D的家伙都不是好惹的,2D我辈尚可以应付,3D的话,呵呵,估计我等早就在千里之外被其霸气震晕了 ...

  7. IT兄弟连 HTML5教程 CSS3属性特效 3D变换1

    3D变换较2D变换多了一下的转换属性,3D转换属性及描述如表1: 表1  3D转换属性 3D的转换方法如表2: 表2  3D转换方法     1  transform-style transform- ...

  8. CSS3之3d变换与关键帧

    3d变换是在transform基础上实现的 transform-style:preserve-3d; 建立3d空间 perspective:; 景深(设置用户看的距离) perspective-ori ...

  9. CSS3 3D transform变换

    .实际应用-图片的旋转木马效果 您可以狠狠地点击这里:图片的旋转木马效果demo 建议在足够新版本的FireFox浏览器或Safari浏览器下观看,Chrome可能需要居中定位查看,下图为效果缩略图: ...

随机推荐

  1. Apache开启不了------The requested operation has failed&excl;

    1.这个问题通常是由于端口被占用了,cmd输入netstat -ano查看端口号,根据端口号80的程序的pid在任务管理器下杀掉它. 2.我遇到这个问题不是这个原因.我由于刚配置了虚拟目录.查看虚拟目 ...

  2. vijos 1907 飞扬的小鸟

    我心里毫无波动甚至还有点想笑. WTF WTF WTF WTF WTF WTF WTF GTMD调了一天什么鬼啊. 原来更新的范围有讲究啊. #include<iostream> #inc ...

  3. 黄聪:C&num;操作xml SelectNodes&comma;SelectSingleNode通过 xPath 定位class包含Contains的DIV

    一. SelectNodes,SelectSingleNode总是返回NULL 下面以一个简单的xml为例: <?xml version="1.0"?> <mes ...

  4. uva 10651 - Pebble Solitaire&lpar;记忆化搜索)

    题目链接:10651 - Pebble Solitaire 题目大意:给出一个12格的棋盘,‘o'代表摆放棋子,’-‘代表没有棋子, 当满足’-oo'时, 最右边的棋子可以跳到最左边的位子,而中间的棋 ...

  5. μC&sol;OS-II 任务的同步与通信 --- 信号量

    任务间通信 系统中的多个任务在运行时,经常需要互相无冲突地访问同一个共享资源,或者需要互相支持和依赖,甚至有时还要互相加以必要的限制和制约,才保证任务的顺利运行.因此,操作系统必须具有对任务的运行进行 ...

  6. sap部署

    SAP部署 连接sap系统需要通过sap javaconnect来连接,对于sapjco.jar系列文件有32位与64位之分.即对jdk有严格要求.现说明客户端部署及服务端部署两种情况: 一. 部署客 ...

  7. php计算给定时间之前的函数

    这里给定一个时间,计算这个时间在多久前,比如:2天前,1年前 function prettyDate($date){ $time = strtotime($date); $now = time(); ...

  8. SQL Server Replication 总结

    合并复制中,数据库架构的更改要重新生成发布端的快照 在SQL Server 合并复制中,如果在发布端做了数据库架构的更改(例如新建表,更改表结构等),原则上来说都需要重新生成发布端的快照,订阅端才能同 ...

  9. 【BZOJ1053】&lbrack;HAOI2007&rsqb;反素数(搜索)

    [BZOJ1053][HAOI2007]反素数(搜索) 题面 BZOJ 洛谷 题解 大力猜一下用不了几个质因子,那么随便爆搜一下就好了. #include<iostream> #inclu ...

  10. 关于String&period;valueOf&lpar;&rpar;和&period;toString的问题

    以下是String.valueOf()的源代码 public static String valueOf(Object obj) {     return (obj == null) ? " ...