一、3D魔方的实现

这里呢主要是用我们的div标签来对魔方的各个面及各个块进行实现,先上一个主体的html代码吧
<div id="box"><!-- 各个面 --><div class="one"><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div></div><div class="two"><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div></div><div class="three"><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div></div><div class="four"><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div></div><div class="five"><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div></div><div class="six"><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div><div></div></div></div>

我们可以看到有一个id=box的div,这就是我们一整个魔方的的样子的啦,那么我们就现在里面设置一下CSS样式吧

#box {position: relative;font-size: 90px;width: 180px;height:180px;margin: 120px auto;-webkit-transform-style: preserve-3d;transform-style: preserve-3d;
}
在这里我们设置了box的一些基本属性,其中最重要的两句话就是
    -webkit-transform-style: preserve-3d;transform-style: preserve-3d;

这两句话是使整个box具有3D视角的基础(两句话分别对webkit内核浏览器和W3C标准的浏览器进行了兼容)
做了一个大的设置后,我们开始对魔方的每个面进行设置,首先我们把他们共有的一些属性都抽出来

#box div {position: absolute;width: 180px;height: 180px;background: rgba(0, 0, 0, .1);
}

敲黑板!!这里最好把position设置为absolute,不然对之后的一些改变会很麻烦


这个时候我们看到的东西应该就是漆黑一片的一个正方体,因为这个时候是6个面叠在一起

那么接下来就开始让每个面进行一个3D变化,但在这之前,我们需要先了解一个CSS3新增的属性transform,在这里就简单讲几个跟我们3D魔方相关的几个东西,详情CSS手册transform属性

transform:translateX(90px);

这句话的意思是往x轴的正方向(即电脑屏幕向右)平移90px,同理,将X换做Y(正方向为电脑屏幕向上)或Z(正方向为电脑屏幕指向自己的方向)也会有相应的效果。

transform: rotateX(-90deg)

这里是指沿着x轴旋转-90度,如果没有特别指定transform-origin(设置或检索对象以某个原点进行转换),则默认为以中心点进行旋转,同理,将X换做Y或Z也会有相应的效果
大概了解了这些,我们便可以开始让我们6个面进行立体变化了,首先我们先想好一个东西,就是这个魔方的中心点,在这里我们将魔方的中心设置在我们现在看到的正方形的中心(默认的transform-origin),那么第一个面

.one {-webkit-transform: translateZ(90px);transform: translateZ(90px);
}

我们先让它往z轴移动90px,那么久会离我们视线变近

第二个面就开始不一样了

.two {-webkit-transform: rotateX(90deg) translateZ(90px);transform: rotateX(90deg) translateZ(90px);
}

我们来解析一下这一小段代码,首先这个面是往Z轴方向移动了90px和第一个面重合,然后绕着x轴旋转,就像体操运动员一样向上翻转,翻转根据的x轴就是默认的transform-origin

浅蓝色的面为第一个面,深蓝色的面为第二个面,以红色的点为中心点进行旋转变化,同样的,其他几个面也可以先进行Z轴移动,再进行旋转得到(代码不详细写出,效果图如下)
6个面完成后,就要开始对每个面里面的小方块进行设置了
#box .one div {width: 60px;height: 60px;float: left;position: relative;display: inline-block;border: none;background: rgba(255, 0, 0, 0.8);border-radius: 20%;
}

这里将一整个面的所有方块都进行了设置,最主要是前面的5句,因为父元素设置了position:absolute,因此需要将其转化为relative,将每个小块都转化成行内块级元素,并进行浮动,使它们能够对齐排列,而剩下的代码就是对每个面的方块的个性化设置,大家可以自己设置颜色边距等(注意width和height大小,如果加了border就要将div的width和height调小,以免超出范围)

最终的效果如下
有人可能会问,为什么笔者的可以看到3D效果,但自己的却不行,那你可以试一下在#box中加入这句
-webkit-transform: rotateX(30deg) rotateY(44deg);

然后用浏览器的调试模式,改一下数值就好,这里就是将整个魔方进行翻转的属性。

二、动态效果的实现

如果要实现动态效果,那么#box中的一些东西,就要增加了,接下来给大家看看#box里面的完整代码
#box {position: relative;font-size: 90px;width: 180px;height: 180px;margin: 120px auto;-webkit-transform-style: preserve-3d;transform-style: preserve-3d;-webkit-transform-origin: center center;transform-origin: center center;-webkit-animation: animations 5s 0s infinite ease-in-out normal none;animation: animations 5s 0s infinite ease-in-out normal none;
}

首先一定要设置宽高,这样transform-origin才可以在center的位置,如果不设置的话,也可以,把transform-origin改为如下,但位置效果会有些奇怪,需要另外调整

-webkit-transform-origin: 90px 90px 0;transform-origin: 90px 90px 0;

动画最关键的一个就是animation,具体相关的东西参考CSS参考手册animation
我们需要另外再设置一个东西就是,要做什么动画

@-webkit-keyframes animations {0% {-webkit-transform: rotateX(0deg) rotateY(0deg);}25% {-webkit-transform: rotateX(-24deg) rotateY(40deg);}50% {-webkit-transform: rotateX(-142deg) rotateY(112deg);}75% {-webkit-transform: rotateX(-226deg) rotateY(200deg);}100% {-webkit-transform: rotateX(-360deg) rotateY(360deg);}
}
keyframes animations {0% {transform: rotateX(0deg) rotateY(0deg);}25% {transform: rotateX(-24deg) rotateY(40deg);}50% {transform: rotateX(-142deg) rotateY(112deg);}75% {transform: rotateX(-226deg) rotateY(200deg);}100% {transform: rotateX(-360deg) rotateY(360deg);}
}

