用CSS实现3D魔方动画旋转

纯CSS3实现3d星空魔方旋转动画特效 项目效果 实现原理 先给一个星空背景,再创建一个大的div ,里面在创建6个小的div也就是六个面,再给他们一个position: absolute使他们重叠在一起,再给一个transform: translateZ(px)(最佳给的是宽高的一半),剩余的再给一个动画旋转,下面有代码来分步来说 1、先做出背景图和一个有3d效果的方块图 HTML部分 <body> <div class="father"> <div class="son1"></di 阅读详情

一、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内围绕着中心点进行旋转,从而我们可以看到不同的面,当然,里面的数值,大家可以进行更改,从而实现不一样的动画效果








三阶魔方 js 本文三阶魔方的实现利用到了 jquery.min,用一个三维数组来对魔方的面,方格,颜色位置来进行定义,在执行输出,先上效果图。 代码中的浏览器适配,只设置了一种webkit ,其他的ms,moz都没有进行设置,所以最好用Google Chrome,或者360浏览器。 另外,魔方在其他两侧面的纵向旋转上的视觉效果不太好,有兴趣的朋友可以帮忙改进一下。 阅读详情

相关推荐

CSS 3D世界,360°旋转水晶魔方

你家有类似的水晶魔方吗?我第一次见到它的时候,就觉得这个东西真不错,所以我家现在有2个。不过一个已经坏掉了,坐车放在箱子里面,颠簸导致水晶的四个角都破损了,大家如果要携带一定要小心哦。 现在我们来制作一个永远不会破损的水晶魔方,用代码实现,要不代码出bug,永远不坏。 CSS3实现水晶魔方效果。 结构 水晶是一个正方体,所以有6个面,用html表示如下: <ul class="cube-inner"> <li class="top"></li> <li c

web秀 454

纯CSS实现旋转魔方

摘要:本文展示了一个纯CSS实现的3D旋转魔方效果。通过CSS3的3D变换属性(transform-style: preserve-3d)和透视效果(perspective),构建了一个由6个面组成的3D立方体,每个面包含3x3的小方块。利用@keyframes动画使魔方持续旋转,展示了CSS在3D效果上的强大能力。代码简洁,无需JavaScript即可实现流畅的3D动画效果。(149字)

m0_63861061的博客 218

VS2022错误列表高效处理:从复制到Excel表格的完整指南

本文详细介绍了在Visual Studio 2022中高效处理错误列表的实用技巧,重点讲解了如何将错误信息一键复制并粘贴到Excel表格中。通过基础操作、自定义视图、筛选功能及常见问题解决方案,帮助开发者将杂乱的编译错误整理成清晰、可排序、可筛选的数据表,极大提升了团队协作、错误分析和项目管理的效率。

weixin_28837817的博客 360

CSS3D魔法——旋转魔方

