• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com专业计算机教程网站
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure
您的位置:首页 > 网页设计 >css3 > CSS3近阶段篇之酷炫的3D旋转透视

CSS3近阶段篇之酷炫的3D旋转透视

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-02

本文主要包含css3 3d旋转动画,css3 3d旋转,css3 3d,css3 3d翻转,css3 3d动画等相关知识,佚名 希望在学习及工作中可以帮助到您

之前学习 react+webpack ,偶然路过 webpack 官网 ,看到顶部的 LOGO ,就很感兴趣。

最近觉得自己 CSS3 过于薄弱,想着深入学习一番,遂以这个 LOGO 为切入口,好好研究学习了一下相关的 CSS3 属性。webpack 的 LOGO 动画效果乍看不是很难,深入了解之后,觉得内部其实大有学问,自己折腾了一番,做了一系列相关的 CSS3 动画效果。

先上 demo ,没有将精力放在兼容上,请用 chrome 打开。

本文完整的代码,以及更多的 CSS3 效果,在我github上可以看到,也希望大家可以点个 star。

嗯,可能有些人打不开 demo 或者页面乱了,贴几张效果图:(图片有点大,耐心等待一会)

立方体 3D 旋转

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 只有两个值可以选择:

</div>
  1. // 语法:   
  2. transform-style: flat|preserve-3d;   
  3. transform-style: flat; // 默认,子元素将不保留其 3D 位置   
  4. transform-style: preserve-3d; // 子元素将保留其 3D 位置。  
</div> </div>

当我们指定一个容器的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 试试,绕每个轴都转一下就明白了:

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

1、准备六个正方形

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

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

2、父容器做简单的变换

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

</div>
  1. .cube-container{   
  2.     -webkit-transform: rotateX(-33.5deg) rotateY(45deg);   
  3.     transform: rotateX(-33.5deg) rotateY(45deg);   
  4. }  
</div> </div>

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

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

3、对每个面做 3D 变换

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

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

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

至此,一个 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

您可能想查找下面的文章:

  • 利用CSS3制作简单的3d半透明立方体图片展示
  • 用React加CSS3实现微信拆红包动画效果
  • 浅谈CSS3动画的回调处理
  • 纯CSS3绘制打火机动画火焰效果
  • CSS3让登陆面板3D旋转起来
  • CSS3近阶段篇之酷炫的3D旋转透视
  • 非常震撼的纯CSS3人物行走动画
  • CSS3实现超慢速移动动画效果非常流畅无卡顿
  • css3实现超立体3D图片侧翻倾斜效果
  • css3的图形3d翻转效果应用示例

相关文章

  • 2017-06-028款使用 CSS3 实现超炫的 Loading(加载)的动画效果
  • 2017-06-02纯CSS3实现表单验证效果(非常不错)
  • 2017-06-02CSS3弹性盒模型开发笔记(三)
  • 2017-06-02纯HTML5+CSS3制作图片旋转
  • 2017-06-02图解CSS3制作圆环形进度条的实例教程
  • 2017-06-02利用HTML5+CSS3实现3D转换效果实例详解
  • 2017-06-02实例讲解使用CSS实现多边框和透明边框的方法
  • 2017-06-02使用HTML5和CSS3表单验证功能
  • 2017-06-02深入浅出CSS3 background-clip,background-origin和border-image教程
  • 2017-06-02HTML5 CSS3给网站设计带来出色效果

文章分类

  • html/xhtml
  • html5
  • CSS
  • XML/XSLT
  • Dreamweaver教程
  • Frontpage教程
  • 心得技巧
  • bootstrap
  • vue
  • AngularJS
  • HBuilder教程
  • css3
  • 浏览器兼容
  • div/css
  • 网页编辑器
  • axure

最近更新的内容

    • CSS图片翻转动画技术详解(IE也实现了)
    • css3的transition属性详解
    • css3加js做一个简单的3D行星运转效果实例代码
    • 详解CSS3中border-image的使用
    • 基于CSS3的CSS 多栏(Multi-column)实现瀑布流源码分享
    • CSS中几个与换行有关的属性简明总结
    • 利用CSS3实现平移动画效果示例代码
    • 纯CSS3实现地球自转实现代码(图文教程附送源码)
    • 一款纯css3实现的竖形二级导航的实例教程
    • CSS3 制作绽放的莲花采用效果叠加实现

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有