iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > html >CSS变形transform(3d)的示例分析
  • 781
分享到

CSS变形transform(3d)的示例分析

2024-04-02 19:04:59 781人浏览 八月长安
摘要

这篇文章将为大家详细讲解有关CSS变形transfORM(3D)的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。坐标轴在了解透视之前,首先要先了解坐标轴。3D变形

这篇文章将为大家详细讲解有关CSS变形transfORM(3D)的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

坐标轴

在了解透视之前,首先要先了解坐标轴。3D变形与2D变形最大的不同就在于其参考的坐标轴不同。2D变形的坐标轴是平面的,只存在x轴和y轴,而3D变形的坐标轴则是x、y、z三条轴组成的立体空间,x轴正向、y轴正向、z轴正向分别朝向右、下和屏幕外

CSS变形transform(3d)的示例分析

透视

透视是transform变形3D中最重要的内容。如果不设置透视,元素的3D变形效果将无法实现。

//下面以rotateX()旋转函数为例,rotateX(45deg)表示元素以X轴方向为轴沿顺时针旋转45角度//左图是无变形和透视样式的原始效果,中图是设置变形和透视样式的效果,右图是设置变形但未设置透视样式的效果

由以上三个图可说明,如果不设置透视,那么浏览器会将元素的3D变形操作投射垂直到2D视平面上,最终呈现出来的只是元素的宽高变化

要深入了解透视,需要了解观察者、被透视元素和变形元素这几个概念。

首先变形元素,顾名思义,就是进行transform3D变形的元素,主要进行transform、transform-origin、backface-visibility等属性的设置。

观察者是浏览器模拟出来的用来观察被透视元素的一个没有尺寸的点,观察者发出视线,类似于一个点光源发出光线。

被透视元素也就是被观察者观察的元素,根据属性设置的不同,它有可能是变形元素本身,也可能是它的父级或祖先其元素(后面会详细介绍),主要进行perspective、perspective-origin等属性的设置

CSS变形transform(3d)的示例分析

透视距离

透视距离perspective是指观察者沿着平行于z轴的视线与屏幕之间的距离,简称视距

CSS变形transform(3d)的示例分析

值: none | <length>

初始值: none

应用于: 非inline元素(包括block、inline-block、table、table-cell等)

继承性: 无

[注意]透视perspective不可为0和负数,因为观察者与屏幕距离为0时或者在屏幕背面时是不可以观察到被透视元素的正面的

[注意]透视perspective不可取百分比,因为百分比需要相对的元素,但z轴并没有可相对的元素尺寸

【1】一般地,物体离得越远,显得越小。反映在perspective属性上,就是该属性值越大,元素的3d效果越不明显。(就像离一个人很近,甚至可以看到他的毛孔;如果离一个人很远,可能只看到一个轮廓)

【2】设置透视perspective属性的元素就是被透视元素。一般地,该属性只能设置在变形元素的父级或祖先级。因为浏览器会为其子级的变形产生透视效果,但并不会为其自身产生透视效果

CSS Code复制内容到剪贴板

  1. <!-- 在本身元素上设置透视无效果 -->   

  2. <div style="float:left;margin-right: 10px;border:2px solid gray;">   

  3.     <div style="perspective: 200px;width: 100px;height: 100px;border:1px solid black;background-color: pink;transform: rotateX(45deg);"></div>   

  4. </div>   

  5.   

  6. <!-- 在父级元素上设置透视有效果 -->   

  7. <div style="perspective: 200px; float:left;margin-right: 10px;border:2px solid gray;">   

  8.     <div style="width: 100px;height: 100px;border:1px solid black;background-color: lightblue;transform: rotateX(45deg);"></div>   

  9. </div>  

透视原点

透视原点perspective-origin是指观察者的位置,一般地,观察者位于与屏幕平行的另一个平面上,观察者始终是与屏幕垂直的。观察者的活动区域是被观察元素的盒模型区域

CSS变形transform(3d)的示例分析

perspective-origin

值: x轴 y轴

初始值: 50% 50%

应用于: 非inline元素(包括block、inline-block、table、table-cell等)

继承性: 无

x轴: left | right | center | <percentage> | <length>y轴: top | bottom | center | <percentage> | <length>

【1】关键字

x轴 left: 0% center: 50% right: 100%y轴 top: 0% center: 50% bottom: 100%

【2】数值

x轴数值表示在x轴上离0点(元素边框外侧左上角)的偏移量;y轴数值表示在y轴上离0点的偏移量

【3】百分比

其中x轴的百分比相对于被透视元素的宽度和(width+横向padding+横向border),而y轴的百分比相对于被透视元素的高度和(height+纵向padding+纵向border)

【4】单个值

当只有一个值时,默认第二个值为center

[注意]perspective-origin必须定义在设置perspective的元素上,也就是说必须设置在元素的父元素或祖先元素上

