热门标签 | 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技术对链接下划线进行个性化定制和美化,涵盖了多种实用技巧和方法。通过对CSS属性的灵活运用,可以实现不同风格的下划线效果,提升网页的视觉体验。文中不仅提供了基础的代码示例,还结合实际案例进行了深入解析,帮助读者更好地理解和应用这些技巧。此外,文章还引用了《CSS2.0中文手册》中的相关内容,增加了技术的权威性和实用性。 ... [详细]
  • javascript分页类支持页码格式
    前端时间因为项目需要,要对一个产品下所有的附属图片进行分页显示,没考虑ajax一张张请求,所以干脆一次性全部把图片out,然 ... [详细]
  • 每日前端实战:148# 视频教程展示纯 CSS 实现按钮两侧滑入装饰元素的悬停效果
    通过点击页面右侧的“预览”按钮,您可以直接在当前页面查看效果,或点击链接进入全屏预览模式。该视频教程展示了如何使用纯 CSS 实现按钮两侧滑入装饰元素的悬停效果。视频内容具有互动性,观众可以实时调整代码并观察变化。访问以下链接体验完整效果:https://codepen.io/comehope/pen/yRyOZr。 ... [详细]
  • 使用jqTransform插件美化表单
    jqTransform 是由 DFC Engineering 开发的一款 jQuery 插件,专用于美化表单元素,操作简便,能够美化包括输入框、单选按钮、多行文本域、下拉选择框和复选框在内的所有表单元素。 ... [详细]
  • 网站访问全流程解析
    本文详细介绍了从用户在浏览器中输入一个域名(如www.yy.com)到页面完全展示的整个过程,包括DNS解析、TCP连接、请求响应等多个步骤。 ... [详细]
  • 在《Cocos2d-x学习笔记:基础概念解析与内存管理机制深入探讨》中,详细介绍了Cocos2d-x的基础概念,并深入分析了其内存管理机制。特别是针对Boost库引入的智能指针管理方法进行了详细的讲解,例如在处理鱼的运动过程中,可以通过编写自定义函数来动态计算角度变化,利用CallFunc回调机制实现高效的游戏逻辑控制。此外,文章还探讨了如何通过智能指针优化资源管理和避免内存泄漏,为开发者提供了实用的编程技巧和最佳实践。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 在第10天的夜灵HTML日志中,我们深入探讨了浏览器兼容性和高级选择器的应用。CSS3引入了许多新属性,但在旧版浏览器中的支持情况并不理想。然而,目前主流浏览器的最新版本已全面支持这些新特性。对于那些不支持CSS3新属性的浏览器,我们提供了多种解决方案,以确保网站在不同环境下的兼容性和用户体验。此外,我们还详细讨论了如何利用高级选择器提升页面布局的灵活性和可维护性。 ... [详细]
  • 在HTML5应用中,Accordion(手风琴,又称抽屉)效果因其独特的展开和折叠样式而广泛使用。本文探讨了三种不同的Accordion交互效果,通过层次结构优化信息展示和页面布局,提升用户体验。这些效果不仅增强了视觉效果,还提高了内容的可访问性和互动性。 ... [详细]
  • 期末Web开发综合实践项目:运用前端技术打造趣味小游戏体验
    期末Web开发综合实践项目中,学生通过运用HTML、CSS和JavaScript等前端技术,设计并实现了一款趣味性十足的小游戏。该项目不仅检验了学生对前端基础知识的掌握情况,还提升了他们的实际操作能力和创意设计水平。视频链接展示了项目的最终成果,直观呈现了游戏的互动性和视觉效果。 ... [详细]
  • 本文介绍如何在 Android 中自定义加载对话框 CustomProgressDialog,包括自定义 View 类和 XML 布局文件的详细步骤。 ... [详细]
  • 阿里巴巴终面技术挑战:如何利用 UDP 实现 TCP 功能?
    在阿里巴巴的技术面试中,技术总监曾提出一道关于如何利用 UDP 实现 TCP 功能的问题。当时回答得不够理想,因此事后进行了详细总结。通过与总监的进一步交流,了解到这是一道常见的阿里面试题。面试官的主要目的是考察应聘者对 UDP 和 TCP 在原理上的差异的理解,以及如何通过 UDP 实现类似 TCP 的可靠传输机制。 ... [详细]
  • 本文介绍了如何在iOS平台上使用GLSL着色器将YV12格式的视频帧数据转换为RGB格式,并展示了转换后的图像效果。通过详细的技术实现步骤和代码示例,读者可以轻松掌握这一过程,适用于需要进行视频处理的应用开发。 ... [详细]
  • 通过使用CIFAR-10数据集,本文详细介绍了如何快速掌握Mixup数据增强技术,并展示了该方法在图像分类任务中的显著效果。实验结果表明,Mixup能够有效提高模型的泛化能力和分类精度,为图像识别领域的研究提供了有价值的参考。 ... [详细]
  • 本文探讨了BERT模型在自然语言处理领域的应用与实践。详细介绍了Transformers库(曾用名pytorch-transformers和pytorch-pretrained-bert)的使用方法,涵盖了从模型加载到微调的各个环节。此外,还分析了BERT在文本分类、情感分析和命名实体识别等任务中的性能表现,并讨论了其在实际项目中的优势和局限性。 ... [详细]
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社区 版权所有