热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

perspective

CSSperspective属性用于为一个元素激活3D空间透视效果,使其子元素可以

CSS perspective 属性用于为一个元素激活3D空间透视效果,使其子元素可以被放置在3D空间中。

通过 perspective 属性,可以使元素有远近的三维视觉效果,你可以增加Z轴值,使它更接近观察者,从而显示出更大的图像。或者减少Z轴值,使图像显得更小。

下图是W3C关于透视效果的一张说明图片:

图中蓝色的部分代表一个元素位于三维空间中。字母 d 代表透视度(perspective),它表示观察者的眼睛到屏幕之间的距离。字母 Z 代表元素在3D空间Z轴方向上的位置。元素的Z轴值越大,离观察者越远,看起来越小;Z轴值越小,离观察者越近,看起来越大。

perspective 属性通常和CSS transform 函数一起使用。 perspective 属性的取值可以是一个数据类型值,或者关键字 none 。当该属性的取值不是0或关键字 none 的时候,会为元素创建一个新的。

如果没有为元素设置 perspective 属性,而对它使用3D transform 函数进行转换的话,元素看起来将是二维的平面。

perspective 和 perspective()

当你想将一个元素转换为3D空间的时候,有两种方法。第一种是在元素的父元素上使用 perspective 属性,将其制作为3D空间。第二种是在被转换元素自身上使用 perspective() 函数。这两种方式有什么相同点和区别呢?

使用这两种方法都可以为元素制作3D透视效果,使元素具有远近的3D感觉。元素在Z轴方向的值越大,元素距离观察者就越远,观察者看到的图像就越小。反之,元素距离观察者就越近,观察者看到的图像就越大。

当你为一个元素使用 perspective() 函数的时候,你只为那个元素本身激活了3D透视空间。而使用 perspective 属性,你可以为一个父元素激活3D透视空间,使它里面的所有子元素都共享这个3D空间。

如果你为一个父元素使用了 perspective 属性来制作3D透视空间,同时又为它里面的子元素分别设置不同 perspective() 函数,那么各个子元素的实际效果会和你所期望的有所差别,因为各个子元素都有各自的3D空间和自己的消失点。

默认情况下。一个3D空间的消失点位于中间位置。如果元素不共享同一个3D空间,那么它们各自拥有自己的消失点。因此,使用 perspective() 函数的结果是各个元素都拥有自己的3D空间和消失点。为了避免这种情况的发生,所有元素应该共享一个3D空间。通过在父元素上使用 perspective 属性,可以使所有的子元素共享这个3D空间,拥有共同的消失点。

下面的两幅图片展示了 perspective 属性和 perspective() 函数的效果:

perspective属性设置在父容器元素上,所有子元素共享一个3D空间和消失点。各个元素使用 rotateY() 函数沿Y轴旋转60度。

各个元素拥有自己的 perspective() 函数,它们有各自的3D空间和消失点。
官方语法

perspective: none |

参数:

:使用值来指定观察者到z=0的平面之间的距离。为元素及其内容应用透视变换。当值为0时,无透视变换。长度值不允许为负数。
none :不为元素应用3D透视效果,不会建立3D空间。

perspective 属性的初始值为 none 。

应用范围

perspective 属性可以应用在所有上。

示例代码

取值示例代码如下:

/* 关键字 */
perspective: none;
/* 值 */
perspective: 20px;
perspective: 3.5em;
perspective: inherit;

应用示例代码如下:

.container {
perspective: 1200px;
}
.element {
transform: translateZ(-80px) rotateX(45deg);
}

在线演示

下面是一个3D立方体的例子,通过为立方体的父容器设置不同的 perspective 值,得到不同透视效果的立方体。

perspective: 250px;

perspective: 350px;

perspective: 500px;

主要代码如下:



1

2

3

4

5

6


perspective: 250px;





1

2

3

4

5

6


perspective: 350px;





1

2

3

4

5

6


perspective: 500px;



