css中的3d使用:深入理解 CSS Perspective 与 Transform-Style
在前端开发的奇妙世界中,CSS 不仅负责页面的布局和样式,还能赋予元素生动的动态效果。要实现引人入胜的 3D 变换,perspective
和 transform-style
这两个属性扮演着至关重要的角色。本文将带您深入了解这两个属性,揭开它们如何协同工作,为您的网页增添深度和沉浸感。
犹抱琵琶半遮面:perspective
的奥秘
想象一下,您正站在一个艺术展览馆中,欣赏着悬挂在空中的雕塑。您与雕塑之间的距离感,决定了您观察雕塑不同部分的视角和大小比例。CSS 的 perspective
属性正是模拟了这种视距的概念。
作用: perspective
属性定义了观察者与 z=0 平面之间的距离,简单来说,就是你“眼睛”距离 3D 场景的远近。它控制着 3D 变换元素的透视效果的强烈程度。
适用对象: perspective
属性需要设置在应用 3D 变换的元素的父元素上。它的作用范围是其所有的后代元素。
取值:
none
(默认值): 禁用透视效果。子元素将以扁平的 2D 方式呈现。<length>
: 指定观察者到 z=0 平面的距离,常用的单位是px
。- 值越大: 透视效果越弱,远处的元素缩小不明显,更接近 2D 效果。
- 值越小: 透视效果越强,“近大远小”的效果越显著,远处的元素会明显缩小。
形象理解:
将父元素想象成一个 3D 舞台,perspective
值就是观众席到舞台的距离。距离越近(值越小),舞台上的 3D 效果就越夸张;距离越远(值越大),舞台上的 3D 效果就越缓和。
代码示例:
.stage {width: 300px;height: 200px;border: 1px solid #ccc;perspective: 500px; /* 设置透视距离为 500px */
}.element {width: 100px;height: 100px;background-color: lightcoral;transform: rotateY(45deg) translateZ(50px);
}
在上面的例子中,.stage
容器设置了 perspective: 500px
。内部的 .element
进行了 Y 轴旋转和 Z 轴平移,由于父容器的透视设置,我们可以清晰地感受到 Z 轴平移带来的远近变化。
拨开迷雾见真章:transform-style
的作用
仅仅设置了 perspective
,我们只能感受到整体的透视关系。如果子元素也进行了 3D 变换,我们还需要告诉浏览器如何处理这些子元素在 3D 空间中的呈现方式,这时就需要 transform-style
属性登场了。
作用: transform-style
属性指定了元素的子元素是在 3D 空间中渲染,还是被展平到与父元素相同的 2D 平面中。
适用对象: transform-style
属性通常设置在包含需要进行 3D 变换的子元素的父元素上。
取值:
flat
(默认值): 子元素将被展平到父元素的 2D 平面中。即使子元素应用了 3D 变换,它们在视觉上也会相互叠加,看起来是扁平的。preserve-3d
: 指示子元素应保持其 3D 变换效果,并在真正的 3D 空间中呈现。这意味着子元素可以拥有不同的 z 轴位置,可以相互穿插和遮挡,并且会受到父元素perspective
属性的影响。
形象理解:
flat
: 就像将所有子元素都贴在一张透明的玻璃板上,无论它们进行了何种 3D 变换,最终看起来都是在同一个平面上。preserve-3d
: 就像为父元素创建了一个真实的 3D 空间,子元素可以在这个空间中自由移动和旋转,拥有各自的深度和位置。
代码示例:
.container-2d {width: 200px;height: 200px;border: 1px solid blue;/* transform-style: flat; 默认行为 */
}.container-3d {width: 200px;height: 200px;border: 1px solid green;perspective: 400px; /* 配合 perspective 使用 */transform-style: preserve-3d;
}.item {width: 50px;height: 50px;background-color: gold;position: absolute; /* 便于观察层叠 */
}.item-front {transform: translateZ(20px);
}.item-back {transform: translateZ(-20px) rotateY(180deg);background-color: lightseagreen;
}
在 .container-2d
中,由于默认的 transform-style: flat
,即使 .item-front
和 .item-back
在 Z 轴上有不同的位移,它们看起来仍然是叠加在一起的。
而在 .container-3d
中,设置了 transform-style: preserve-3d
和 perspective
后,.item-front
会在 .item-back
的前方,并且由于 rotateY(180deg)
,我们可以看到 .item-back
的背面,呈现出真正的 3D 翻转效果。
珠联璧合:perspective
与 transform-style
的协同工作
要创建令人信服的 3D 场景和动画,perspective
和 transform-style
通常需要同时使用。
- 在父元素上设置
perspective
来定义观察者的视角和透视效果的强度。 - 在需要包含 3D 变换子元素的父元素上设置
transform-style: preserve-3d
,告诉浏览器在 3D 空间中渲染其子元素。
只有当父元素开启了 3D 渲染上下文 (transform-style: preserve-3d
) 并且定义了观察距离 (perspective
),子元素的 3D 变换(如 translateZ
、3D 旋转等)才能真正产生具有透视感的 3D 效果。
总结
perspective
和 transform-style
是 CSS 3D 变换中不可或缺的两个属性。perspective
赋予了场景深度,模拟了观察者的视觉体验;而 transform-style
则决定了子元素如何在 3D 空间中呈现。掌握这两个属性的用法,将为您的网页设计带来更丰富的视觉层次和更具吸引力的交互体验。现在,不妨动手尝试一下,释放您的创意,打造出令人惊叹的 3D 世界吧!
相关文章:
css中的3d使用:深入理解 CSS Perspective 与 Transform-Style
在前端开发的奇妙世界中,CSS 不仅负责页面的布局和样式,还能赋予元素生动的动态效果。要实现引人入胜的 3D 变换,perspective 和 transform-style 这两个属性扮演着至关重要的角色。本文将带您深入了解这两个属性,揭开它们如何协同…...
在 JMeter 中,Active Threads Over Time 是一个非常有用的监听器(Listener)
在 JMeter 中,Active Threads Over Time 是一个非常有用的监听器(Listener),它可以帮助你实时观察测试过程中活跃线程数(并发用户数)的变化趋势,从而分析系统的并发处理能力和负载情况。 1. Active Threads Over Time 的作用 实时监控并发用户数:显示测试过程中活跃线程…...
未来七轴机器人会占据主流?深度解析具身智能方向当前六轴机器人和七轴机器人的区别,七轴力控机器人发展会加快吗?
六轴机器人和七轴机器人在设计、功能和应用场景上存在明显区别。六轴机器人是工业机器人的传统架构,而七轴机器人则在多自由度和灵活性方面进行了增强。 本文将在理解这两者的区别以及为何六轴机器人仍然是市场主流,从多个方面进行深入解读六轴和七轴区…...
spark-SOL简介
Spark-SQL简介 一.Spark-SQL是什么 Spark SQL 是 Spark 用于结构化数据(structured data)处理的 Spark 模块 二.Hive and SparkSQL SparkSQL 的前身是 Shark,Shark是给熟悉 RDBMS 但又不理解 MapReduce 的技术人员提供的快速上手的工具 …...
【今日三题】经此一役小红所向无敌(模拟) / 连续子数组最大和(动态规划) / 非对称之美(贪心)
⭐️个人主页:小羊 ⭐️所属专栏:每日两三题 很荣幸您能阅读我的文章,诚请评论指点,欢迎欢迎 ~ 目录 经此一役小红所向无敌(模拟)连续子数组最大和(动态规划)非对称之美(贪心) 经此一役小红所向无敌(模拟) 经此一役小红所向无…...
MYSQL MVCC详解
这里写自定义目录标题 **一、MVCC 解决的核心问题****二、MVCC 的核心实现机制****1. 隐藏字段与版本链****2. Undo Log****3. ReadView(一致性视图)** **三、MVCC 的可见性判断过程****四、不同隔离级别下的 MVCC 行为****五、MVCC 的优缺点****六、示例…...
Trinity三位一体开源程序是可解释的 AI 分析工具和 3D 可视化
一、软件介绍 文末提供源码和程序下载学习 Trinity三位一体开源程序是可解释的 AI 分析工具和 3D 可视化。Trinity 提供性能分析和 XAI 工具,非常适合深度学习系统或其他执行复杂分类或解码的模型。 二、软件作用和特征 Trinity 通过结合具有超维感知能力的不同交…...
用 Deepseek 写的uniapp血型遗传查询工具
引言 在现代社会中,了解血型遗传规律对于优生优育、医疗健康等方面都有重要意义。本文将介绍如何使用Uniapp开发一个跨平台的血型遗传查询工具,帮助用户预测孩子可能的血型。 一、血型遗传基础知识 人类的ABO血型系统由三个等位基因决定:I…...
展示数据可视化的魅力,如何通过图表、动画等形式让数据说话
在当今信息爆炸的时代,数据的量级和复杂性不断增加。如何从海量数据中提取有价值的信息,并将其有效地传达给用户,成为了一个重要的课题。数据可视化作为一种将复杂数据转化为直观图形、图表和动画的技术,能够帮助用户快速理解数据…...
解决安卓开发“No Android devices detected.”问题
解决安卓开发“No Android devices detected.”问题 当我们插入移动设备的USB时,却发现这并未显示已连接到的设备 点击右侧的Assistant,根据提示打开移动设备开发者模式并启用USB调试模式,然后发现我们未连接到移动设备的原因是ABD服务的原因 问题确定了&…...
Android13 WIFI调试(rtl8821cs)
一、WiFi框架概述 1、Wi‑Fi 是一种无线通信技术,在 Linux 系统上一般可处于三种工作模式,分别是: STATION、AP、MONITOR。 station :工作sta模式,类比手机主动连网。 ap:工作ap模式,类比手机开热点。 mon…...
Android常见界面控件、程序活动单元Activity练习
第3章 Android常见界面控件、第4章程序活动单元Activity 一. 填空题 1. (填空题)Activity的启动模式包括standard、singleTop、singleTask和_________。 正确答案: (1) singleInstance 2. (填空题)启动一个新的Activity并且获取这个Activity的返回数据ÿ…...
过拟合、归一化、正则化、鞍点
过拟合 过拟合的本质原因往往是因为模型具备方差很大的权重参数。 定义一个有4个特征的输入,特征向量为,定义一个模型,其只有4个参数,表示为。当模型过拟合时,这四个权重参数的方差会很大,可以假设为。当经过这个模型后…...
关于多agent多consumer架构设想
多个agent接入设备 每个agent对接同一个消费队列,非竞争设置,通过判断consumer中的参数如果是发给自己的,则下发,如果不是,则快速跳过。每个消费者接收消息时通过Header中值判断是来着哪个agent服务器的,发…...
国内互联网大厂推出的分布式数据库 的详细对比,涵盖架构、性能、适用场景、核心技术等维度
以下是 国内互联网大厂推出的分布式数据库 的详细对比,涵盖架构、性能、适用场景、核心技术等维度: 一、主流分布式数据库列表 大厂数据库名称类型适用场景发布时间腾讯云TDSQL分布式HTAP金融、电商、游戏、政企2010年阿里云OceanBase分布式HTAP银行核…...
【深度学习】自定义实现DataSet和DataLoader
dataset数据集 作用: 存储数据集的信息获取数据集长度 __len__获取数据集某特定条目的内容 __getitem__ dataloader 数据加载器 作用: 从数据集中随机加载数据, 并拼接为一个 batch实现迭代器, 可以使用时, 迭代获取数据内容 代码实现:…...
spark简介和核心编程
简介 1. Spark-SQL概述:Spark SQL是Spark处理结构化数据的模块,前身是Shark。Shark基于Hive开发,提升了SQL-on-Hadoop的性能,但对Hive的过度依赖制约了Spark发展。SparkSQL抛弃Shark代码,汲取其优点后重新开发&#x…...
47、Spring Boot 详细讲义(四)
六. Spring Boot 与数据库 目录 JDBC 集成 Spring Data JPA MyBatis 集成 事务管理 1、JDBC 集成 1.1 JDBC简介 1.1.1 定义和作用 JDBC(Java Database Connectivity)是Java中用于与关系型数据库进行交互的API。它为Java程序提供了一个标准的、统一的接口…...
Dify - 整合Ollama + Xinference私有化部署Dify平台(01)
文章目录 总体方案服务器在Ubuntu 20.04上安装Docker更新软件包索引安装一些必要的软件包,以便apt能够通过HTTPS使用仓库:添加Docker的官方GPG密钥设置稳定的仓库再次更新软件包索引从新添加的仓库中安装Docker CE验证Docker是否安装成功(可选…...
【RocketMQ】关于RocketMQ配置好了jdk环境变量却一直报需要配置环境变量的问题
正如上图所示,我明明已经配置好了环境变量,也显示配置好了,jdk与我的rocketmq的版本也是适配的,可每次启动namesrv和broker却一直显示要去配置环境变量,其实很简单,配置环境变量时特殊符号会影响路径查找&a…...
【信息系统项目管理师】高分论文:论信息系统项目的范围管理(投资信息化全流程管理项目)
更多内容请见: 备考信息系统项目管理师-专栏介绍和目录 文章目录 1、规划范围管理2、收集需求3、定义范围4、创建wbs5、确认范围6、控制范围2018年2月,我有幸参加了 XX省自贸区财政投资信息化全流程管理项目的假设,作为项目发起单位,省自贸办经过审时度势,及时响应国家自贸…...
Jmeter创建使用变量——能够递增递减的计数器
Jmeter创建使用变量——能够递增递减的计数器 如下图所示,创建一个 取值需限定为0 2 4这三个值内的变量。 Increment:每次迭代后 递增的值,给计数器增加的值 Maximum value:计数器的最大值,如果超过最大值࿰…...
数据分析不只是跑个SQL!
数据分析不只是跑个SQL! 数据分析五大闭环,你做到哪一步了?闭环一:认识现状闭环二:原因分析闭环三:优化表现闭环四:预测走势闭环五:主动解读数据 数据思维:WHY-WHAT-HOW模…...
批量将文件夹名称、文件夹路径提取到 Excel 清单
在日常工作中,管理大量文件夹和文件路径可能变得十分繁琐。无论是在进行文件整理、备份还是数据分析时,提取文件夹的名称与路径信息,能够帮助你更高效地管理文件。本文将为您提供如何快速提取文件夹名称与路径,并将这些信息整理到…...
Git 基本使用
一、Git简介 简单的内容追踪系统;是一个快速、可扩展的分布式版本控制系统,拥有异常丰富的命令集提供高级操作和对内部的完全访问。 二、Git安装 详情看本人此文章。 三、Git 命令(基础版) 把 Git 分为上层封装命令(…...
LLM - Dify 平台介绍
文章目录 引言官网核心功能架构图典型应用场景在线平台 引言 Dify 是一款开源的 LLM(大语言模型)应用开发平台,旨在帮助开发者快速构建、部署和管理基于大语言模型的智能化应用。 官网 https://dify.ai/zh https://github.com/langgenius/…...
linux编译adbd工具使用
在使用linux时,通常是没有现成的adbd文件使用的,这就需要我们进行文件的编译了,编译可以分为三步进行,在编译前我们需要下载对应的源码使用,我们可以从 https://launchpad.net/android-tools地址处下载需要的android-tools源码使用…...
安全人员如何对漏洞进行定级?
CVSS 标准 CVSS 介绍 CVSS,即通用漏洞评分系统(Common Vulnerability Scoring System),是一个用于评估计算机系统漏洞严重程度的行业标准。 CVSS为安全专业人员、漏洞管理团队和系统管理员提供了一种标准化的方法来评估和比较不…...
【ROS2】行为树 BehaviorTree(四):组合使用子树
1、大树调用子树 如下图,左边为大树主干: 1)如果门没有关,直接通过; 2)如果门关闭了,执行开门动作,然后通过 右边为子树,主要任务是开门 1)尝试直接开门; 2)尝试开锁开门,最多尝试5次; 3)最后尝试砸门! XML如何描述大树主干调佣子树:使用关键字 SubTree 来…...
第十六届蓝桥杯Java b组(试题C:电池分组)
问题描述: 输入格式: 输出格式: 样例输入: 2 3 1 2 3 4 1 2 3 4 样例输出: YES NO 说明/提示 评测用例规模与约定 对于 30% 的评测用例,1≤T≤10,2≤N≤100,1≤Ai≤10^3。对于 100…...
HarmonyOS:使用Refresh组件实现页面下拉刷新
一、前言 可以进行页面下拉操作并显示刷新动效的容器组件。 说明 该组件从API Version 8开始支持。后续版本如有新增内容,则采用上角标单独标记该内容的起始版本。该组件从API Version 12开始支持与垂直滚动的Swiper和Web的联动。当Swiper设置loop属性为true时&…...
Python----机器学习(基于PyTorch的垃圾邮件逻辑回归)
Logistic Regression(逻辑回归)是一种用于处理二分类问题的统计学习方法。它基于线性回归 模型,通过Sigmoid函数将输出映射到[0, 1]范围内,表示概率。逻辑回归常被用于预测某个实 例属于正类别的概率。 一、数据集介绍 本例使用了…...
Spark-SQL
概念 Spark SQL 是 Spark 用于结构化数据(structured data)处理的 Spark 模块。 Spark-SQL 特点: 1,易整合,无缝的整合了 SQL 查询和 Spark 编程。 2,统一的数据访问,使用相同的方式连接不同的数据源。 3…...
spark-sql核心
在大数据处理领域,Apache Spark已成为极为重要的分布式计算框架,而Spark SQL作为其重要组件,极大地拓展了Spark的能力边界,为结构化数据处理提供了高效、便捷的解决方案。 一、Spark SQL架构剖析 Spark SQL的架构设计精妙&#…...
TypeScript 进阶指南 - 使用泛型与keyof约束参数
🌷 古之立大事者,不惟有超世之才,亦必有坚忍不拔之志 🎐 个人CSND主页——Micro麦可乐的博客 🐥《Docker实操教程》专栏以最新的Centos版本为基础进行Docker实操教程,入门到实战 🌺《RabbitMQ》…...
labview的VI密码破解程序
上图即为密码破解原理,若需源代码可联系我...
AI技术前沿:蓝耘元生代智算云快速入门教程详解,与其他云人工智能大模型深度对比
文章目录 一、前言二、蓝耘元生代智算云基础概念2.1 什么是智算云2.2 蓝耘元生代智算云的特点 三、蓝耘元生代智算云使用前准备3.1 注册与登录3.2 了解计费方式3.3 熟悉控制台界面 四、在蓝耘元生代智算云上运行第一个任务4.1 创建计算资源4.2 上传代码和数据4.3 安装依赖库4.4…...
Spring MVC 请求处理流程详解
步骤1:用户发起请求 所有请求首先被 DispatcherServlet(前端控制器)拦截,它是整个流程的入口。 DispatcherServlet 继承自 HttpServlet,通过 web.xml 或 WebApplicationInitializer 配置映射路径(如 /&…...
金融行业 AI 报告自动化:Word+PPT 双引擎生成方案
—从数据到决策,10倍效率提升的智能金融解决方案 一、金融行业报告制作的四大核心痛点 1. 人工制作成本高 传统流程耗时: 分析师撰写Word报告:8-12小时/份设计师制作PPT:4-6小时/份团队协作修改:反复沟通,…...
01_JDBC
文章目录 一、概述1.1、什么是JDBC1.2、JDBC原理 二、JDBC入门2.1、准备工作2.1.1、建库建表2.1.2、新建项目 2.2、建立连接2.2.1、准备四大参数2.2.2、加载驱动2.2.3、准备SQL语句2.2.4、建立连接2.2.5、常见问题 2.3、获取发送SQL的对象2.4、执行SQL语句2.5、处理结果2.6、释…...
三层架构与分层解耦:深入理解IOC与DI设计模式
目录 一、软件架构演进与三层架构概述 1.1 从单体架构到分层架构 1.2 经典三层架构详解 1.3 三层架构的优势 二、分层解耦的核心思想 2.1 耦合与解耦的基本概念 2.2 分层解耦的实现手段 2.3 分层解耦的实践原则 三、控制反转(IOC)深度解析 3.1…...
[react]Next.js之自适应布局和高清屏幕适配解决方案
序言 阅读前首先了解即将要用到的两个包的作用 1.postcss-pxtorem 自动将 CSS 中的 px 单位转换为 rem 单位按照设计稿尺寸直接写 px 值,由插件自动计算 rem 值 2.amfe-flexible 动态设置根元素的 font-size(即 1rem 的值)根据设备屏幕宽度和…...
TensorFlow深度学习实战——基于语言模型的动态词嵌入技术
TensorFlow深度学习实战——基于语言模型的动态词嵌入技术 0. 前言1. 基于语言模型的词嵌入1.1 ELMo 与 ULMFiT1.2 GPT1.3 BERT 2. 使用 BERT 作为特征提取器相关链接 0. 前言 基于语言模型的词嵌入技术,通过利用上下文信息来生成动态的词向量,大大提升…...
欧拉服务器操作系统部署deekseep(Ollama+DeekSeep+open WebUI)
一、解压并安装 Ollama # 1. 解压文件(默认会得到一个二进制文件) tar -xzvf ollama-linux-amd64.tgz# 2. 将二进制文件安装到系统路径 sudo mv ollama /usr/local/bin/ sudo chmod x /usr/local/bin/ollama# 3. 验证安装 ollama --version链接…...
cocosCreator安卓隐私弹窗(链接版)
每次新上游戏都要重新弄这个隐私弹窗,记录一下下次直接抄。 一、创建Activity 1 用androidStudio 打开项目并切换到Android视角。 2 右键项目new一个空的Activity 3 修改Activity的名字并完成如下图 二、增加依赖文件 1 增加全局颜色定义文件:项目根目录 / res/values/ …...
统计销量前十的订单
传入参数: 传入begin和end两个时间 返回参数 返回nameList和numberList两个String类型的列表 controller层 GetMapping("/top10")public Result<SalesTop10ReportVO> top10(DateTimeFormat(pattern "yyyy-MM-dd") LocalDate begin,Dat…...
【Python爬虫】简单案例介绍2
本文继续接着我的上一篇博客【Python爬虫】简单案例介绍1-CSDN博客 目录 跨页 3.2 环境准备 跨页 当对单个页面的结构有了清晰的认识并成功提取数据后,接下来就需要考虑页面之间的跨页问题。此时我们便迎来了下一个关键任务:如何实现跨页爬取…...
适合单片机裸机环境的运行的软件定时器框架
如下这篇文档介绍了一个适用于裸机环境的软件定时器模块,其核心功能和实现如下: 模块功能:该模块通过硬件定时器中断实现时基累加,适合用于裸机程序的调度处理。它使用硬件定时中断(如1ms一次)来增加hw_ti…...
【ComfyUI】蓝耘元生代 | ComfyUI深度解析:高性能AI绘画工作流实践
【作者主页】Francek Chen 【专栏介绍】 ⌈ ⌈ ⌈人工智能与大模型应用 ⌋ ⌋ ⌋ 人工智能(AI)通过算法模拟人类智能,利用机器学习、深度学习等技术驱动医疗、金融等领域的智能化。大模型是千亿参数的深度神经网络(如ChatGPT&…...
js的es6模块中 暴露的使用方法简介
在 JavaScript 的 ES6 模块系统中,一个模块文件只能有一个 export default。export default 用于导出一个默认值,这个默认值在导入时可以使用任意名称。 示例: 导出默认值: // myModule.jsexport default function greet() {con…...