iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > JavaScript >CSS3如何制作酷炫的3D旋转透视
  • 646
分享到

CSS3如何制作酷炫的3D旋转透视

2024-04-02 19:04:59 646人浏览 安东尼
摘要

css3如何制作酷炫的3D旋转透视,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。立方体 3D 旋转3D 透视照片墙跳跃的音符可能上面的效果对精

css3如何制作酷炫的3D旋转透视,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。

立方体 3D 旋转

CSS3如何制作酷炫的3D旋转透视

3D 透视照片墙

CSS3如何制作酷炫的3D旋转透视

跳跃的音符

CSS3如何制作酷炫的3D旋转透视

可能上面的效果对精通 CSS3 的而言小菜一碟,写本文的目的也是我自己学习积累的一个过程,感兴趣的就可以一起往下看啦。

其实 CSS3 效果真的很强大,上面的效果都是纯 CSS 实现,个人感觉越是深入 CSS 的学习,越是觉得自己不懂 CSS ,不过话说回来,这些效果的实用场景不大,但是作为一个有追求的前端,我觉得还是有必要去好好了解一下这些属性。

所以本文接下来要讲的大概有:

transfORM-style:preserve-3d三维效果perspective andperspective-origin 3D视距,透视/景深效果CSS3filter CSS3滤镜transparent、radial-gradient 透明与渐变

transform-style

要利用 CSS3 实现 3D 的效果,最主要的就是借助transform-style 属性。transform-style 只有两个值可以选择:

CSS Code复制内容到剪贴板

  1. // 语法:   

  2. transform-style: flat|preserve-3d;   

  3. transform-style: flat; // 默认,子元素将不保留其 3D 位置   

  4. transform-style: preserve-3d; // 子元素将保留其 3D 位置。  

当我们指定一个容器的transform-style 的属性值为preserve-3d 时,容器的后代元素便会具有 3D 效果,这样说有点抽象,也就是当前父容器设置了preserve-3d 值后,它的子元素就可以相对于父元素所在的平面,进行 3D 变形操作。

当父元素设置了 transform-style:preserve-3d 后,就可以对子元素进行 3D 变形操作了,3D 变形和2D 变形一样可以,使用 transform 属性来设置,或者可以通过制定的函数或者通过三维矩阵来对元素变型操作:

1、使用translateX(length) 、translateY(length) 、 translateZ(length) 来进行 3D 位移操作,与 2D 操作一样,对元素进行位移操作,也可以合并为translate3d(x,y,z) 这种写法;

2、使用scaleX() 、scaleY() 、scaleY() 来进行3D 缩放操作,也可以合并为 scale3d(number,number,number)这种写法;

3、使用rotateX(angle) 、rotateY(angle) 、rotateZ(angle) 来进行 3D 旋转操作,也可以合并为rotate3d(Xangle,Yangle,Zangle) 这种写法。

对于 api 的学习,我建议去源头看看,不要满足于消费别人的总结,transform-style API。

这里要特别提出的,3D 坐标轴,所谓的绕 X、Y、Z 轴的三个轴,这个不难,感觉空间想象困难的,照着 API 试试,绕每个轴都转一下就明白了:

CSS3如何制作酷炫的3D旋转透视

了解过后,那么依靠上面所说的,其实我们就已经可以做一个立方体出来了。所谓实践出真知,下面就看看该如何一步步得到一个立方体。

1、准备六个正方形

这个好理解,正方体六个面,首先用 div 做出 6 个面,包裹在同一个父级容器下面,父级容器设置transform-style:preserve-3d ,这样接下来就可以对 6 个面进行 3D 变换操作,为了方便演示,我用 6 个颜色不一样的面:

CSS3如何制作酷炫的3D旋转透视

上面的图是示意有 6 个面,当然我们要把 6 个正方形 div 设置为绝对定位,重叠叠在一起,那么应该是这样的,只能看到一个面:

CSS3如何制作酷炫的3D旋转透视

2、父容器做简单的变换

为了最后的看上去的效果好看,我们需要先对父容器进行变换,运用上面说的rotate 属性,将容器的角度改变一下:

CSS Code复制内容到剪贴板

  1. .cube-container{   

  2.     -WEBkit-transform: rotateX(-33.5deg) rotateY(45deg);   

  3.     transform: rotateX(-33.5deg) rotateY(45deg);   

  4. }  

