CSS之perspective详解

语法(实际开发都是给perspective: 1000px;

perspective: number | none;

1.简单来说,就是设置这个属性后,那么,就可以模拟出像我们人看电脑上的显示的元素一样。比如说, perspective:800px 意思就是,我在离屏幕800px 的地方观看这个元素。(这个属性,要设置在父元素上面)好了

2.最后补充一点,这个perspective 属性呢,要放在父级身上,然后还有一个属性perspective-origin,这个属性也是设置在父级身上。这个属性呢,默认值是 center center,也就是 居中。这两个参数呢,是根据自身来定位的, 0px 0px 代表着元素的左上角,center center代表着元素的中间点。可以设置像素 50px 也可设置百分比 50%,还可以设置 top right left bottom center 等。

3.perspective-origin这个属性有什么用呢? 这个属性是相当于人 的眼睛看哪里。你没有设置,也就是默认看父元素 中间的地方。看下面两张图的例子,就知道什么意思啦。

4.perspective:中心人眼(人眼到物体的z轴距离,即给z轴长度) ,

必须设置在父级上,不设置perspective则看不出translateZ轴移动的近大远小的感觉

5.perspective-origin: 调整人眼视角,设置在父级上.

(默认50%,50% .第一个值X越大,眼睛越往右挪,第二个值Y越大,眼睛越往下挪,)

6. perspective VS translateZ:

外到内距离:perspective:800px 意思就是,我在正中心离屏幕800px 的地方观看这个元素,即不理解可以看成perspective是Z轴的长度单独.

内推外距离:translateZ:(你和电脑屏幕的这段距离即perspective上移动就是Z轴的移动, Z值移动越大, 代表图片越走近你的眼 , 就变越大,当translateZ值等于perspective值则代表图片内移动到了你的人眼皮底下了,重合就会看不见了)

7.总结: tz就看成你和左侧甲的距离,per就看成左侧甲和你的距离

①perspective透视就是人看物体的距离,translateZ就是物体自己挪向人眼的距离,

②两边都能移动的情况下,固定点就很重要了,要不p固定,Z去移动靠近p的值, 要不Z固定,P去移动靠近Z的值, (两者值靠近大,远小)

③总之两个属性要一起用开启,通常都是父perspective:1000px固定的, 然后子Z去调即可.自己细品

(这个perspective属性呢,有着很冷门的知识请认真看完呢)

先来看看, 加了perspective 和 没有加是什么区别, 第一个小方块,是有加的效果,能明显的看到空间感了有没有, 感觉他是真的像在旋转, 而第二个呢,像是在伸缩。

1.简单来说,就是设置这个属性后,那么,就可以模拟出像我们人看电脑上的显示的元素一样。比如说, perspective:800px 意思就是,我在离屏幕800px 的地方观看这个元素。(这个属性,要设置在父元素上面)好了

因此下图看的视野就不同,第一张明显是站在远处看的,一览众三小,看得出是立体的

那么思考一个问题,transform:translateZ 呢,可以增加 Z轴的距离, 那么Z轴越大,是不是也就代表着,这个元素,离我们的距离越近?

(Z轴的translate的就是内外,即远近移动)

那么,你把一张图片,贴到你脸上,有什么效果? 是不是非常大?有人可能会问,这两者之间有什么关系吗? 肯定是有的,这个 perspective 配合 transform:translateZ 就有这种效果, 我们来看看。
(先记着,下图我们设置了perspective:800px,那么来看看 Z到800px 有什么效果)


[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AP86MMa1-1619633259307)(C:\Users\tuyue\AppData\Local\Temp\1613927504538.png)]

有没有发现,临近 800px 的时候, 图片突然变黑了, 然后到800px的时候, 图片消失了。 这又是为啥呢? 其实很像我们现实中的例子一样,一张远处的图片,慢慢的移动到你脸上, 你会看见图片越来越大,贴到你脸上的时候,是不是 你就看不见了? 到800px 的时候,你人都和图片 融合在一体了, 如果801px 是不是你都穿过这张图片了?道理是一样的啦。

那么transform:translateZ, 到负数的时候, 是不是值越小,图片离我们越远,同理的 图片也就越小。

