第 24 章 CSS3 变形效果[下]
学习要点:
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 变形效果[下]的更多相关文章
- 第八十一节,CSS3变形效果
CSS3变形效果 学习要点: 1.transform 2.transform-origin 3.浏览器版本 本章主要探讨HTML5中CSS3的变形效果,通过变形效果,可以平移.缩放和旋转元素的功能. ...
- 前端开发工程师 - 03.DOM编程艺术 - 第1章.基础篇(下)
第1章.基础篇(下) Abstract: 数据通信.数据存储.动画.音频与视频.canvas.BOM.表单操作.列表操作 数据通信(HTTP协议) HTTP事务: 客户端向服务器端发送HTTP请求报文 ...
- 【RL-TCPnet网络教程】第24章 RL-TCPnet之网络控制报文协议ICMP
第24章 RL-TCPnet之网络控制报文协议ICMP 本章节为大家讲解ICMP(Internet Control Message Protocol,网络控制报文协议),通过前面章节对TCP和 ...
- CHAPTER 24 History of Our Planet 第24章 我们行星的历史
CHAPTER 24 History of Our Planet 第24章 我们行星的历史 Uncovering the bones of ancient beasts is only part of ...
- [Real World Haskell翻译]第24章 并发和多核编程 第一部分并发编程
第24章 并发和多核编程 第一部分并发编程 当我们写这本书的时候,CPU架构正在以比过去几十年间更快的速度变化. 并发和并行的定义 并发程序需要同时执行多个不相关任务.考虑游戏服务器的例子:它通常是由 ...
- 第24章 SPI—读写串行FLASH—零死角玩转STM32-F429系列
第24章 SPI—读写串行FLASH 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.com/ ...
- 学习笔记 第十二章 CSS3+HTML5网页排版
第12章 CSS3+HTML5网页排版 [学习重点] 正确使用HTML5结构标签 正确使用HTML5语义元素 能够设计符合标准的网页结构 12.1 使用结构标签 在制作网页时,不仅需要使用< ...
- 学习笔记 第十一章 CSS3布局基础
第11章 CSS3布局基础 [学习重点] 了解CSS2盒模型. 设计边框样式. 设计边界样式. 设计补白样式. 了解CSS3盒模型. 11.1 CSS盒模型基础 页面中所有元素基本显示形态为方形 ...
- 【STM32H7教程】第24章 STM32H7的Cache解读(非常重要)
完整教程下载地址:http://www.armbbs.cn/forum.php?mod=viewthread&tid=86980 第24章 STM32H7的Cache解读(非常重要 ...
随机推荐
- 更新日志 - fir.im Jenkins & Gradle 插件上线
最近 fir.im 工程师们效率爆表,fir.im 实用工具集合又添加了新的成员-- Jenkins & Gradle 插件,让 App 打包上传更加简单快速. fir.im Jenkins ...
- 可能是一场很 IN 的技术分享
从去年的 Swift 到今年的 iOS 9,每一个新的技术.新的设备都"紧紧牵动 iOS 开发者的心". 好在有这样一群开发者,他们乐于第一时间尝试.挑战并分享. 有一类开发者他们 ...
- Java override 和 overload 的区别
override 是重写(覆盖)了一个方法,用来实现不同的功能,一般是用于子类继承父类时,重写父类的方法的时候. 重写(覆盖)的规则: 1.重写方法的参数列表必须表示与被重写的方法相同,否则不能称为重 ...
- eclipse导入cordova创建的项目
eclipse导入cordova创建的项目 看图不说话 run这个MainActivity就可以了,bin目录下会生成APK
- 在Windows系统搭建.NET Core环境并创建运行ASP.NET网站
微软于6月27日在红帽DevNation峰会上 正式发布了.NET Core 1.0.ASP.NET 1.0和Entity Framework Core 1.0,其将全部支持Windows.OS X和 ...
- Android强制设定横屏时,SurfaceView一直黑屏
接着上一个问题,解决了SurfaceView闪屏问题之后(http://www.cnblogs.com/Joanna-Yan/p/4829325.html),又有了一个新的问题.现在我想设置含有fra ...
- 轻松自动化---selenium-webdriver(python) (三)
本节重点: 简单对象的定位 -----自动化测试的核心 对象的定位应该是自动化测试的核心,要想操作一个对象,首先应该识别这个对象.一个对象就是一个人一样,他会有各种的特征(属性),如比我们可以通过一 ...
- MAC与HMAC的介绍及其在AWS和Azure中的应用
MAC 在密码学中,(消息认证码)Message Authentication Code是用来认证消息的比较短的信息.换言之,MAC用来保证消息的数据完整性和消息的数据源认证. MAC由消息本身和一个 ...
- SQL中利用DMV进行数据库性能分析
相信朋友对SQL Server性能调优相关的知识或多或少都有一些了解.虽然说现在NOSQL相关的技术非常的火热,但是RMDB(关系型数据库)与NOSQL是并存的,并且适用在各种的项目中.在一般的企业级 ...
- Flexbox制作CSS布局实现水平垂直居中
Flexbox实现一个div元素在body页面中水平垂直居中: <!DOCTYPE html><html lang="en"><head> & ...