变形函数

介绍完透视之后,接下来详细介绍关于变形3d的变形函数和变形原点。上篇博文详细介绍了2d变形函数。而3d变形函数也类似,包括位移、旋转和缩放,没有倾斜。

[注意]倾斜skew()是二维变形,不能在三维空间变形,元素可能会在x轴和y轴倾斜,但不能在z轴倾斜

矩阵matrix3d

3d变形函数位移、旋转和缩放都是通过矩阵设置不同的参数而实现的。相比于2d矩阵martrix()的6个参数而言,3d矩阵matrix3d却有12个参数。其变形规则与2dmatrix()类似,只不过是从3*3矩阵,变成了4*4矩阵

matrix3d(a,b,c,0,d,e,f,0,g,h,i,0,j,k,l,1)

CSS变形transform(3d)的示例分析

3d位移

3d位移函数主要包括traslateZ()和translate3d()

translate3d(x,y,z)

[注意]其中,x和y可以是长度值,也可以是百分比,百分比是相对于其本身元素水平方向的宽度和垂直方向的高度和;z只能设置长度值

traslateZ(z)相当于translate3d(0,0,z)

[注意]常用-WEBkit-transform: translateZ(0);来开启硬件加速

[注意]3d位移函数相当于matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,x,y,z,1) 

3d缩放

3d缩放函数主要包括scaleZ()和scale3d()

scale3d(x,y,z)

默认值为scale3d(1,1,1),当参数为负值时,先翻转再缩放

scaleZ(z)相当于scale3d(1,1,z)

[注意]3d位移函数相当于matrix3d(x,0,0,0,0,y,0,0,0,0,z,0,0,0,0,1)

[注意]scaleZ()和scale3d()单独使用时没有任何效果

CSS Code复制内容到剪贴板

  1. .box1 .in{   

  2.     transform: translateZ(-500px);   

  3. }   

  4. .box2 .in{   

  5.     transform: translateZ(-100px);   

  6. }   

  7. .box3 .in{   

  8.     transform: scaleZ(5) translateZ(-100px);   

  9. }  

//下图中从左到右分别是box1,box2,box3。由此得知,box3也相当于向z轴移动了-500px

所以transform: scaleZ(5) translateZ(-100px)和transform: translateZ(-500px)是等价的

3d旋转

3d旋转函数主要包括rotateX()、rotateY()、rotateZ()、rotate3d()

rotate3d(x,y,z,Ndeg)

x、y、z分别用来描述围绕x、y、z轴旋转的矢量值。最终变形元素沿着由(0,0,0)和(x,y,z)这两个点构成的直线为轴,进行旋转。当N为正数时,元素进行顺时针旋转;当N为负数时,元素进行逆时针旋转

rotateX(Ndeg)相当于rotate3d(1,0,0,Ndeg)

rotateY(Ndeg)相当于rotate3d(0,1,0,Ndeg)

rotateZ(Ndeg)相当于rotate3d(0,0,1,Ndeg)

透视函数

上面详细介绍了透视属性perspective,但透视属性应用在变形元素的父级或祖先级。而透视函数perspective()是transform变形函数的一个属性值,应用于变形元素本身

[注意]由于透视原点perspective-origin只能设置于设置了perspective透视属性的元素。若为元素设置透视函数perspective(),则透视原点不起使用,观察者使用默认位置,即元素中心点对应的平面上

perspective(<length>)

透视函数perspective(<length>)的参数只能是长度值,长度值只能是正数

[注意]由于transform属性是从前向后的顺序解析属性值的,所以一定要把perspective()函数写在其他变形函数前面,否则将没有透视效果 

变形原点

变形2d时已经讲过变形原点,2d变形原点由于没有z轴,所以z轴的值默认为0。而3d变形原点的z轴是一个可以设置的变量

transform-origin

值: x轴 y轴 z轴

初始值: 50% 50%

应用于: 非inline元素(包括block、inline-block、table、table-cell等)

继承性: 无

[注意]IE9-浏览器不支持,safari3.1-8、Android2.1-4.4.4、iOS3.2-8.4都需要添加前缀,其他更高版本浏览器可使用标准写法

x轴: left | center | right | <length> | <percentage>y轴: top | center | bottom | <length> | <percentage>z轴: <length>

对于x轴和y轴来说,可以设置关键字和百分比,分别相对于其本身元素水平方向的宽度和垂直方向的高度和;z只能设置长度值

//变形元素默认样式是 transform:rotate3d(1,1,1,45deg);

背景可见

元素的背面默认是可见的。但有时需要让元素背面不可见,这就要用到属性backface-visibility

backface-visibility: 设置元素背面是否可见

visible:可见,默认hidden:不可见

//设置一个元素包含两个半透明子元素绝对定位重叠,内容分别为A和B,来表示一个元素的正面和背面