但是!如果你真的认为 perspective 这个属性这么简单的话,那么你就太天真了。按照我们的思路继续,如果 perspective: 这个值,越小,是不是我们的人眼就离屏幕的距离越近, 那么 图片也会越大,(translateZ 是移动图片, perspective是移动 人 和屏幕的距离,这么想也是没问题的哈。

对吧,那么把translateZ(0px)。然后增加 perspective 试试看。 )

然后,你会惊奇的发现,咦? 好像无论是增加,还是减少,图片都没有任何变化。

这个时候,先卖个关子,接着看下个案例,把 translateZ(-100px) 设置成 负值。

(正常,按照我们的想法,是不是 Z的值是正数,说明这个图片,离我们越近,那么反之,负值,离我们越远对吧) 那么这次我们不移动 translateZ 了, 设置好Z 值为-100px 之后,移动perspective的值,把他的值变小,(正常来说,值越小,是不是就代表 我们离屏幕越近, 看的东西也就越大对吧)

然后,你又会惊奇的发现, 怎么图片不是越来越大呢? 我们离屏幕越大,图片应该越大才对啊, 怎么变小了呢?

(上图中z设置为-100, 则perspective从800px到1px)

解惑为什么:

其实把。这里我们一直误导一个情况,固定死perspective1000px后,就固定人眼看屏幕的距离了.此时一旦我们启动tranlatez移动后即人眼perspective这边固定死距离了,轮到物体这边远近移动了),那么所看到的,就不是图片本身了(即只要开启tz就只是看到的是物体的投影,而不是真实图片),而是已经是真实图片的投影了。因为你要想真实图片的宽高都没变,就是实际不会变化的,能变的只有视角,即看到的是投影,

第一种情况: z为正数时,把物体推向屏幕前了,看到的是后投影了, 即z越大则体大 (如图1)

第二种情况: z为负数时,把物体推向屏幕后了,看到的是前投影了,即z越小则体小(如图2)

第三种情况: z正数数时固定时, 则per人眼越大,则物体是越小的,(正常的,因为per就是人眼看屏幕的距离,per近则大和per远则小原则)

第四种情况: 但是z为负数时且固定时 , 则特殊了per人眼越大,则物体越大 ,

图1第一个情况,per一样,translateZ 的值越大离人眼越近,图片越大,因为把物体推向屏幕外了,看到的是投影了。

图2第二个情况,per一样 ,translateZ 的值为负数时,则z越小,投影也越小,看到的也越小

图3第三个情况,translateZ 为0的时候,为什么移动我们perspective人眼到屏幕 的值,图片的大小没有改变呢?

(因为translatez才是真正移动物体的属性, 不移动则没有投影,永远看到都是当前图片自身,)

图4第四个情况,最终解开谜题解释为什么translateZ 为负数之后,减少 perspective 的值后,图片不是变大, 反而变小呢?因为之前都是固定的 perspective 人眼距离,即z为负数的时候,则是

要注意的是, 在调整z轴的位置的时候 用户的视角也会跟着发生变化

为负数之后,减少 perspective 的值后,图片不是变大, 反而变小呢?因为之前都是固定的 perspective 人眼距离,即z为负数的时候,则是

[外链图片转存中…(img-rBkZB7TR-1619633259337)]

要注意的是, 在调整z轴的位置的时候 用户的视角也会跟着发生变化

