学习要点:

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. 更新日志 - fir.im Jenkins & Gradle 插件上线

    最近 fir.im 工程师们效率爆表,fir.im 实用工具集合又添加了新的成员-- Jenkins & Gradle 插件,让 App 打包上传更加简单快速. fir.im Jenkins ...

  2. 可能是一场很 IN 的技术分享

    从去年的 Swift 到今年的 iOS 9,每一个新的技术.新的设备都"紧紧牵动 iOS 开发者的心". 好在有这样一群开发者,他们乐于第一时间尝试.挑战并分享. 有一类开发者他们 ...

  3. Java override 和 overload 的区别

    override 是重写(覆盖)了一个方法,用来实现不同的功能,一般是用于子类继承父类时,重写父类的方法的时候. 重写(覆盖)的规则: 1.重写方法的参数列表必须表示与被重写的方法相同,否则不能称为重 ...

  4. eclipse导入cordova创建的项目

    eclipse导入cordova创建的项目 看图不说话 run这个MainActivity就可以了,bin目录下会生成APK

  5. 在Windows系统搭建.NET Core环境并创建运行ASP.NET网站

    微软于6月27日在红帽DevNation峰会上 正式发布了.NET Core 1.0.ASP.NET 1.0和Entity Framework Core 1.0,其将全部支持Windows.OS X和 ...

  6. Android强制设定横屏时,SurfaceView一直黑屏

    接着上一个问题,解决了SurfaceView闪屏问题之后(http://www.cnblogs.com/Joanna-Yan/p/4829325.html),又有了一个新的问题.现在我想设置含有fra ...

  7. 轻松自动化---selenium-webdriver(python) (三)

     本节重点: 简单对象的定位 -----自动化测试的核心 对象的定位应该是自动化测试的核心,要想操作一个对象,首先应该识别这个对象.一个对象就是一个人一样,他会有各种的特征(属性),如比我们可以通过一 ...

  8. MAC与HMAC的介绍及其在AWS和Azure中的应用

    MAC 在密码学中,(消息认证码)Message Authentication Code是用来认证消息的比较短的信息.换言之,MAC用来保证消息的数据完整性和消息的数据源认证. MAC由消息本身和一个 ...

  9. SQL中利用DMV进行数据库性能分析

    相信朋友对SQL Server性能调优相关的知识或多或少都有一些了解.虽然说现在NOSQL相关的技术非常的火热,但是RMDB(关系型数据库)与NOSQL是并存的,并且适用在各种的项目中.在一般的企业级 ...

  10. Flexbox制作CSS布局实现水平垂直居中

    Flexbox实现一个div元素在body页面中水平垂直居中: <!DOCTYPE html><html lang="en"><head>  & ...