搜索
首页web前端css教程CSS中的3D变换功能

CSS中的3D变换功能

钥匙要点

  • CSS 3D变换函数允许在三个维度上操纵HTML元素:水平X轴,垂直Y轴和深度z轴。这包括rotatex(),rotatey(),rotatez(),translate3d(),translatez(),scale3d()和perspective()。
  • 可以将CSS中的转换属性分配给一个或多个功能,以将转换应用于元素。可以通过空间分离的函数来定义多个转换。默认情况下,可以将转换风格的属性设置为公寓,以将3D定位在3D空间中。 所有现代浏览器都支持
  • CSS 3D变换,但是有一些例外。例如,Internet Explorer不支持Transform-fansfors:Preserve-3D,因此无法创建3D场景。野生动物园需要使用供应商预装-webkit-backface-visibility隐藏后面。 CSS 3D转换中的透视属性定义了对象远离观看者的距离,从而产生了深度的幻觉。透视长度越小,消失点越近,3D效果越明显。
  • 在本文中,我将展示如何在CSS中使用新的3D转换功能和属性为您的网页和应用程序添加另一个维度。我们将研究转换,翻译,旋转,缩放,透视图等,以及与Z Index,浏览器Gotchas和这些功能最佳用例有关的问题。
  • >
  • html元素可以在三个维度上转换:
水平X轴

>

深度z轴

    在二维屏幕上,考虑到Z坐标为零的表面很有用。正面的Z值将对象向您移动(在屏幕前),而负Z值将对象移开(屏幕后面)。当添加透视图时,更遥远的z值会导致对象完全消失。
  • 在这里有一些要注意的事情:
  • CSS只能在三维空间中转换二维HTML元素。元素本身保持平坦,深度为零。可以在z平面中扩展,但这不会
  • 将正方形挤入立方体。您仍然可以创建一个立方体,但需要六个元素才能使每一侧面。
  • > CSS 3D转换非常适合页面效果 - 但不要指望您能够创建下一个Minecraft或“使命召唤”。使用WebGL等技术更好地实施了复杂模型。

在所有现代浏览器(IE10)中,3D变换均得到很好的支持,但是:

  • > Internet Explorer不支持转换风格:Preserve-3D,这使得无法创建3D场景。
  • >所有版本的Safari都必须使用供应商预定的-webkit-backface-visisibility隐藏后面的面孔。所有其他浏览器都支持Backface-Visibil.
>以下各节描述了3D变换属性和功能。演示页面说明了大多数使用的方式。

>

变换属性

任何元素都可以应用单个变换属性。可以为其分配一个或多个参数的函数。例如:

<span><span>.element</span> {
</span>  <span>transform: function1(parameter1, [...parameterN]);
</span><span>}
</span>
如果需要两个或多个转换,则可以定义任何数量的空间分隔函数:>

例如,在水平平面上缩放并垂直转换:

<span><span>.element</span> {
</span>  <span>transform: function1(p1, [...pN]) function2(p1, [...pN]);
</span><span>}
</span>
>最后,变换:无;删除所有现有的变换。

translation(移动)函数
<span><span>.element</span> {
</span>  <span>transform: scaleX(2) translateY(50px);
</span><span>}
</span>

>您可能使用翻译函数将元素水平移动沿x轴或垂直沿y轴移动:

可以使用任何长度单元。百分比参考转换元件的大小,因此施加了翻译(80%)的100px高块将其降低80像素。

进入第三维,我们也可以使用Translatez:
<span>transform: translateX(50px);        /* 50px to right */
</span><span>transform: translateY(-100%);       /* 100% up */
</span><span>transform: translate(50px, -100%);  /* both together */
</span>

给定三个元素,#box1,#box2和#box3,绝对位于同一位置,translatez(-200px)应用于#box2和translatez(-400px)应用于#box3。结果是相当令人鼓舞的:

<span>transform: translateZ(-200px);      /* 200px 'into' the screen */
</span>
但是,如果我们旋转整个外部#Scene容器,则Z轴变换变得更加明显:>

CSS中的3D变换功能

速记translate3d函数允许相应地沿所有三个轴移动一个元素:

<span><span>#scene</span> {
</span>  <span>transform-style: preserve-3d;
</span>  <span>transform: rotateX(-10deg) rotateY(-10deg);
</span><span>}
</span>
>变换风格的属性

默认情况下(始终在IE)中,变换风格设置为平坦。这表明元素的所有转化子女都位于元素本身的平面上。换句话说,内部元素可能会应用任何变换,但它们会被压壁到容器的平面中:CSS中的3D变换功能

在大多数情况下,变换风格:preserve-3d;必须用于指示子元素位于3D空间中,并且容器的任何转换都会相应地转换。
<span>transform: translate3d(50px, 100%, 7em); /* x, y, z axis */
</span>
旋转功能

2D旋转()函数实际上将元素围绕z轴旋转,并且与rotatez()相同。例如:

CSS中的3D变换功能

rotatex()绕水平轴旋转,旋转()绕垂直旋转。

> 可以在:

