学习要点:

1.3D 变形简介

2.transform-style

3.perspective

4.3D 变形属性

主讲教师:李炎恢

本章主要探讨 HTML5 中 CSS3 的变形效果,主要接着上节课的 2D 平面变形转换到 3D 立体变形。

一.3D 变形简介

之前我们学习了元素的平移、旋转、缩放和倾斜等功能。这些效果只是单纯在二维平面图上的,我们称之为 2D。那么其实 CSS3 也提供了三维立体的一些功能效果,并且目前较新的主流浏览器都比较支持,只不过比 2D 晚一些,对浏览器的版本要求也要高一些。

由于 3D 是立体三维,在 x、y 轴的基础上一般会多出一个 z 轴,深入跃出轴。以下是 3D 变形的属性值表,如下:

属性值

说明

translate3d(x,y,z)

3D 方式平移元素,设置 x、y 和 z 轴

translateZ(z)

设置 3D 方式平移元素的 z 轴

scale3d(x,y,z)

3D 方式缩放一个元素

scaleZ(z)

设置 3D 方式缩放元素的 z 轴

rotate3d(x,y,z,a)

3d 方式旋转元素

rotateX(a)

分别设置 3D 方式的旋转元素的 x、y 和 z 轴

rotateY(a)

rotateZ(a)

perspective(长度值)

设置一个透视投影矩阵

matrix3d(多个值)

定义一个矩阵

3D 变形比 2D 变形出来的要晚一些,所以如果需要兼容旧版本浏览器,可以对照这个表。具体如下:

Opera

Firefox

Chrome

Safari

IE

支持需带前缀

15 ~ 22

10 ~ 15

12 ~ 35

4 ~ 8

支持不带前缀

23+

16+

26+

10.0+

//兼容版本完整形式

-webkit-transform: translateZ(200px);
-moz-transform: translateZ(200px);
-o-transform: translateZ(200px);
-ms-transform: translateZ(200px);
transform: translateZ(200px);

二.transform-style

transform-style 属性是指定嵌套元素如何在 3D 空间中呈现。

属性值

说明

flat

默认值,表示所有子元素在 2D 平面呈现。

preserve-3d

表示子元素在 3D 空间中呈现。

//一般设置到当前元素的父元素

transform-style: preserve-3d;

需要再配合后面的功能属性和变形配置,才能看到效果。同样,这个属性也需要加上各种厂商前缀。

三.perspective

perspective 是 3D 变形的重要属性,该属性会设置查看者的位置,并将可视内容映射到一个视锥上,继而投放到一个 2D 平面上。

属性值

说明

none

默认值,表示无限的角度来看 3D 物体,但看上去是平的。

长度值

接受一个长度单位大于 0 的值,其单位不能为百分比。值越大,角度出现的越远,就好比你人离远一点看物体。值越小,正相反。

//设置查看者的距离位置,一般设置在元素的父元素上

perspective: 1000px;

需要再配合后面的功能属性和变形配置,才能看到效果。同样,这个属性也需要加上各种厂商前缀。

四.3D 变形属性

我们运用前面 3D 功能属性 transform-style 和 perspective 来构建 3D 变形效果。

1.translate3d(x,y,z)

//需要 3D 位移的 HTML 结构,必须有父元素包含

<div id="a">
<img src="img.png" alt="" />
</div>

//CSS 部分,父元素设置 3D 呈现且设置透视距离

#a {
perspective: 1000px;
transform-style: preserve-3d;
} img {
/*z 轴可以是负值*/
transform: translate3d(300px,100px,240px);
}

2.translateZ(z)

//可以单独设置 z 轴,z 轴可以是负值

img {
transform: translateZ(240px);
}

3.scale3d(x,y,z)

//3D 缩放,单独设置无效,需要配合角度

img {
transform: scale3d(1,1,1.5) rotateX(45deg);
}

4.scaleZ(z)

//单独设置 z 轴,x 和 y 轴默认为 1

img {
transform: scaleZ(1.5) rotateX(45deg);
}

5.rotate3d(x,y,z,a)

//设置 3D 旋转,a 表示角度,xyz 是 0 或 1 之间的数值

transform: rotate3d(1,0,0,45deg);

6.rotateX(a)rotateY(a)rotateZ(a)

//单独设置 3D 旋转

transform: rotateX(45deg);
transform: rotateY(45deg);
transform: rotateZ(45deg);
transform: rotateX(45deg) rotateY(45deg) rotateZ(45deg);

最后一个 matrix3d 就不多说了,忽略。

CSS3 还提供了 perspective-origin 属性来设置 3D 变形中的源点角度。该属性默认值为 50% 50%也就是 center center。

属性值

说明

百分数值

指定元素 x 轴或 y 轴的起点

长度值

指定距离

left

指定 x 轴的位置

center

right

top

指定 y 轴的位置

center

bottom

//源点设置为右上方变形

perspective-origin: top right;

CSS3 还提供了一个在元素中设置透视的值 perspective(长度值),但它还是和在父元素设置有一定不同。因为父元素整个作为透视,而元素自己作为透视,导致不同。

//具体测试看透视的距离

img {
transform: perspective(1000px) rotateY(45deg);
}

