如何理解 css3 的 perspective 属性
一、写在前面的话
最近想多了解一下CSS3的transform 3D效果,transform:英文直译就是转换,它可以实现旋转、缩放、位移等效果,听起来有没有觉得很酷的样子,狠狠的点这里来看看旋转和位移的效果。
你应该会看到这样的效果:
纳尼?这是3D?怎么一点也不酷呢?
二、让3D效果显示出来
看不到3D效果,那是因为我们没有加上 prespective 属性,我们在外层DIV上加上 prespective: 50; ,再狠狠的点这里来看看旋转和位移的效果。
你应该会看到这样的效果:
是不是有那么点酷了,但你知道 prespective: 50; 是怎么起作用的么?我们来一探究竟。
三、先来感性的理解3D
当我在网上找到下面这张图的时候,顿时心里咯噔一下,千言万语不如一张图说的明白啊,那个网状的平面你可以理解为我们的显示器,这样一个立体的概念是不是就在脑子里开始有了呢?
如果还没概念,我们以旋转为例来继续说明
rotateX就像单杠
rotateY就像钢管舞
rotateZ就像旋转的风扇
四、如何理解prespective
终于说到本文的核心了,prespective属性有两个作用,一是开关,通过它来打开和关闭3D透视效果,二是设置透视的距离。
设置 prespective:none; 是关闭透视效果,设置 prespective:50; 是打开透视效果并设置透视的距离是50像素,你可以理解为在显示器前50像素的距离看到的透视效果,而对于什么是透视效果,可以看这张图:
人眼对物体的视觉效果呈现的是近大远小的特点,perspective属性展现的就是这种效果。
回到之前的DEMO,右边有背景的DIV跟虚线边框的DIV其实是一样大小,只是右边有背景的DIV的Z轴向前移动了20像素,在透视效果下就显示比虚线边框的DIV面积要大些。
五、2种方式设置perspective
除了之前说到的在父元素上设置 prespective:50; 外,还有一种方式是通过 transform在子元素上设置,如:transform: perspective(50px) rotate(45deg); ,这2种方式设置的效果是不一样的。
- prespective:50; 是以当前父元素的转换位置为视点看到的透视效果;
transform: perspective(50px) rotate(45deg); 是以当前子元素的转换位置为视点看到的透视效果;
PS:请注意两种方式的值写法,一个不要单位,一个要单位。
说了这么多,不知道各位对perspective 是否完全理解了呢,欢迎探讨?
文章来源:http://www.gafish.net/archives/1540
如何理解 css3 的 perspective 属性的更多相关文章
- 半深入理解CSS3 object-position/object-fit属性
半深入理解CSS3 object-position/object-fit属性 转载:https://www.zhangxinxu.com/wordpress/2015/03/css3-object-p ...
- css3 tranform perspective属性
perspective 属性用于规定观察点距离元素的距离, 1 观察点距离元素越近,元素变形就越大,灭点距离越近. 2 观察点距离元素越远,元素变形越小,灭点距离也就越远. 比如设置perspecti ...
- 图形解析理解 css3 之倾斜属性skew()
1.作用 改变元素在页面中的形状2.语法 属性:transform 函数: 1.skew(xdeg) 向横向倾斜指定度数 x取值为正,X轴不动,y轴逆时针倾斜一定角度 x取值为负,X轴不动,y轴顺时针 ...
- 【CSS3】 理解CSS3 transform中的Matrix(矩阵)
理解CSS3 transform中的Matrix(矩阵) by zhangxinxu from http://www.zhangxinxu.com 本文地址:http://www.zhangxinxu ...
- 理解CSS3 transform中的Matrix(矩阵)
一.哥,我被你吓住了 打架的时候会被块头大的吓住,学习的时候会被奇怪名字吓住(如“拉普拉斯不等式”).这与情感化设计本质一致:界面设计好会让人觉得这个软件好用! 所以,当看到上面“Matrix(矩阵) ...
- 理解CSS3 transform中的Matrix(矩阵)——张鑫旭
by zhangxinxu from http://www.zhangxinxu.com本文地址:http://www.zhangxinxu.com/wordpress/?p=2427 一.哥,我被你 ...
- CSS3教程:Transform的perspective属性设置
1 2 <div id="animateTest" style="-webkit-transform: perspective(400px) rotateY(4 ...
- CSS3 Transform的perspective属性
以下两行语句有什么区别? Css <div id="animateTest" style="-webkit-transform: perspective(400px ...
- 理解CSS3属性transition
一.说明 1.1 定义和用法 transition 属性是一个简写属性,用于设置四个过渡属性: transition-property:规定设置过渡效果的CSS属性的名称. transition-du ...
随机推荐
- 2015第14周日WebSocket
清明时节雨纷纷,路上行人欲断魂,借问酒家何处是?牧童遥指杏花村.每次清明都不禁想起杜牧这首诗缅怀先人,此时第一句写时间天气,第二句写人物心情,第三句写解决方法,第四句给出解决方案,脍炙人口. 刚没事看 ...
- 编译不通过:提示XXXX不是类或命名空间名 的解决办法
手动写了一个类,需要引入预编译头stdafx.h.结果编译时提示XXXX不是类或命名空间名. 处理方法:将#include "stdafx.h"放在最前面.
- Raw qcow qcow2 vhd-vpc虚拟磁盘格式间相互转换
- 《Java程序员面试笔试宝典》之volatile有什么作用
在由Java语言编写的程序中,有时候为了提高程序的运行效率,编译器会自动对其进行优化,把经常被访问的变量缓存起来,程序在读取这个变量的时候有可能会直接从缓存(例如寄存器)中来读取这个值,而不会去内存中 ...
- javascript 我是广告
<!DOCTYPE html><html><head><meta charset="utf-8"><meta http-equ ...
- configure交叉编译
今天在交叉编译时犯了一个错误,纠结了好久,曾经交叉编译器的前缀基本上都是用arm-linux-,这次换了一个新环境是arm-none-linux-gnueabi-,于是想当然的把configure中的 ...
- ORA-25154/ORA-01748
SQL> select oi.order_id,product_id,order_date from order_items oi join orders o using(order_id) w ...
- ASP.NET 导出Excel文档
System.IO.TextWriter writer = new System.IO.StreamWriter(Server.MapPath("/provprice.xls"), ...
- MVVM模式
MVVM的最大缺点貌似是,报错后不好找, 在安卓6.0的时候出现了一个工具叫做databinding,其中呢主要是用来帮助实现MVVM模式的快速开发 在使用databinding的时候我们需要做的 ...
- JavaScript中String对象的match()、replace() 配合正则表达式使用
正则表达式由来已久,查找替换功能非常强大,但模板难记复杂. JavaScript中String对象的match().replace()这2个方法都要使用正则表达式的模板.当模板内容与字符串不相匹配时, ...