>中定义角度
  • 转 - 例如0.5转弯是顺时针方向的一半转弯
  • deg - 度,例如90DEG是顺时针
  • 的四分之一转弯
  • rad-弧度,例如-3.1416RAD是逆时针
  • 的一半转弯
  • 毕业 - Gradians。一个完整的转弯为400grad,因此-200Grad是逆时针的一半。
  • >
可以使用旋转3D()函数设置三个旋转轴。有些令人困惑,它接受四个值,它们描述了一个向量:>

x - 表示旋转轴的向量的x坐标(0至1)。
    >
  • y - 表示旋转轴的向量的y坐标(0至1)。
  • z - 表示旋转轴的向量的z坐标(0至1)。 a - 旋转角度。正角表示顺时针旋转和负逆时针。
  • >数学受虐狂可以阅读MDN的rotate3d()的完整详细信息。
  • >
  • 缩放(size)函数
  • 函数scalex()和scaley()伸展或缩小水平和垂直平面中的元素:

scalez()对深度平面的作用相同。在上面的示例中,变换:scalez(0.5);因此,将每个元素之间的间距降低一半。

>

scale3d(x,y,z)函数可以在一个命令中的所有平面中应用比例。例如:

<span><span>.element</span> {
</span>  <span>transform: function1(parameter1, [...parameterN]);
</span><span>}
</span>

变换原点

<span><span>.element</span> {
</span>  <span>transform: function1(p1, [...pN]) function2(p1, [...pN]);
</span><span>}
</span>
默认情况下,将元素旋转并围绕其中心点缩放。可以通过设置最多三个空格分隔值的转换原始物质来修改这一点:>

CSS中的3D变换功能>单值语法:x原点的长度或百分比。也可以使用一个左,中心,右上,顶部或底部关键字,而在顶部和底部设置Y来源的中心x origent。

两值语法:x和y起源。可以使用长度,百分比或关键字。

>

>三值语法:x,y和z起源。 z值只能是一个长度单元,例如PX或EM。

>
  • 移动一个来源会影响其他来源的旋转平面。例如,变换原始:左中心0;将原点移至左侧边缘的中心。这将影响rotatey()和rotatez()函数。
  • >
  • 后面可见性
  • 当元素旋转X或Y轴旋转超过90,但在任一方向上均小于270度时,显示了元件的后部。后部有效地是镜像,默认情况下可见。
  • >
  • 可以通过设置背面可视性来隐藏后部:隐藏; - 如果应用于#box2:

backface-visibily:hidden;通常用于剪卡动画,其中两个元素显示卡的正面和背面,但一次只能看到一个。

透视

上面显示的示例不应用观点。无论距观众有多远,一个元素都会更深地移入Z平面。透视属性默认为没有,但可以将其设置为任何正长度。例如:

<span><span>.element</span> {
</span>  <span>transform: function1(parameter1, [...parameterN]);
</span><span>}
</span>

CSS中的3D变换功能

越小的视角长度,消失点越近,越明显的3D效果:

<span><span>.element</span> {
</span>  <span>transform: function1(p1, [...pN]) function2(p1, [...pN]);
</span><span>}
</span>

CSS中的3D变换功能

透视化点

默认情况下,视角消失点是要转换的元素的中心。可以通过设置透视原蛋白:x y;,where:来修改它。

    x是一个关键字(左中的,中心或右)或相对于元素宽度的百分比(0%,50%和100%等于关键字)。
  • > 相对于元素高度(0%,50%和100%等于关键字),
  • y是关键字(顶部,中心或底部)或百分比。
  • >左上角消失点:

<span><span>.element</span> {
</span>  <span>transform: scaleX(2) translateY(50px);
</span><span>}
</span>

CSS中的3D变换功能右下角消失点:

<span>transform: translateX(50px);        /* 50px to right */
</span><span>transform: translateY(-100%);       /* 100% up */
</span><span>transform: translate(50px, -100%);  /* both together */
</span>

CSS中的3D变换功能>还有一个perspective()函数 - 用于审查,转换:透视(200px)。但是,它似乎并不尊重任何观点。

>现在一起

最后,可以在单个Matrix3d()函数中定义缩放,旋转和翻译,该函数需要三维仿射转换的值不少于16个值。>

>这可能是在JavaScript中使用的,并由具有几何学学位的人尝试!对于CSS,转换功能的列表可能更可读和可维护。

进一步阅读

在概念上,在三个维度上工作可能很困难,但是CSS转换是对象操作的更容易的途径。演示页面提供了一个交互式工具,该工具将帮助您了解属性和功能如何一起工作。

>您可以找到CSS 3D转换的惊人示例,包括虚拟现实观众,第一人称射击游戏,图像画廊和星球大战滚动文字。许多是概念验证示范,不太可能在典型的项目中使用。但是,一些微妙的,逐渐增强的3D效果可以为您的网页和应用程序添加另一个维度。

>

    使用CSS转换
  • MDN
  • > CSS转换模块
  • > CSS 3D介绍

>有关CSS 3D变换功能的常见问题