那么,变换之后,得到这样一个图形:

CSS3如何制作酷炫的3D旋转透视

嗯,这个时候,6 个 div 面仍然是重叠在一起的。

3、对每个面做 3D 变换

接下来就是对每个面进行 3D 变换了,运用 rotate 可以对div 平面进行旋转,运用 translate 可以对 div 平面进行平移,而且要记住现在我们是在三维空间内变换,转啊转啊,我们可能会得到这样的形状:

CSS3如何制作酷炫的3D旋转透视

算好旋转角度和偏移距离,最后上面的 6 个面就可以完美拼成一个立方体咯!为了效果更好,我给每个面增加一些透明度,最后得到一个完整的立方体:

CSS3如何制作酷炫的3D旋转透视

为了更有立体感,我们可以调整父容器的旋转角度,旋转看上去更立体的角度:

CSS3如何制作酷炫的3D旋转透视

至此,一个 3D 立方体就完成了。写这篇文章的时候,本来到这里,这一块应该就结束了,但是写到这里的时候,突然突发奇想,既然正方体可以(正六面体),那么正四面体,正八面体甚至球体应该也能做出来吧?

嗯,没有按住躁动的心,立马动手尝试了一番,最后做出了下面的两个:

CSS3如何制作酷炫的3D旋转透视

CSS3如何制作酷炫的3D旋转透视

就不再详细讨论如何一步一步得到这两个了,有兴趣的可以去我的 GitHub 上看看源码,或者直接和我讨论交流,简单的谈谈思路:

正四面体

和正方体一样,我们首先要准备 4 个三角形(下面会详细讲如何利用 CSS3 制作一个三角形 div),注意 4 个三角形应该是重叠在一起的,然后将其中三个分别沿着三条边的中心点旋转 70.5 度(正四面体临面夹角),就可以得到一个正四面体。

注意沿着三条边的中心点旋转 70.5 度这句话,意思是每个图形要定位一次旋转中心,也就是transform-origin 属性,它允许我们设置旋转元素的基点位置。

球体

上面的 GIF 图因为添加了 animation 动画效果,看上去很像一个球体在运动,其实只用了 4 个 div,每个 div 利用 border-radius:100% 设置为圆形,然后以中心点为基准,每个圆形 div 绕 Y 轴旋转不同的角度,再让整个圆形容器绕 Y 轴动起来,就可以得到这样一个效果了。

perspective andperspective-origin 3D视距,透视/景深效果

继续说 3D ,接下来要说的属性是 persepective 和 perspective-origin 。

persepective

CSS Code复制内容到剪贴板

  1. // 语法   

  2. perspective: number|none;  

perspective 为一个元素设置三维透视的距离,仅作用于元素的后代,而不是其元素本身。

简单来说,当元素没有设置 perspective时,也就是当 perspective:none/0 时所有后代元素被压缩在同一个二维平面上,不存在景深的效果。

而如果设置 perspective后,将会看到三维的效果。

perspective-origin

perspective-origin 表示3D 元素透视视角的基点位置,默认的透视视角中心在容器是 perspective 所在的元素,而不是他的后代元素的中点,也就是 perspective-origin: 50% 50%。

CSS Code复制内容到剪贴板

  1. // 语法   

  2. perspective-origin: x-axis y-axis;   

  3. // x-axis : 定义该视图在 x 轴上的位置。默认值:50%   

  4. // y-axis : 定义该视图在 y 轴上的位置。默认值:50%  

值得注意的是,CSS3 3D 变换中的透视的透视点是在浏览器的前方。

说总是很难理解,运用上面我们做出来的正方体试验一下,我设置了正方体的边长为 50 px ,这里设置正方体容器 cuber-inner 的persepective 的为 100 px,而 perspective-origin 保持为默认值:

CSS Code复制内容到剪贴板

  1. -webkit-perspective-origin: 50% 50%;   

  2. perspective-origin: 50% 50%;   

  3. -webkit-perspective: 100px;   

  4. perspective: 100px;  

上面这样设置,也就是相当于我站在 100px 的长度外去看这个立方体,效果如下:

CSS3如何制作酷炫的3D旋转透视

