转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/34120047

创意来自:http://www.html5tricks.com/demo/html5-3d-cube/index.html , 同学给我发的例子,感觉很不错,不过实在想不出来实际的用处,但是效果很炫~

效果图:

知识点:

1、perspective ,transform 的复习

2、css3 backgroud实现格格背景,即面上的小格格

3、 @-webkit-keyframes 实现动画

HTML:

  1. <body>
  2.  
  3. <div class="stage">
  4. <div class="cube">
  5. <div class="font"></div>
  6. <div class="back"></div>
  7. <div class="left"></div>
  8. <div class="right"></div>
  9. <div class="top"></div>
  10. <div class="bottom"></div>
  11. </div>
  12.  
  13. </div>
  14.  
  15. </body>

前面的3D商品展示中已经说过如何制作正方体,并且那个上面还有数字,理论上说比这个复杂,虽然木有这个炫~这里就不多说了。

CSS:

  1. html
  2. {
  3. background: -webkit-radial-gradient(center, ellipse, #430d6d 0%, #000000 100%);
  4. background: radial-gradient(ellipse at center, #430d6d 0%, #000000 100%);
  5. height: 100%;
  6. }
  7.  
  8. .stage
  9. {
  10. -webkit-perspective: 1000px;
  11. width: 20em;
  12. height: 20em;
  13. left: 50%;
  14. top: 50%;
  15. margin-left: -10em;
  16. margin-top: -10em;
  17. position: absolute;
  18. }
  19.  
  20. .cube
  21. {
  22. position: absolute;
  23. width: 100%;
  24. height: 100%;
  25. -webkit-transform-style: preserve-3d;
  26. -webkit-transform: rotateX(-20deg) rotateY(-20deg);
  27. }
  28.  
  29. .cube *
  30. {
  31. background: -webkit-linear-gradient(left, rgba(54, 226, 248, 0.5) 0px, rgba(54, 226, 248, 0.5) 3px, rgba(0, 0, 0, 0) 0px), -webkit-linear-gradient(top, rgba(54, 226, 248, 0.5) 0px, rgba(54, 226, 248, 0.5) 3px, rgba(0, 0, 0, 0) 0px);
  32. -webkit-background-size: 2.5em 2.5em;
  33.  
  34. background-color: rgba(0, 0, 0, 0.5);
  35. position: absolute;
  36. width: 100%;
  37. height: 100%;
  38. border: 2px solid rgba(54, 226, 248, 0.5);
  39. -webkit-box-shadow: 0 0 5em rgba(0, 128, 0, 0.4);
  40.  
  41. }
  42.  
  43. .font
  44. {
  45. -webkit-transform: translateZ(10em);
  46. }
  47.  
  48. .back
  49. {
  50. -webkit-transform: rotateX(180deg) translateZ(10em);
  51. }
  52.  
  53. .left
  54. {
  55. -webkit-transform: rotateY(-90deg) translateZ(10em);
  56. }
  57.  
  58. .right
  59. {
  60. -webkit-transform: rotateY(90deg) translateZ(10em);
  61. }
  62.  
  63. .top
  64. {
  65. -webkit-transform: rotateX(90deg) translateZ(10em);
  66. }
  67.  
  68. .bottom
  69. {
  70. -webkit-transform: rotateX(-90deg) translateZ(10em);
  71. }

同样:stage作为舞台,cube设置子元素的效果为3d,然后每个面都进行旋转和设置translateZ然后形成立方体。

为每个面设置backgroud设置小格格的代码:

  1. background: -webkit-linear-gradient(
  2. left,
  3. rgba(54, 226, 248, 0.5) 0px,
  4. rgba(54, 226, 248, 0.5) 3px,
  5. rgba(0, 0, 0, 0) 0px),
  6. -webkit-linear-gradient(
  7. top,
  8. rgba(54, 226, 248, 0.5) 0px,
  9. rgba(54, 226, 248, 0.5) 3px,
  10. rgba(0, 0, 0, 0) 0px);
  11.  
  12. -webkit-background-size: 2.5em 2.5em;

背景设置,从左到右的3像素的条条,从上到下的3像素的条条;然后设置背景大小为2.5em 2.5em ,然后将背景重复显示,效果如下(我添加了边框):

现在的完整效果:

可以看到立方体已经成型了,最后添加上动画就行了,不要觉得动画很复杂,其实很简单~

定义一个动画帧:

  1. @-webkit-keyframes spin
  2. {
  3. from
  4. {
  5. -webkit-transform: translateZ(-10em) rotateX(0) rotateY(0deg);
  6. transform: translateZ(-10em) rotateX(0) rotateY(0deg);
  7. }
  8.  
  9. to
  10. {
  11. -webkit-transform: translateZ(-10em) rotateX(360deg) rotateY(360deg);
  12. transform: translateZ(-10em) rotateX(360deg) rotateY(360deg);
  13. }
  14. }

名字为spin,开始时 translateZ(-10em) rotateX(0) rotateY(0deg); 结束时 : translateZ(-10em) rotateX(360deg) rotateY(360deg); 即同时绕着x,y轴360度旋转。

最后给我们的立方体加上此animation属性:

  1. .cube
  2. {
  3. -webkit-animation: 6s spin linear infinite;
  4. position: absolute;
  5. width: 100%;
  6. height: 100%;
  7. -webkit-transform-style: preserve-3d;
  8. -webkit-transform: rotateX(-20deg) rotateY(-20deg);
  9. }

设置时间为动画时间 6s , 动画 spin , 速度为匀速linear , 无限循环 infinite ;

关于更加细致的参数设置,可以参考w3cSchool~以后我也会写单独介绍CSS3的属性的博客~

好了,最终的效果就已经完成了~

对于原网站的样子,有点细微的差别:

因为它额外给每个面添加了一个径向渐变,那么我们添加上:

  1. .cube *:before
  2. {
  3. display: block;
  4. background: -webkit-radial-gradient(center, ellipse, rgba(0, 0, 0, 0) 30%, rgba(0, 128, 0, 0.2) 100%);
  5. background: radial-gradient(ellipse at center, rgba(0, 0, 0, 0) 30%, rgba(0, 128, 0, 0.2) 100%);
  6. content: '';
  7. height: 100%;
  8. width: 100%;
  9. position: absolute;
  10. }

利用before这个伪元素,然后设置径向渐变~~现在终于一致了~

源码点击下载

版权声明:本文为博主原创文章,未经博主允许不得转载。

HTML5 CSS3 诱人的实例: 3D立方体旋转动画的更多相关文章

  1. HTML5 CSS3 诱人的实例 : 网页载入进度条的实现,下载进度条等

    今天给大家带来一个比較炫的进度条,进度条在一耗时操作上给用户一个比較好的体验,不会让用户认为在盲目等待,对于没有进度条的长时间等待,用户会任务死机了,毫不犹豫的关掉应用:一般用于下载任务,删除大量任务 ...

  2. HTML5 CSS3 诱人的实例 :canvas 模拟实现电子彩票刮刮乐

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/34089553 今天给大家带来一个刮刮乐的小例子~基于HTML5 canvas的, ...

  3. HTML5 CSS3 诱人的实例 : 网页加载进度条的实现,下载进度条等

    今天给大家带来一个比较炫的进度条,进度条在一耗时操作上给用户一个比较好的体验,不会让用户觉得在盲目等待,对于没有进度条的长时间等待,用户会任务死机了,毫不犹豫的关掉应用:一般用于下载任务,删除大量任务 ...

  4. HTML5 CSS3 诱人的实例 :模仿优酷视频截图功能

    一般的视频网站对于用户上传的视频,在用户上传完成后,可以对播放的视频进行截图,然后作为视频的展示图.项目中也可以引入这样的功能给用户一种不错的体验,而不是让用户额外上传一张展示图. 效果图: 看起来还 ...

  5. jquery和CSS3带倒影的3D万花筒旋转动画特效效果演示

    <!DOCTYPE html> <html> <head> <title></title> <meta charset='utf-8' ...

  6. 3D立方体旋转动画

    在线演示 本地下载

  7. 基于css3的3D立方体旋转特效

    今天给大家分享一款基于css3的3D立方体旋转特效.这款特效适用浏览器:360.FireFox.Chrome.Safari.Opera.傲游.搜狗.世界之窗. 不支持IE8及以下浏览器.效果图如下 : ...

  8. 基于css3新属性transform及原生js实现鼠标拖动3d立方体旋转

    基于css3新属性transform,实现3d立方体的旋转 通过原生JS,点击事件,鼠标按下.鼠标抬起和鼠标移动事件,实现3d立方体的拖动旋转,并将旋转角度实时的反应至界面上显示 实现原理:通过获取鼠 ...

  9. css3-实现3D立方体旋转

    核心内容: 1.CSS3 中 animation.perspective 属性的熟练运用. 2.CSS3 中的变形属性 transform,在 3D 立体效果中的运用. 3.3D 立方体旋转实现原理. ...

随机推荐

  1. 苹果新的编程语言 Swift 语言进阶(四)--字符串和收集类型

    一.字符串( String  )和字符类型(Character) 字符串是一种字符的带次序的收集类型(相当于数组),字符是字符串中的元素. 在Swift 语言中,字符串是编码独立的Unicode字符的 ...

  2. python实现博客自动刷点击脚本

    #A Auto-Visit Web Site Tool import urllib import time import random print "Auto Click the WebPa ...

  3. webpack安装使用

    一.安装 1.安装node.js,Webpack 需要 Node.js v0.6 以上支持 2.使用npm(软件包管理 )安装webpack (1)全局安装    npm install webpac ...

  4. 设置eclipse全局编码格式

    window--preference--general--workspace--text file encoding

  5. 基于Django的独立运行脚本开发

    1.在Django框架下工作时间长了,会对Django的技术设施产生依赖,比如其方便的ORM,如果写基于Django的独立运行脚本,主要在脚本前面加上以下代码: import sys,os,djang ...

  6. 选择Web框架的20条标准

    原文观点由Matt Raible提出,关于Matt Rabile的介绍:http://www.infoq.com/cn/author/Matt-Raible 内容摘自<Java程序员修炼之道&g ...

  7. Java杂记9—NIO

    前言 非阻塞IO,也被称之为新IO,它重新定义了一些概念. 缓冲buffer 通道 channel 通道选择器 BIO 阻塞IO,几乎所有的java程序员都会的字节流,字符流,输入流,输出流等分类就是 ...

  8. java基础语法3

    逻辑运算符 &:与,和有共同的,必须条件都满足才是true 有false就返回false,必须都是true才返回true |:或者,其中有一个满足条件就返回true ^亦或,相同是false, ...

  9. 记一次webpack打包优化

    未进行打包优化的痛点: 随着项目的不断扩大,引入的第三方库会越来越多,我们每次build的时候会对所有的文件进行打包,耗时必定很长,不利于日常开发. 解决思路: 第三方库我们只是引入到项目里来,一般不 ...

  10. 微信小程序-获取经纬度

    微信小程序-获取经纬度 最近公司新功能 要求在外的市场人员 发送位置信息回来. 用的还是微信小程序开发.... 微信小程序 提供一个接口 getLocation 这个接口反回来的位置 相对实际位置 相 ...