> CSS中的基本3D转换功能是什么?基本功能包括rotatex(),rotatey(),rotatez(),translate3d(),translatez(),scale3d()和perspective()。每个功能对元素都有独特的影响。例如,rotatex()将元素围绕x轴旋转,而translatez()沿z轴移动元素。这些函数可以组合起来创建复杂的3D变换。

> perspective()函数如何在CSS 3D变换中起作用?

perspective()在CSS 3D变换中函数定义对象的距离。远离用户。它在3D转化的元素中产生了深度和观点的幻想。该函数采用一个参数,这是像素中的透视值。较低的值比更高的值创造了更明显的透视效果。

我可以在CSS中结合多个3D转换函数吗?这是通过在变换属性中列出每个函数(由空间隔开)来完成的。这些功能以列出的顺序应用。这使您可以通过结合旋转,翻译和缩放来创建复杂的3D效果。

> CSS中的2D和3D转换之间的区别是什么? CSS是发生转换的维度。 2D变换会影响X和Y轴中的元素,而3D变换也包括Z轴,为转换增加了深度。这意味着3D变换可以在三个维度上旋转,移动和缩放元素,从而产生更身临其境和动态的效果。

>

>如何控制CSS 3D转换中的后面可见性? CSS中的后面可见性属性控制元素的背面是否在不面对查看器时是否可见。该属性在元素旋转且后面变得可见的3D变换中特别有用。该属性采用两个值:“可见”,显示后面和“隐藏”。 CSS 3D转换中的转换 - 原始属性使您可以为转换指定原点。默认情况下,转换起源于元素的中心。但是,您可以使用Transform-Origin属性将其更改为元素中的任何点。该属性采用两个或三个值,代表x,y和可选为z轴。

>。

>我可以动画CSS 3D变换吗?这使您可以创建平稳,渐进的转换,从而增强用户体验。您可以使用各自的CSS属性控制动画的持续时间,时序函数和延迟。

>是否在所有浏览器中支持CSS 3D变换?

>

大多数现代浏览器支持CSS 3D变换。但是,最好检查每个功能的特定浏览器支持,因为某些旧版本可能无法完全支持所有功能。您可以使用诸如我可以使用的工具检查CSS 3D变换的当前浏览器支持。

如何使用CSS 3D变换创建3D翻转效果?通过将rotatey()或rotatex()函数与过渡相结合,使用CSS 3D变换创建。旋转函数将元素围绕其Y或X轴翻转,而过渡会创建翻转动画。您可以使用过渡 - 持续和过渡 - 插入功能的速度控制翻转的速度和时机。

>

> CSS 3D转换中的matrix3d()函数是什么? )CSS 3D转换中的功能使您可以指定包含16个值的4×4转换矩阵。此功能可以代表任何3D变换,使其成为创建复杂3D效果的强大工具。但是,使用它可能非常复杂,因为它需要对矩阵数学有深刻的了解。

>

以上是CSS中的3D变换功能的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
什么是CSS网格?什么是CSS网格?Apr 30, 2025 pm 03:21 PM

CSS网格是创建复杂,响应式Web布局的强大工具。它简化了设计,提高可访问性并提供了比旧方法更多的控制权。

什么是CSS Flexbox?什么是CSS Flexbox?Apr 30, 2025 pm 03:20 PM

文章讨论了CSS FlexBox,这是一种布局方法,用于有效地对齐和分布响应设计中的空间。它说明了FlexBox用法,将其与CSS网格进行了比较,并详细浏览了浏览器支持。

我们如何使用CSS使网站迅速响应?我们如何使用CSS使网站迅速响应?Apr 30, 2025 pm 03:19 PM

本文讨论了使用CSS创建响应网站的技术,包括视口元标签,灵活的网格,流体媒体,媒体查询和相对单元。它还涵盖了使用CSS网格和Flexbox一起使用,并推荐CSS框架

CSS盒装属性有什么作用?CSS盒装属性有什么作用?Apr 30, 2025 pm 03:18 PM

本文讨论了CSS盒装属性,该属性控制了元素维度的计算方式。它解释了诸如Content-Box,Border-Box和Padding-Box之类的值,以及它们对布局设计和形式对齐的影响。

我们如何使用CSS动画?我们如何使用CSS动画?Apr 30, 2025 pm 03:17 PM

文章讨论使用CSS,关键属性并与JavaScript结合创建动画。主要问题是浏览器兼容性。

我们可以使用CSS向我们的项目添加3D转换吗?我们可以使用CSS向我们的项目添加3D转换吗?Apr 30, 2025 pm 03:16 PM

文章讨论了Web项目的3D转换,关键属性,浏览器兼容性和性能注意事项的讨论。(角色计数:159)

我们如何在CSS中添加梯度?我们如何在CSS中添加梯度?Apr 30, 2025 pm 03:15 PM

文章讨论了使用CSS梯度(线性,径向,重复)来增强网站视觉效果,添加深度,焦点和现代美学。

CSS中的伪元素是什么?CSS中的伪元素是什么?Apr 30, 2025 pm 03:14 PM

文章讨论了CSS中的伪元素,它们在增强HTML样式方面的使用以及与伪级的差异。提供实用的例子。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器