这样和#box结合起来,就是魔方在2s内围绕着中心点进行旋转,从而我们可以看到不同的面,当然,里面的数值,大家可以进行更改,从而实现不一样的动画效果

用CSS实现3D魔方动画旋转相关推荐

  1. 纯CSS实现3D正方体动画效果

    目录 前言 正文 1.基本架构 2.书写每个div样式 3.为需要产生动画的一面单独设置样式 4.设置鼠标hover效果 5.优化 总结 前言 纯CSS实现3D正方体动画效果,此方法是通过transf ...

  2. html+css制作3D七夕表白旋转相册特效

    一个温暖的拥抱,一句轻声的问候,一个暖心的笑容,一双坚实的双手,让我们日久天长,健健康康,快乐每一天!祝你们七夕快乐!一个基于html+css制作简易的3D七夕表白旋转相册特效,就当送给你们当作七夕表 ...

  3. CSS实现三角形的动画旋转

    我们在Web前端开发的时候,为了实现页面的精致效果,都会把每一个细节都处理的无可挑剔,那么今天,我就总结一下在菜单栏中经常用到的会动画旋转的三角形的用法. <div id="Arrow ...

  4. css立体3d效果动画,css3 实现动画,变换基点及3D效果~

    各位小伙伴 上次分享的爱心感觉如何呀~ 动画效果 首先,娜娜在这边给大家认个错,上次分享落下了一个东西,就是动画效果,没有动画是实现不了爱心一条一条的动作的. 虽然那个爱心源代码已经给大家了,只要复制 ...

  5. CSS练习3D的先旋转后移动和先移动后旋转的区别

    transform:rotate()的旋转是指图片本身(原地转向)的旋转,不是图片整体方位的旋转,旋转以后图片的正方向Z轴会跟着图片的正方向变化. 两个例子(主要区别在注释里) 3D导航栏 !!先移动 ...

  6. html实现魔方相册,css实现魔方动画特效

    CSS3实现3D魔方动画特效 *{ margin:0; padding:0; } body{ background: url(img/bg.jpg) 0 0 no-repeat; background ...

  7. 纯CSS制作3D旋转风车动画效果

    效果图展示        HTML源码: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"&g ...

  8. android 3d魔方 代码,css实现3d立体魔方的示例代码

    今天来做一个简单的3d魔方 先看效果图吧!把这个看会了,一些网上的3d的相册你就都会了 一.我们先准备好们的html代码 3d立体魔方 好了我们html代码就准备完成了,首先我们要有一个3d的思维,在 ...

  9. html魔方转动效果,简单说 用CSS做一个魔方旋转的效果

    说明 魔方大家应该是不会陌生的,这次我们来一起用CSS实现一个魔方旋转的特效,先来看看效果图! 解释 我们要做这样的效果,重点在于怎么把6张图片,摆放成魔方的样子,而把它们摆放成魔方的样子,重点在于用 ...

最新文章

  1. pfSense设置多WAN后,解决网银无法登陆问题
  2. 为什么说无人出租车关乎特斯拉和Uber的生死存亡
  3. c的按位取反运算符(~) 与逻辑逻辑(!)
  4. 《30天自制操作系统》笔记(01)——hello bitzhuwei’s OS!
  5. List.FindAll 方法
  6. HTML+CSS+JavaScript复习笔记持更(八)——CSS3常用属性之列表
  7. DCMTK:测试CT像框FG类
  8. JAVA进阶开发之(二维数组)
  9. 矩池云上安装 NVCaffe教程
  10. ubuntu下设置Android手机驱动
  11. 文后参考文献著录规则 GB/T 7714-2005
  12. 【深度学习】基于PyTorch搭建ResNet18、ResNet34、ResNet50、ResNet101、ResNet152网络
  13. 利用jackson-dataformat-xml包中的XmlMapper类将xml解析成实体类对象
  14. 使用HttpClient4来构建Spring RestTemplate
  15. flask---》Marshmallow介绍及基础使用
  16. PL(Procedural Language)/SQL程序设计语言
  17. 大曝光:淘宝店卖论文,10年卖100多篇SCI获利300万!
  18. 线性代数——线性组合、线性空间、基底
  19. 阿里天池项目:淘宝电商数据分析(mysql)
  20. html 重置画布坐标系,H5中canvas的坐标系(画布初始)

热门文章

  1. 百度AI开发者大会-你是其中一个嘛?百度Create大会(无人驾驶)
  2. Charles 安装图解(Mac 抓包工具)
  3. 绘制曲线图origin画图
  4. html 输入数字冒泡,Html5 冒泡排序演示
  5. 针孔相机(透视相机模型)
  6. 易算数学公式计算器介绍
  7. Excel 使用VBA批量替换(手把手包会)
  8. 银河麒麟桌面操作系统V10上安装IDEA集成开发环境并导入SpringBoot项目
  9. 干货:SQLServer数据库基于PowerDesigner逆向工程生成PDM文件
  10. MAC如何打开pdm文件