通过调整persepective 和perspective-origin 的值,可以看到不一样的图形,这个很好理解,我们观测一个物体的角度和距离物体的距离不断发生改变,我们看的物体也是不一样的,嗯想象一下小学课文,杨桃和星星,就能容易明白了。

需要提出的是,我上面的几个正多面体图形和球形图形是没有加上persepective 值的,感兴趣的可以加上试一下看看效果。

3D 透视照片墙

回到文章一开始我贴的那个 3D 照片墙,运用transform-style: preserve-3d 和persepective ,可以做出效果很好的这种 3D 照片墙旋转效果。

代码就不贴了,本文已经很长了,只是简单的谈谈原理,感兴趣的去扒源码看看。

1、设立一个舞台,也就是包裹旋转的图片们的容器,给他设置一个persepective 距离,以及transform-style: preserve-3d 让后代可以进行 3D 变换;

2、准备 N 张图片置于容器内部,N 的大小看个人喜好了,图片的 3D 旋转木马效果是类似钢管舞旋转的运动,因此是绕 Y 轴的,我们关心的是rotateY的大小,根据我们添加的图片数量,用 360° 的圆周角将每个图片等分,也就是让每张图片绕 Y 轴旋转固定角度依次散开:(下面的图为示意效果,我调整了一下角度和透明度)

CSS3如何制作酷炫的3D旋转透视

3、这个时候,N 张图肯定是重合叠在了一起,所以这里关键一步是运用translateZ(length) 让图片沿 Z 轴平移,也就是运用translateZ 可以让图片离我们更近或者更远,因为上一步设置了图片不同的rotateY() 角度,所以 N 张图片设定一个translateZ 后,图片就很自然以中点为圆心分散开了,也就是这样:

CSS3如何制作酷炫的3D旋转透视

4、最后利用 animation ,我们让舞台,也就是包裹着图片的容器绕 Y 轴旋转起来(rotateY),那么一个类似旋转木马的 3D 照片墙效果就完成了!

这里要注意的一点是设置的persepective 值和单个图片translateZ(length) 的值,persepective 一定要比translateZ(length) 的值大,否则就是相当于舞台跑你身后去了,肯定是看不到效果了。

看完上述内容,你们掌握CSS3如何制作酷炫的3D旋转透视的方法了吗?如果还想学到更多技能或想了解更多相关内容,欢迎关注编程网JavaScript频道,感谢各位的阅读!

--结束END--

本文标题: CSS3如何制作酷炫的3D旋转透视

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

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

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

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