[注意]若一个元素覆盖于另一个元素上,不仅仅是正面覆盖,背面也是覆盖的

变形风格

变形风格transform-style允许变形元素及其子元素在3d空间中呈现。变形风格有两个值。flat是默认值,表示2d平面;而perserve-3d表示3d空间

[注意]当设置了overflow:非visible或clip:非auto时,transform-style:preserve-3d失效

transform-style: flat | preserve-3d

关于“CSS变形transform(3d)的示例分析”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

--结束END--

本文标题: CSS变形transform(3d)的示例分析

本文链接: https://www.lsjlt.com/news/81030.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • CSS变形transform(3d)的示例分析
    这篇文章将为大家详细讲解有关CSS变形transform(3d)的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。坐标轴在了解透视之前,首先要先了解坐标轴。3D变形...
    99+
    2024-04-02
  • CSS3变形的示例分析
    这篇文章主要介绍了CSS3变形的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。CSS3变形CSS2.1中的页面都是静态的,网页设计师...
    99+
    2024-04-02
  • Pygame Transform图像变形的实现示例
    pygame.transform 模块允许您对加载、创建后的图像进行一系列操作,比如调整图像大小、旋转图片等操作,常用方法如下所示: 下面看一组简单的演示示例: import...
    99+
    2024-04-02
  • CSS变形、过渡的实例分析
    这篇文章主要介绍“CSS变形、过渡的实例分析”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“CSS变形、过渡的实例分析”文章能帮助大家解决问题。   1、过渡tra...
    99+
    2024-04-02
  • CSS变量的示例分析
    这篇文章将为大家详细讲解有关CSS变量的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。随着 Web应用程序变得越来越大,CSS变得越来越大,越来越冗长,而且混乱不...
    99+
    2024-04-02
  • CSS3中设置3D变形的transform-style属性介绍
    这篇文章主要介绍“CSS3中设置3D变形的transform-style属性介绍”,在日常操作中,相信很多人在CSS3中设置3D变形的transform-style属性介绍问题上存在疑惑,小编查阅了各式资料...
    99+
    2024-04-02
  • css矩形对角线的示例分析
    小编给大家分享一下css矩形对角线的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!   这个网站满好的,可以常看看 ...
    99+
    2024-04-02
  • 从css 3d说到空间坐标轴的示例分析
    这篇文章给大家分享的是有关从css 3d说到空间坐标轴的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。  先上效果图:  基本思路:三层结构:视角容器>>载体...
    99+
    2024-04-02
  • css渐变使用角度的示例分析
    这篇文章将为大家详细讲解有关css渐变使用角度的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。     使用角度    ...
    99+
    2024-04-02
  • css3 transform及原生js实现鼠标拖动3D立方体旋转的示例分析
    这篇文章将为大家详细讲解有关css3 transform及原生js实现鼠标拖动3D立方体旋转的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。js的作用是什么1、能够嵌入动态文本于HTML页面。2、...
    99+
    2023-06-08
  • Css技术中线性渐变的示例分析
    小编给大家分享一下Css技术中线性渐变的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!对象选择器 {background...
    99+
    2024-04-02
  • CSS3中变形、过渡、动画属性的示例分析
    小编给大家分享一下CSS3中变形、过渡、动画属性的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! css3中制作动画的...
    99+
    2024-04-02
  • Tailwind CSS的示例分析
    这篇文章主要为大家展示了“Tailwind CSS的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Tailwind CSS的示例分析”这篇文章吧。Tai...
    99+
    2024-04-02
  • JavaScript变量的示例分析
    这篇文章主要为大家展示了“JavaScript变量的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“JavaScript变量的示例分析”这篇文章吧。基本类...
    99+
    2024-04-02
  • Shell变量的示例分析
    这篇文章主要介绍了Shell变量的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。先不要管Shell的版本,来看看Shell 变量,在Shell中有三种变量:系统变量,...
    99+
    2023-06-09
  • Swift变量的示例分析
    这篇文章主要介绍了Swift变量的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。Swift 是苹果推出的编程语言,专门针对 OS X 和 iOS 的应用开发。Swif...
    99+
    2023-06-27
  • css中分组的示例分析
    小编给大家分享一下css中分组的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! 分组提供了一些有意思的选择。例如,下例...
    99+
    2024-04-02
  • CSS中BFC的示例分析
    这篇文章主要介绍CSS中BFC的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、什么是BFC(Block Formatting Context)写CSS样式时,对一个元素设...
    99+
    2024-04-02
  • css中position:sticky的示例分析
    小编给大家分享一下css中position:sticky的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! css po...
    99+
    2024-04-02
  • CSS单位的示例分析
    这篇文章主要介绍了CSS单位的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。   像 px、rem、em、% 这样的长度单位大家肯...
    99+
    2024-04-02
软考高级职称资格查询
推荐阅读
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作