返回顶部
首页 > 资讯 > 精选 >使用CSS3怎么实现2D与3D的变换
  • 947
分享到

使用CSS3怎么实现2D与3D的变换

2023-06-08 07:06:15 947人浏览 八月长安
摘要

这篇文章给大家介绍使用css3怎么实现2D与3D的变换,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。CSS甚至一下设备相关的开发中,基本都遵循这样一套坐标系:以手机屏幕为例,坐标系 圆点 位于屏幕最左上角; x轴 水平

这篇文章给大家介绍使用css3怎么实现2D与3D的变换,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

CSS甚至一下设备相关的开发中,基本都遵循这样一套坐标系:以手机屏幕为例,坐标系 圆点 位于屏幕最左上角; x轴 水平,向右为正方向; y轴 垂直,向下为正方向; z轴 垂直于整个屏幕平面,向外为正方向,就是屏幕光线射向你眼睛的方向;

如图:

使用CSS3怎么实现2D与3D的变换

2D变换

包括平移 translate() ,旋转 rotate() ,缩放 scale() ,倾斜 skew() ,矩阵 matrix()

translate(x,y)

平移操作,包括 translateX(x) , translateY(y) ,括号内填平移参数值,可以是负值,即反方向;

例如:

div {        transfORM: translateX(50px);    transform: translateY(60px);}div {    transform: translate(50px, 60px);}

注意 translate() 只指定一个值则默认是 x轴 位移,即水平移动;

rotate(deg)

元素旋转,括号中参数为旋转角度, 顺时针 为正值, 逆时针 为负值,单位为 deg ,即多少度;

例如:

div {        transform: rotate(30deg);}

使用CSS3怎么实现2D与3D的变换

scale(x,y)

缩放元素,参数分别为x轴,y轴缩放倍数,包括 scaleX(x)scaleY(y) ,提供一个参数表示 按比例 缩放;

例如:

div {        transform: scale(.5, 2);}

使用CSS3怎么实现2D与3D的变换

div {        transform: scale(3);}

使用CSS3怎么实现2D与3D的变换

skew(xdeg,ydeg)

包含 skewX(deg) , skewY(deg) ,表示在水平和垂直方向倾斜的角度;

例如:

div {    transform: skewX(30deg);    transform: skewY(45deg);}div {    transform: skew(30deg, 45deg);}

需要 注意 ,如果元素为一个矩形,那么 skewX(30deg) 表示矩形 顶边固定 ,底边 向右 倾斜 30degskewY(30deg) 表示矩形 左边框固定 ,右边框 向下 倾斜 30deg

可以根据上面讲的屏幕坐标系来记忆,x轴位于屏幕顶部,方向向右;y轴位于屏幕左部,方向向下;

如果 skew() 只指定一个值,默认是 水平倾斜

skewX(30deg)的效果:

使用CSS3怎么实现2D与3D的变换

skewY(30deg)的效果:

使用CSS3怎么实现2D与3D的变换

matrix(a,b,c,d,e)

这是一个综合属性,之前的平移,缩放,旋转,倾斜都能通过这个矩阵函数实现,对,大学里 线性代数 中的矩阵 T_T;

其实这个函数就是前面四种操作的 原理 ,函数共有六个参数,四种操作都对应不同的参数改变方式,像我们这种非数学专业的就不赘述原理了,前面的操作基本够用了(想寻找刺激就去百度“css matrix”吧)~~;

3D变换

所谓3D就是在前面2D平面上多了一个 z轴 ,方法名也差不多,然后能以分别以三根轴位基准进行变换,实现立体效果;

看一下所有3D操作方法:

translate3d(x,y,z)

结合前面讲的空间坐标系和 x, y, z轴的位置,三个参数分别对应元素在三个坐标轴方向的平移值,也包含三个方法 translateX(x) , translateY(y) , translateZ(z)

举例:

div {    transform: translateX(50px);    transform: translateY(60px);    transform: translateZ(70px);}div {    transform: translate3d(50px, 60px, 70px);}

注意:关于设置 translateZ(z) 看不出效果的问题,后面说到设置 persoective 时会解释;

rotate3d(x,y,z,deg)

参数 x, y, z 为空间坐标系的一个坐标位置,然后由原点 (0, 0, 0) 指向这个点形成一个有方向的新轴,数学中称矢量,最后一个参数就是元素围绕刚才所形成的新轴旋转的度数;

也包括 rotateX(deg) , rotateY(deg) , rotateZ(deg) ,之前2D的 rotate() 便是这里的 rotateZ()

至于旋转的方向,判断方法类似于物理中的 左手定则 :角度指定为正的话,左手拇指与四指垂直,拇指指向元素围绕旋转的坐标轴或自定义轴,四指弯曲围绕方向就是旋转方向;