自学前端第二十二天:perspective视觉相关推荐

  1. 自学前端第二十九天 CSS高级之细节技巧

    第二十九天 css高级细节技巧 一.background-color :属性设置元素的背景颜色. 定义和用法 background-color 属性设置元素的背景颜色. 元素背景的范围 backgro ...

  2. 自学前端第二十五:web字体图标使用

    web字体图标:本质是字体,伪元素联用的 出现一个白色框即字体失效的检查: ①路径那里是不是fonts文件夹的第一子路径就是全部的文件. ②/+unicode编码 和 转义编码 有没有弄棍 (一个给c ...

  3. 自学Python第二十二天- Django框架(一)创建项目、APP、快速上手、请求和响应流程、模板、数据库操作

    Django 框架是一个基于 python 的重量级的 web 开发框架,现今很多大公司大项目都是使用 Django 框架.采用了 MVC(model view controller) 的框架模式,p ...

  4. python 优先级继承_孤荷凌寒自学python第二十二天python类的继承

    (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) python中定义的类可以继承自其它类,所谓继承的概念,我的理解 是,就是一个类B继承自类A,意味着类B的内部代码块中就算不写任何代码,类B仍然 ...

  5. 自学前端第二十六天:flex弹性盒子

    CSS3 弹性布局 flex(给父盒子挂flex帅,让子元素排布练阵) 1.摘自 http://www.ruanyifeng.com/blog/2015/07/flex-grammar.html 布局 ...

  6. 自学Python第二十二天- Django框架(三) AJAX、文件上传、POST 请求类型之间的转换、多APP开发、iframe、验证码、分页器、类视图、中间件、信号、日志、缓存、celery异步

    Django官方文档 django 使用 AJAX django 项目中也可以使用 ajax 技术 前端 前端和其他 web 框架一样,需要注意的是,django 接收 POST 请求时,需要 csr ...

  7. 自学前端第二十四天:Animation动画栈帧效果

    CSS3 帧动画 amimation @keyframes amimation 是transition过渡的高级升级版 1.为什么要 amimation 一帧一帧的具体动画,因为transition进 ...

  8. 自学js第十二天:DOM概念和基础操作

    Web API 总结1: dom文档树的作用,就是把网页全部内容转为一个个js节点对象去操作 , 因此dom的文档树的内部组成就是有许多叶子node节点对象.分别有七种类型的叶子包含网页全部内容都有对 ...

  9. 如何系统地自学前端(女生),女生发展前端是否是青春饭?

    看问题描述,题主应该对互联网开发了解的不多,题主问的就是两方面: 1.女生如何自学前端? 2.女生如果从事前端开发这个工作能不能长远的发展? 最初我入行的时候也有这样的担忧,很正常. 网上大力鼓吹兴趣 ...

最新文章

  1. 在北京做Java开发如何月薪达到两万,需要技术水平达到什么程度?
  2. No module named ‘win32gui’ 以及 No module named ‘win32console’解决办法
  3. 圣剑神域单机版服务器维护,圣剑神域单机版
  4. Spark推荐系列之Word2vec算法介绍、实现和应用说明(附代码)
  5. 2018专转本计算机百度云资源,2018年江苏专转本计算机真题版
  6. java同步异步的区别
  7. from PyQt4 import QtGui,QtCore出错
  8. 联想y7000 Linux显卡驱动,联想Y7000安装ubuntu1804.6双系统和显卡驱动(一)
  9. 区块链技术之P2P网络(一)
  10. unity游戏开发毕设_请问自学Unity开发出一款游戏作为毕设大概要多久?
  11. 程序员中的明星,超模or女团都是程序媛
  12. linux 之pvs磁盘报错
  13. Mac技巧 — QuickTime Player 设置播放速度
  14. Android APP启动其他APP(一个APP拉起(跳转到)另一个APP)
  15. 区块链核心概念(1)
  16. 什么样人适合学平面设计?零门槛入门工具收藏
  17. python输出hello的字符串字数_python 字符串
  18. 电脑突然经常死机?(ubuntu系统如何检查原因)
  19. 万字长文,细说长沙银行的数字化研发管理转型之路
  20. 一种基于智能卡登录Windows系统的实现方式

热门文章

  1. Android入门: 对图片 ImageView的scaleType属性的理解
  2. 经验整理-1-mysqlf索引、sql调优大全、底层结构、SQL分布式事物锁大全总结--100-@
  3. 【pickle】报错整理
  4. clumsy网络异常测试
  5. JVM之深入理解JVM内存结构(Java内存结构/Java内存区域)、Java内存模型
  6. 关闭Anti Aliasing 的情况下单独对3D模型抗锯齿
  7. template 标签 VUE v-slot 用法
  8. b站Java康师傅小小自学5
  9. 微信小程序实现返回顶部
  10. yarn application日志查看