3D旋转:rotate3d(x,y,z,deg) 透视:perspective 3D呈现:transfrom-style 三维坐标系: 三维坐标系其实就是指立体空间,立体空间是由3个轴共同组成的。 X轴:水平向右(注意:X往右边是正值,往左边是负值) Y轴:垂直向下(注意:Y往下面是正值,往上面是负值) Z轴:垂直屏幕(注意:往外面是正值,往里面是负值) 我们看到的电脑屏幕的左上角等同于坐标中心原点,屏幕上边沿是x的正轴,屏幕左边沿是y的正轴。 [](()二、魔方图片 ==..

m0_67619362的博客 813

Creo二次开发环境配置与DLL项目实战指南(Creo8.0+VS2019)

本文详细介绍了Creo8.0与VS2019环境下的二次开发配置与DLL项目实战指南,涵盖环境准备、版本匹配、DLL项目创建、核心代码编写、部署调试及常见报错处理。重点解析了Creo二次开发中的关键配置和优化技巧,帮助开发者高效解决实际问题。

weixin_28432777的博客 517

Nova — GPU/vGPU 虚拟机

目录 文章目录目录云主机使用显卡的实现方式虚拟显卡物理显卡直通物理显卡虚拟化 云主机使用显卡的实现方式 采用虚拟显卡 采用物理显卡直通 采用物理显卡虚拟化 虚拟显卡 虚拟显卡技术,主要用于虚拟机 Remote Console 领域,如:VNC(Virtual Network Computing,虚拟网络计算机),它能将完整的窗口界面通过网络,传输到另一台计算机的屏幕上。 VNC 主要由 VNC server 和 VNC viewer 两部分组成。用户需先将 VNC server 安装在被远程操控的计算

烟云的计算 2429

CSS基础学习——动画

一、CSS3 2D变形(利用Transfrom方法) 1、rotate(angle) 元素顺时针旋转给定的角度。允许负值,元素将逆时针旋转。 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <style> div{ width: 100px

qq_41890177的博客 1万+

Raspberry Pi Pico SDK开发-Timer-定时

RP2040 由 Raspberry Pi 设计,具有双核 Arm Cortex-M0+ 处理器和 264KB 内部 RAM,并支持高达 16MB 的片外闪存。 广泛的灵活 I/O 选项包括 I2C、SPI 和独特的可编程 I/O (PIO)。 本实例将演示如何使用Timer的定时功能。

视觉与物联智能 2042

如何用CSS制作可以转动的魔方

三阶魔方想要进行转动因为太过复杂,所以这里用的是2阶魔方。 首先要搭建一个魔方。利用6个div盒子不同的空间旋转,拼出一个小正方体。然后改变正方体的空间位置,一共8个小正方体拼成2阶魔方。最后给小正方体的每一个面上一个颜色。

curry_xiao的博客 1064

使用菱FX5U系列PLC实现以太网通信的具体方法示例

接下来,我们将创建一个简单的CPU通信功能,以实现与其他设备的以太网通信。在上述代码中,我们首先设置访问号,然后创建一个数据读取命令(M_READ)和一个数据写入命令(M_WRITE)。此外,在实际应用中,您还需要确保PLC和其他设备之间的网络连接正常,并且遵循相应的通信协议。在上述代码中,我们执行了数据读取命令,并将接收到的响应存储在M_RESPONSE变量中。通过简单CPU通信功能,菱FX5U系列PLC可以实现与其他设备的以太网通信。我们将提供相应的源代码和详细的说明,以帮助您轻松实现这一功能。

DevCyberX的博客 1527

c#视觉应用开发中如何使用Emgu CV在C#中进行图像处理?

Emgu CV 是 OpenCV 的 .NET 包装器,可以让开发者在 .NET 语言(如 C#)中使用 OpenCV 的功能进行图像处理。在进行图像处理时,Emgu CV 提供了丰富的 API 可以使用。PictureBoxImageBox下面是一个详细的示例,演示如何使用 Emgu CV 在 C# 中进行基本的图像处理,包括加载图像、转换为灰度图像、进行边缘检测,然后显示结果。byte在这个示例中,我们使用了三个PictureBox控件来显示原始图像、灰度图像和边缘检测后的图像。

zhangzhechun的专栏 670

css的rotate3d实现炫酷的圆环转动动画

css的rotate3d实现炫酷的圆环转动动画

苏苏就是小苏苏的博客 1万+

AutoSAR系列讲解(入门篇)4.6-BSW的Watchdog功能

BSW的看门狗功能

雪云飞星的博客 1万+

解惑:如何使用html+css+js实现旋转相册,立方体相册等动画效果

解惑:如何使用html+css+js实现旋转相册,立方体相册等动画效果 一、前言 最初还是在抖音上看到可以使用简单地代码实现炫酷的网页效果的,但是想要找到可以运行的代码还是比较困难的,最近突然想起就在网上汇总了一些这样的代码。 二、3D效果代码 2.1、旋转相册 <!doctype html> <html lang="en"> <head&...

weixin_30510153的博客 1965

27、单阶段目标检测算法(SSD):原理、训练与实战

本文详细介绍了单阶段目标检测算法SSD的原理、训练方法与实战应用。内容涵盖SSD的核心机制,如特征图离散化、边界框预测、损失函数设计及难负样本挖掘,并通过使用dlib车辆数据集从零开始训练SSD模型的完整流程展示了实际操作步骤。文章还讨论了训练中的关键问题,如边界框坐标处理和‘忽略区域’缺失的影响,提供了模型评估与优化策略,包括超参数调整、基础网络替换和数据增强。最后总结了SSD的优势与局限性,并展望了未来目标检测技术的发展方向。

nice1的博客 505

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

CSS旋转魔方

CSS旋转魔方 我想做一个相册,把儿子的照片放进去,外面是我,里面是他。可是苦逼程序员爱而不得,终日与编辑器为伍,日码万字不能休。 一定要先做下广告,衷心希望大家浏览博客的同时,可以点一下“ 赞助商 ” ,这个机构真的很棒,受疫情影响,原本的大机构为生源所困,我希望同样热爱前端,或者有兴趣向前端发展的朋友,可以了解一下这家机构。我不是学院的招生老师,但大家可以咨询我学院方面的问题,博主不图名利,如果入校学习,我肯定会想办法让机构给你最大的优惠。 不说了,上源码: <!DOCTYPE html>

weixin_45820444的博客 5807

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

CSS实现旋转魔方

HTML+CSS实现立体旋转魔方

小天才程序员的博客乐园 3511

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

CSS做3D旋转魔方(立方体)

css做3D旋转魔方,使用的是3D位移与旋转属性,以及动画属性。代码不多,以下便是全部代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, init...

qq_38318589的博客 1257

HTML+CSS实战操作旋转魔方

硬核!HTML+CSS实战操作旋转魔方

ztK63LrD的博客 3584

web前端——旋转3D魔方

前端css实现3D魔方,先看一下效果图: 盒子布局 将3D魔方的6个面包裹在一个父盒子中 <div class="content"> <div class="parent"> <div class="div1">上</div> <div class="div2">下</div> <div class="div3">左</div> <div class="div4"&gt

cloudYun的博客 1706

使用CSS3与JavaScript实现炫酷的3D旋转魔方及九宫格交换动效

这篇文章详细介绍了如何使用CSS3和JavaScript实现一个具有科技感的3D旋转魔方,并且在魔方的九宫格中实现数字随机交换的动效。文章从实现需求出发,逐步讲解了CSS3的3D变换基础知识,如何使用HTML和CSS构建魔方的基础结构,并通过CSS动画让魔方在三维空间中旋转。接着,使用JavaScript实现九宫格的数字交换和相邻格子判断的逻辑,确保动画效果自然流畅。最后,文章提供了完整的项目代码和详细的解释,帮助读者更好地理解和掌握这些前端技术。

qq_40791475的博客 2393

CSS3制作网页旋转小魔方

##制作旋转小魔方 今天学习了CSS3 - 过渡 的相关内容,结合CSS3 - 转换 的知识点,制作了一个网页的旋转小魔方。 上代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>魔方</title> <style type="text/css"> body{ -webkit-perspective: 800px;

建筑队学徒的博客 501

CSS3实现3D立体旋转动画特效

效果图: 源代码下载地址:https://download.youkuaiyun.com/download/qq15577969/11869377 html+css3代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>CSS3实现3D魔方动画...

美奇软件开发工作室 3037

css实现3d立体魔方

今天来做一个简单的3d魔方 先看效果图吧!把这个看会了,一些网上的3d的相册你就都会了 一、我们先准备好们的html代码 <!DOCTYPE html> <html lang="zh-CN"> <head> <title>3d立体魔方</title> <meta charset="UTF-8...

w_xiaolin的博客 3987

前端实现3D魔方旋转特效

代码自用自取,复制粘贴直接使用,喜欢的话可以查看博主其它文章,贡献一丢丢的浏览量,感激不尽。 先看一下效果 <!DOCTYPE html> <html> <head> <title>魔方</title> <meta charset="utf-8"> <style type="text/css"> *{ margin: 0; padding: 0; } body{ width: 10.

CreatorRay的博客 2857
下一篇: (转)外边合并问题
Yvan_Lin
博客等级 码龄10年 11粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值