用CSS实现3D魔方动画旋转
一、3D魔方的实现
<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;
}
-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
#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调小,以免超出范围)
-webkit-transform: rotateX(30deg) rotateY(44deg);
然后用浏览器的调试模式,改一下数值就好,这里就是将整个魔方进行翻转的属性。
二、动态效果的实现
#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魔方动画旋转相关推荐
- 纯CSS实现3D正方体动画效果
目录 前言 正文 1.基本架构 2.书写每个div样式 3.为需要产生动画的一面单独设置样式 4.设置鼠标hover效果 5.优化 总结 前言 纯CSS实现3D正方体动画效果,此方法是通过transf ...
- html+css制作3D七夕表白旋转相册特效
一个温暖的拥抱,一句轻声的问候,一个暖心的笑容,一双坚实的双手,让我们日久天长,健健康康,快乐每一天!祝你们七夕快乐!一个基于html+css制作简易的3D七夕表白旋转相册特效,就当送给你们当作七夕表 ...
- CSS实现三角形的动画旋转
我们在Web前端开发的时候,为了实现页面的精致效果,都会把每一个细节都处理的无可挑剔,那么今天,我就总结一下在菜单栏中经常用到的会动画旋转的三角形的用法. <div id="Arrow ...
- css立体3d效果动画,css3 实现动画,变换基点及3D效果~
各位小伙伴 上次分享的爱心感觉如何呀~ 动画效果 首先,娜娜在这边给大家认个错,上次分享落下了一个东西,就是动画效果,没有动画是实现不了爱心一条一条的动作的. 虽然那个爱心源代码已经给大家了,只要复制 ...
- CSS练习3D的先旋转后移动和先移动后旋转的区别
transform:rotate()的旋转是指图片本身(原地转向)的旋转,不是图片整体方位的旋转,旋转以后图片的正方向Z轴会跟着图片的正方向变化. 两个例子(主要区别在注释里) 3D导航栏 !!先移动 ...
- html实现魔方相册,css实现魔方动画特效
CSS3实现3D魔方动画特效 *{ margin:0; padding:0; } body{ background: url(img/bg.jpg) 0 0 no-repeat; background ...
- 纯CSS制作3D旋转风车动画效果
效果图展示 HTML源码: <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"&g ...
- android 3d魔方 代码,css实现3d立体魔方的示例代码
今天来做一个简单的3d魔方 先看效果图吧!把这个看会了,一些网上的3d的相册你就都会了 一.我们先准备好们的html代码 3d立体魔方 好了我们html代码就准备完成了,首先我们要有一个3d的思维,在 ...
- html魔方转动效果,简单说 用CSS做一个魔方旋转的效果
说明 魔方大家应该是不会陌生的,这次我们来一起用CSS实现一个魔方旋转的特效,先来看看效果图! 解释 我们要做这样的效果,重点在于怎么把6张图片,摆放成魔方的样子,而把它们摆放成魔方的样子,重点在于用 ...
最新文章
- pfSense设置多WAN后,解决网银无法登陆问题
- 为什么说无人出租车关乎特斯拉和Uber的生死存亡
- c的按位取反运算符(~) 与逻辑逻辑(!)
- 《30天自制操作系统》笔记(01)——hello bitzhuwei’s OS!
- List.FindAll 方法
- HTML+CSS+JavaScript复习笔记持更(八)——CSS3常用属性之列表
- DCMTK:测试CT像框FG类
- JAVA进阶开发之(二维数组)
- 矩池云上安装 NVCaffe教程
- ubuntu下设置Android手机驱动
- 文后参考文献著录规则 GB/T 7714-2005
- 【深度学习】基于PyTorch搭建ResNet18、ResNet34、ResNet50、ResNet101、ResNet152网络
- 利用jackson-dataformat-xml包中的XmlMapper类将xml解析成实体类对象
- 使用HttpClient4来构建Spring RestTemplate
- flask---》Marshmallow介绍及基础使用
- PL(Procedural Language)/SQL程序设计语言
- 大曝光:淘宝店卖论文,10年卖100多篇SCI获利300万!
- 线性代数——线性组合、线性空间、基底
- 阿里天池项目:淘宝电商数据分析(mysql)
- html 重置画布坐标系,H5中canvas的坐标系(画布初始)