下载Word文档
猜你喜欢
  • CSS3如何制作酷炫的3D旋转透视
    CSS3如何制作酷炫的3D旋转透视,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。立方体 3D 旋转3D 透视照片墙跳跃的音符可能上面的效果对精...
    99+
    2022-10-19
  • 如何使用CSS3实现酷炫的3D旋转透视
    这篇文章将为大家详细讲解有关如何使用CSS3实现酷炫的3D旋转透视,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。   开始   1.CSS3 3D 转换的常用API介...
    99+
    2022-10-19
  • 怎么在CSS3中实现一个酷炫的3D旋转透视效果
    本篇文章给大家分享的是有关怎么在CSS3中实现一个酷炫的3D旋转透视效果,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。CSS3 3D 转换的常用API介绍首先先上一张css 3...
    99+
    2023-06-08
  • 如何使用CSS3实现3D旋转透视效果
    本篇内容介绍了“如何使用CSS3实现3D旋转透视效果”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!你将学到...
    99+
    2022-10-19
  • 如何制作多视角3D可旋转的HTML5Logo动画
    这期内容当中小编将会给大家带来有关如何制作多视角3D可旋转的HTML5Logo动画,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。这是一款基于HTML5和CSS3的3D动画...
    99+
    2022-10-19
  • 如何利用JavaScript制作一个酷炫的3D图片
    这篇文章将为大家详细讲解有关如何利用JavaScript制作一个酷炫的3D图片,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、页面特效效果展示注:上述效果图只是部分效果,原谅我还没有学会自制gif图!二...
    99+
    2023-06-29
  • 如何使用css3制作炫酷的导航栏效果
    本篇内容介绍了“如何使用css3制作炫酷的导航栏效果”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! ...
    99+
    2022-10-19
  • 如何制作酷炫美观的dashboard
    这篇文章主要为大家分析了如何制作酷炫美观的dashboard的相关知识点,内容详细易懂,操作细节合理,具有一定参考价值。如果感兴趣的话,不妨跟着跟随小编一起来看看,下面跟着小编一起深入学习“如何制作酷炫美观的dashboard”的知识吧。在...
    99+
    2023-06-04
  • 如何利用CSS3制作3d半透明立方体
    这篇文章给大家分享的是有关如何利用CSS3制作3d半透明立方体的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。效果图如下:示例代码:<html>  <h...
    99+
    2022-10-19
  • 纯HTML5+CSS3如何制作图片旋转
    这篇文章给大家分享的是有关纯HTML5+CSS3如何制作图片旋转的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。效果图如下:这个效果实现起来其实并不困难,代码清单如下:XML/HT...
    99+
    2022-10-19
  • 如何使用Python Dash库制作酷炫的可视化大屏
    这篇文章主要介绍了如何使用Python Dash库制作酷炫的可视化大屏,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。介绍通过Python的Dash库,来制作一个酷炫的可视化大...
    99+
    2023-06-22
  • 纯CSS3如何制作的鼠标悬停时边框旋转
    这篇文章主要介绍纯CSS3如何制作的鼠标悬停时边框旋转,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!纯CSS3实现的鼠标悬停时边框旋转的效果:实现代码如下,代码中注释已经比较详细,就...
    99+
    2022-10-19
  • 如何使用CSS3制作饼状旋转载入效果
    这篇文章主要介绍“如何使用CSS3制作饼状旋转载入效果”,在日常操作中,相信很多人在如何使用CSS3制作饼状旋转载入效果问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用...
    99+
    2022-10-19
  • 如何利用CSS3的3D效果制作正方体
    这篇文章将为大家详细讲解有关如何利用CSS3的3D效果制作正方体,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。学会用CSS3的3D效果制作一个正方体,有助于增强我们对3D场景的旋转和位移属性的理解。下面的...
    99+
    2023-06-08
  • 如何用Python快速制作美观炫酷且有深度的图表
    这期内容当中小编将会给大家带来有关如何用Python快速制作美观炫酷且有深度的图表,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。生活阶梯(幸福指数)与人均GDP(金钱)正相关的正则图三种用Python可视...
    99+
    2023-06-16
  • 如何使用CSS制作旋转图标的效果
    如何使用CSS制作旋转图标的效果在网页设计中,图标的运用可以为页面增添生动、简洁的视觉效果。而旋转图标则更加具有吸引人的特点,可以突出重点或表达某种动态的意义。本文将介绍如何使用CSS制作旋转图标的效果,并提供具体的代码示例。首先,要实现图...
    99+
    2023-10-27
    CSS旋转 效果实现 图标制作
  • 项目实践:如何运用CSS动画制作炫酷效果的经验分享
    CSS动画是很多前端开发者常用的技术之一,它可以实现一些非常有趣的效果,例如炫酷的按钮、流畅的页面加载效果以及动态的页面内容等等。在这篇文章中,我将分享一些如何使用CSS动画制作炫酷效果的经验。一起来看看吧!制作动画的基础知识在开始制作动画...
    99+
    2023-11-03
    CSS动画 经验分享 炫酷效果
  • 如何使用CSS制作旋转动画的实现步骤
    如何使用CSS制作旋转动画的实现步骤在现代网页设计中,动画效果是非常重要和受欢迎的一个元素。其中,旋转动画可以给网页注入活力和吸引力。本文将介绍如何使用CSS制作旋转动画的具体步骤,并提供一些代码示例。步骤一:创建HTML结构首先,在HTM...
    99+
    2023-10-26
    CSS 制作 旋转动画
  • 如何使用CSS制作旋转进度条的实现步骤
    CSS是一种用于设计和布局网页的样式表语言,它提供了丰富的属性和功能。其中之一是可以使用CSS制作旋转进度条。这个特效可以用于展示页面加载或任务进度等情况。以下是具体的实现步骤和代码示例:第一步:HTML结构首先,我们需要在HTML中创建一...
    99+
    2023-10-21
    CSS 制作 旋转进度条
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作