举例:

div {    transform: rotateX(30deg);    transform: rotateY(30deg);    transform: rotataZ(30deg);}div {    transform: rotate3d(10, 10, 10, 30deg);}

rotateX(30deg)的效果:

使用CSS3怎么实现2D与3D的变换

rotateY(30deg)的效果:

使用CSS3怎么实现2D与3D的变换

关于为什么这里的旋转不是想象中的效果,而是缩小,主要是没有设置视点,后面会讲;

scale3d(x,y,z)

元素关于三个轴的缩放比例,包括 scaleX(x) , scaleY(y) , scaleZ(z) ,举例:

div {    transform: scaleX(2);    transform: scaleY(2);    transform: scaleZ(2);}div {    transform: scale3d(2, 2, 2);}

需要 注意 这里的 scaleZ() ,正常情况下,扩大z轴会是物体 变厚 ,但是css里面呈现的平面元素并没有 厚度 ,所以这里的缩放z轴其实是缩放元素在z轴的 坐标 ,所以要有效果必须要指定 translateZ() 的值;

举例:

body {    perspective: 500;}div {        transform: scaleZ(2) translateZ(100px);}

使用CSS3怎么实现2D与3D的变换

按照上面样式才能看到 scaleZ(2) 的效果,因为后面在z轴上移动了 100px ,缩放比例为2,最终会移动 200px ,屏幕上则表现为元素放大了一下,这是透视效果,就是那个 perspective 值,下面会讲到;

matrix3d()

和前面2D的 matrix() 相似,只不过这里括号里的参数有 16个 ,矩阵更加复杂,跳过吧﹋o﹋,有兴趣可以自行百度~~;

perspective

在上面的示例中,有关z轴的平移和缩放通常情况下是看不出效果的,正是缺少这项属性值,叫做 透视 ,美术或设计中会出现这个词汇,就是实现物体近大远小的效果,远小最终会小到一个点,那就是 透视点perspective 就是用来设置那个点距离元素有多远,一般300~600很体现很好的透视效果, 值越小元素透视变形越严重

需要 注意 的是,这项属性设置在应用透视效果元素的 父元素 的样式中,才能看出效果,例如:

body {    perspective: 500;        -WEBkit-perspective: 500;}

也可以设置在元素本身,格式为:

div {    transform: perspective(500);    -webkit-transform: perspective(500);}

rotateX(45deg)的更真实的效果:

使用CSS3怎么实现2D与3D的变换

rotateY(45deg)的效果:

使用CSS3怎么实现2D与3D的变换

perspective-origin

此项设置透视点的位置,默认在元素几何中心,需要设置的话,格式如下:

body {        perspective-origin: center center;        perspective-origin: left top;        perspective-origin: right center;        perspective-origin: bottom center;        perspective-origin: 30px 40px;    }

perspective-origin: left center的效果:

使用CSS3怎么实现2D与3D的变换

perspective-origin: right center的效果:

使用CSS3怎么实现2D与3D的变换

backface-visibility

翻译过来叫背面是否可见,可以设置 visiblehidden ,默认可见,比如元素正面有文字,设置背面可见,则关于y轴旋转180°后元素内文字变成镜像,否则不会出现;

backface-visibility: visible的效果:

使用CSS3怎么实现2D与3D的变换

backface-visibility: hidden的效果(有旋转,只是背面不可见,则看不见了):

使用CSS3怎么实现2D与3D的变换

其他属性

transform-origin

设置2D/3D变化的基准,可以是长度值,也可以是 left, right, top, bottom ,例如:

div {        transform-origin: left top;    transform: rotate(30deg);}

使用CSS3怎么实现2D与3D的变换

transform-style

设置元素如何在3D空间呈现被嵌套的元素,选择是 flatpreserve-3d ,默认 flat

这里这么来理解,之前我们对一个元素执行变换时,都是以屏幕所在平面的坐标系在变换,但是元素如果存在子元素的话, transform-style 就是用来确定在哪套坐标系上进行变换, flat 表示任然以屏幕坐标系为基准, preserve-3d 表示以 变换后的父元素所在平面的坐标系 为基准;

#parent {    transform-style: preserve-3d;    -webkit-transform-style: preserve-3d;    transform: perspective(500) rotateY(45deg);    -webkit-transform: perspective(500) rotateY(45deg);}#child {    transform: perspective(500) rotateX(45deg);    -webkit-transform: perspective(500) rotateX(45deg);}

flat的效果:

使用CSS3怎么实现2D与3D的变换

preserve-3d的效果:

使用CSS3怎么实现2D与3D的变换

例如,父元素绕x轴旋转了45度,并且设置 transform-style: preserve-3d ,而嵌套的子元素只绕y轴旋转45度,那么最终效果就是子元素绕父元素平面的y轴旋转了45度,看起来就像先x轴转45度后y轴转45度的效果;

