• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

CSS3CSS3 3D 转换 ② ( 3D 透视视图 | “ 透视 “ 概念简介 | 视距和成像关系 | CSS3 “ 透视 “ 属性设置 | “ 透视 “ 语法设置 | 代码展示 )

武飞扬头像
韩曙亮
帮助1





一、" 透视 " 概念简介




1、" 透视 " 概念引入

在本博客中引入 3D 效果 透视视图 Perspective 概念 ;

3D 视图中 产生 3D 效果 , 最终要的是有透视效果 , 通俗的讲 " 透视 " 就是实现 " 近大远小 " 的效果 ;

透视 就是 将 3D 空间中的物体 投影显示到 2D 平面中 ;

透视视图 ( Perspective View ) : 近大远小 , 符合正常人眼观察 3D 世界的规律 ;

  • 近大 : 物体 距离 观察点 ( 视点 ) 比较近时 , 显示效果比较大 ;
  • 远小 : 物体 距离 观察点 ( 视点 ) 比较远时 , 显示效果比较小 ;

下图就是利用了 透视视图 原理 , 照像机离鸟很近 , 离人很远 ;
学新通

2、视距与成像关系

下图中 , 学新通 是 人的眼镜 , 学新通 是 3D 空间中的物体 , 学新通 是一个 2D 平面 , 透视是 将 中间的 3D 物体投射到该 2D 平面中 ;

  • 如果 中间的 3D 物体 向前移动 , 显示在 2D 平面中的投影会变大 ;
  • 如果 中间的 3D 物体 向后移动 , 显示在 2D 平面中的投影会变小 ;

学新通

视距 : 人的 眼睛 到 屏幕 中的距离 , 就是 视距 , 也就是 上图中的 d 距离 ;

  • 视距 越小 , 也就是 视点 与 2D 平面之间 近 , 2D 平面的成像越大 ;
  • 视距 越大 , 也就是 视点 与 2D 平面之间 远 , 2D 平面的成像越小 ;

视距示例 : 看电脑屏幕 , 如果距离比较近 , 则视距小 , 成像较大 , 如 VR 眼睛 , 可以成像很大 ;





二、CSS3 中 " 透视 " 属性设置




1、" 透视 " 语法设置

透视 属性 需要写在 被观察元素 的 父容器 上 ;

透视 属性 语法 :

perspective: d;

设置 透视 属性 值 是 像素 px , 设置的是 视距 , 也就是 视点 到 投影平面 的距离 ;

  • 视距越小 , 成像越大 ;
  • 视距越大 , 成像越小 ;

perspective 透视属性使用示例 :

        body {
            /* 透视 属性 需要写在 被观察元素 的  父容器 上
                视距越小 成像越大 
                如果想要网页中的元素看起来大一些 可以减小视距 */
            perspective: 500px;
        }

2、代码示例 - " 透视 " 语法设置

添加了透视后的代码示例

核心代码如下 : 需要为 div 设置透视效果 , 需要设置到 div 的父容器 body 上 ;

        body {
            /* 透视 属性 需要写在 被观察元素 的  父容器 上
                视距越小 成像越大 
                如果想要网页中的元素看起来大一些 可以减小视距 */
            perspective: 500px;
        }

添加了透视后的代码示例 :

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>3D 转换 - 平移</title>
    <style>
        body {
            /* 透视 属性 需要写在 被观察元素 的  父容器 上
                视距越小 成像越大 
                如果想要网页中的元素看起来大一些 可以减小视距 */
            perspective: 500px;
        }
        
        div {
            width: 200px;
            height: 200px;
            background-color: pink;
            /* 设置 3D 转换 */
            transform: translateX(100px) translateY(100px) translateZ(100px)
        }
    </style>
</head>

<body>
    <div></div>
</body>

</html>
学新通

执行结果

执行结果 :

学新通

学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhgffgjb
系列文章
更多 icon
同类精品
更多 icon
继续加载