.pers250 {
perspective: 250px;
-webkit-perspective: 250px;
}
.pers350 {
perspective: 350px;
-webkit-perspective: 350px;
}
.pers500 {
perspective: 500px;
-webkit-perspective: 500px;
}
.container {
display: inline-block;
width: 200px;
height: 200px;
margin: 75px 0 0 30px;
border: none;
}
.cube {
width: 100%;
height: 100%;
backface-visibility: visible;
perspective-origin: 150% 150%;
transform-style: preserve-3d;
-webkit-backface-visibility: visible;
-webkit-perspective-origin: 150% 150%;
-webkit-transform-style: preserve-3d;
}
.face {
display: block;
position: absolute;
width: 100px;
height: 100px;
border: none;
line-height: 100px;
font-family: sans-serif;
font-size: 60px;
color: white;
text-align: center;
}
.front {
background: rgba(0, 0, 0, 0.3);
transform: translateZ(50px);
-webkit-transform: translateZ(50px);
}
.back {
background: rgba(0, 255, 0, 1);
color: black;
transform: rotateY(180deg) translateZ(50px);
-webkit-transform: rotateY(180deg) translateZ(50px);
}
.right {
background: rgba(196, 0, 0, 0.7);
transform: rotateY(90deg) translateZ(50px);
-webkit-transform: rotateY(90deg) translateZ(50px);
}
.left {
background: rgba(0, 0, 196, 0.7);
transform: rotateY(-90deg) translateZ(50px);
-webkit-transform: rotateY(-90deg) translateZ(50px);
}
.top {
background: rgba(196, 196, 0, 0.7);
transform: rotateX(90deg) translateZ(50px);
-webkit-transform: rotateX(90deg) translateZ(50px)
}
.bottom {
background: rgba(196, 0, 196, 0.7);
transform: rotateX(-90deg) translateZ(50px);
-webkit-transform: rotateX(-90deg) translateZ(50px);
}

浏览器支持

CSS perspective 属性的浏览器兼容性可以参考下面的兼容性列表:



推荐阅读
  • 本文整理了常用的CSS属性及用法,包括背景属性、边框属性、尺寸属性、可伸缩框属性、字体属性和文本属性等,方便开发者查阅和使用。 ... [详细]
  • CSS3选择器的使用方法详解,提高Web开发效率和精准度
    本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ... [详细]
  • 在Android开发中,使用Picasso库可以实现对网络图片的等比例缩放。本文介绍了使用Picasso库进行图片缩放的方法,并提供了具体的代码实现。通过获取图片的宽高,计算目标宽度和高度,并创建新图实现等比例缩放。 ... [详细]
  • Html5-Canvas实现简易的抽奖转盘效果
    本文介绍了如何使用Html5和Canvas标签来实现简易的抽奖转盘效果,同时使用了jQueryRotate.js旋转插件。文章中给出了主要的html和css代码,并展示了实现的基本效果。 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了css回到顶部按钮相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 项目需要实现弹幕,网上参考了各种方法,最后觉得transform+transition实现的效果在移动设备上性能最好,在iphone6和红米4上测试,看不到 ... [详细]
  • 人工智能推理能力与假设检验
    最近Google的Deepmind开始研究如何让AI做数学题。这个问题的提出非常有启发,逻辑推理,发现新知识的能力应该是强人工智能出现自我意识之前最需要发展的能力。深度学习目前可以 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 后台获取视图对应的字符串
    1.帮助类后台获取视图对应的字符串publicclassViewHelper{将View输出为字符串(注:不会执行对应的ac ... [详细]
  • 《数据结构》学习笔记3——串匹配算法性能评估
    本文主要讨论串匹配算法的性能评估,包括模式匹配、字符种类数量、算法复杂度等内容。通过借助C++中的头文件和库,可以实现对串的匹配操作。其中蛮力算法的复杂度为O(m*n),通过随机取出长度为m的子串作为模式P,在文本T中进行匹配,统计平均复杂度。对于成功和失败的匹配分别进行测试,分析其平均复杂度。详情请参考相关学习资源。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • position属性absolute与relative的区别和用法详解
    本文详细解读了CSS中的position属性absolute和relative的区别和用法。通过解释绝对定位和相对定位的含义,以及配合TOP、RIGHT、BOTTOM、LEFT进行定位的方式,说明了它们的特性和能够实现的效果。同时指出了在网页居中时使用Absolute可能会出错的原因,即以浏览器左上角为原始点进行定位,不会随着分辨率的变化而变化位置。最后总结了一些使用这两个属性的技巧。 ... [详细]
  • 突破MIUI14限制,自定义胶囊图标、大图标样式,支持任意APP
    本文介绍了如何突破MIUI14的限制,实现自定义胶囊图标和大图标样式,并支持任意APP。需要一定的动手能力和主题设计师账号权限或者会主题pojie。详细步骤包括应用包名获取、素材制作和封包获取等。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了10分钟了解Android的事件分发相关的知识,希望对你有一定的参考价值。什么是事件分发?大家 ... [详细]
  • 为什么三角形与菜单背景的颜色不同? - Why is the triangle a different colour shade to the menu background?
    Imnotunderstandingastowhythetrianglewhichappearswhenthemousehoversoverthemenuitem, ... [详细]
author-avatar
纪志鹏大利集客_776
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有