第 24 章 CSS3 变形效果[下]的更多相关文章

  1. 第八十一节,CSS3变形效果

    CSS3变形效果 学习要点: 1.transform 2.transform-origin 3.浏览器版本 本章主要探讨HTML5中CSS3的变形效果,通过变形效果,可以平移.缩放和旋转元素的功能.  ...

  2. 前端开发工程师 - 03.DOM编程艺术 - 第1章.基础篇(下)

    第1章.基础篇(下) Abstract: 数据通信.数据存储.动画.音频与视频.canvas.BOM.表单操作.列表操作 数据通信(HTTP协议) HTTP事务: 客户端向服务器端发送HTTP请求报文 ...

  3. 【RL-TCPnet网络教程】第24章 RL-TCPnet之网络控制报文协议ICMP

    第24章     RL-TCPnet之网络控制报文协议ICMP 本章节为大家讲解ICMP(Internet Control Message Protocol,网络控制报文协议),通过前面章节对TCP和 ...

  4. CHAPTER 24 History of Our Planet 第24章 我们行星的历史

    CHAPTER 24 History of Our Planet 第24章 我们行星的历史 Uncovering the bones of ancient beasts is only part of ...

  5. [Real World Haskell翻译]第24章 并发和多核编程 第一部分并发编程

    第24章 并发和多核编程 第一部分并发编程 当我们写这本书的时候,CPU架构正在以比过去几十年间更快的速度变化. 并发和并行的定义 并发程序需要同时执行多个不相关任务.考虑游戏服务器的例子:它通常是由 ...

  6. 第24章 SPI—读写串行FLASH—零死角玩转STM32-F429系列

    第24章     SPI—读写串行FLASH 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/ ...

  7. 学习笔记 第十二章 CSS3+HTML5网页排版

    第12章   CSS3+HTML5网页排版 [学习重点] 正确使用HTML5结构标签 正确使用HTML5语义元素 能够设计符合标准的网页结构 12.1  使用结构标签 在制作网页时,不仅需要使用< ...

  8. 学习笔记 第十一章 CSS3布局基础

    第11章   CSS3布局基础 [学习重点] 了解CSS2盒模型. 设计边框样式. 设计边界样式. 设计补白样式. 了解CSS3盒模型. 11.1  CSS盒模型基础 页面中所有元素基本显示形态为方形 ...

  9. 【STM32H7教程】第24章 STM32H7的Cache解读(非常重要)

    完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第24章       STM32H7的Cache解读(非常重要 ...

随机推荐

  1. Atiti  qq空间破解(3)------------gui图形化通用cli执行器atiuse

    Atiti  qq空间破解(3)------------gui图形化通用cli执行器atiuse 结构:::命令行+以及反馈log框1 cli_guiUI/index.htm1 /AtiPlatf_c ...

  2. 程序员藏经阁 Linux兵书

    程序员藏经阁 Linux兵书 刘丽霞 杨宇 编   ISBN 978-7-121-21992-4 2014年1月出版 定价:79.00元 536页 16开 内容提要 <Linux兵书>由浅 ...

  3. Unity3D Editor模式下批量修改prefab

    最经遇到一个需要批量修改已经做好的prefab的问题,查了一些资料最终实现了但是还是不够完美,通过学习也发现unity的编辑器功能还是非常强大的.废话不多说直接上代码: [ExecuteInEditM ...

  4. 美团(iPad)顶部界面的简单实现, 及开发时常见bug

    项目功能介绍:1.支持横竖屏旋转,界面正常显示2.通过点击界面顶部"美团",可展示出左右双tableView分别显示服务类列表和子类列表3.通过点击界面顶部"广州&quo ...

  5. Reporting Service 没有权限登陆

    在配置好Reporting Service之后,登陆Report Mananger( http://localhost/Reports/Pages/Folder.aspx)出现一个异常,本地用户没有权 ...

  6. poj 2528 Mayor's posters(线段树+离散化)

    /* poj 2528 Mayor's posters 线段树 + 离散化 离散化的理解: 给你一系列的正整数, 例如 1, 4 , 100, 1000000000, 如果利用线段树求解的话,很明显 ...

  7. php基础教程-数据类型

    PHP 支持八种原始类型(type). 四种标量类型: string(字符串) integer(整型) float(浮点型,也作 double ) boolean(布尔型) 两种复合类型: array ...

  8. 【Java基础】通用程序设计

    Num1:for-each循环优先于传统的for循环 java1.5版本发布之前的做法: for(int i=0;i<a.length;i++){ doSomething(a[i]); } ja ...

  9. [Java 进阶]异常

    异常:程序在运行过程中发生由于硬件设备问题.软件设计错误等导致的程序异常事件. 世上没有百分之百完美的程序.程序总难免存在各式各样的问题.所以,程序中添加对于错误的处理机制是十分有必要的.这就好比人多 ...

  10. finetuning caffe

    还没解决,以下是解释fine-tune 比如说,先设计出一个CNN结构.然后用一个大的数据集A,训练该CNN网络,得到网络a.可是在数据集B上,a网络预测效果并不理想(可能的原因是数据集A和B存在一些 ...