关于使用CSS3怎么实现2D与3D的变换就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

--结束END--

本文标题: 使用CSS3怎么实现2D与3D的变换

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

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

猜你喜欢
  • 使用CSS3怎么实现2D与3D的变换
    这篇文章给大家介绍使用CSS3怎么实现2D与3D的变换,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。css甚至一下设备相关的开发中,基本都遵循这样一套坐标系:以手机屏幕为例,坐标系 圆点 位于屏幕最左上角; x轴 水平...
    99+
    2023-06-08
  • css3怎么实现2D变形
    今天小编给大家分享一下css3怎么实现2D变形的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧...
    99+
    2024-04-02
  • 怎么利用HTML5+CSS3实现3D转换效果
    这篇文章主要为大家展示了“怎么利用HTML5+CSS3实现3D转换效果”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“怎么利用HTML5+CSS3实现3D转换效果...
    99+
    2024-04-02
  • 怎么在CSS3中实现3D酷炫立方体变换动画
    这期内容当中小编将会给大家带来有关怎么在CSS3中实现3D酷炫立方体变换动画,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。代码如下:<!DOCTYPE html><html&n...
    99+
    2023-06-08
  • 怎么使用CSS3实现一个3D相册
    这篇文章给大家分享的是有关怎么使用CSS3实现一个3D相册的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。布局直接看html布局:    <div class...
    99+
    2023-06-08
  • 使用css3怎么实现一个魔方3d效果
    使用css3怎么实现一个魔方3d效果 ?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。css是什么意思css是一种用来表现HTML或XML等文件样式的计算机语言,...
    99+
    2023-06-08
  • 使用CSS3怎么实现一个3D翻转效果
    本篇文章给大家分享的是有关使用CSS3怎么实现一个3D翻转效果,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。第一步非常简单,我们简单画1个演示方块,为其 添加transitio...
    99+
    2023-06-08
  • 如何使用CSS3实现3D动画
    小编给大家分享一下如何使用CSS3实现3D动画,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! 一、动画属性 1.transf...
    99+
    2024-04-02
  • css3中怎么实现隔行变换色
    css3中怎么实现隔行变换色,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。 代码如下:<head>&n...
    99+
    2024-04-02
  • 使用canvas怎么实现2d画布
    使用canvas怎么实现2d画布?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一. Canvas是啥< canvas > 是一个可以使用脚本(通常是js)来绘图的H...
    99+
    2023-06-09
  • HTML与CSS中2D转换模块怎么用
    这篇文章主要介绍“HTML与CSS中2D转换模块怎么用”,在日常操作中,相信很多人在HTML与CSS中2D转换模块怎么用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”HTML...
    99+
    2024-04-02
  • 怎么使用CSS 3D变换创建等距布局
    这篇文章将为大家详细讲解有关怎么使用CSS 3D变换创建等距布局,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。   css创建一个3d空间   我们从Envato的最...
    99+
    2024-04-02
  • CSS3中怎么实现文本3D效果
    CSS3中怎么实现文本3D效果,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。代码如下:<!DOCTYPE ht...
    99+
    2024-04-02
  • 怎么利用html5和css3实现的3D滚动特效
    本篇内容介绍了“怎么利用html5和css3实现的3D滚动特效”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成...
    99+
    2024-04-02
  • 使用CSS3怎么实现颜色渐变效果
    本篇文章给大家分享的是有关使用CSS3怎么实现颜色渐变效果,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。<h2 class="site__title&...
    99+
    2023-06-08
  • CSS3怎么实现换行
    本篇内容介绍了“CSS3怎么实现换行”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!   &nb...
    99+
    2024-04-02
  • CSS3 中怎么实现3D旋转rotate效果
    本篇文章为大家展示了CSS3 中怎么实现3D旋转rotate效果,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。效果图:示例代码XML/HTML Code复制内容到剪...
    99+
    2024-04-02
  • css3怎么实现3D色子翻转特效
    本篇内容主要讲解“css3怎么实现3D色子翻转特效”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“css3怎么实现3D色子翻转特效”吧!css3使我们能够跳出2d...
    99+
    2024-04-02
  • css3怎么实现3d旋转动画特效
    这篇文章主要介绍“css3怎么实现3d旋转动画特效”,在日常操作中,相信很多人在css3怎么实现3d旋转动画特效问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”css3怎么实现...
    99+
    2024-04-02
  • CSS3怎么实现3D星空动画特效
    这篇文章主要介绍“CSS3怎么实现3D星空动画特效”,在日常操作中,相信很多人在CSS3怎么实现3D星空动画特效问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”CSS3怎么实现3D星空动画特效”的疑惑有所帮助!...
    99+
    2023-06-04
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作