520情人节到了,作为程序猿的我用代码给女朋友送了一个礼物「可以拿去送给自己喜欢的人」

写在前面: 我是「扬帆向海」,这个昵称来源于我的名字以及女朋友的名字。我热爱技术、热爱开源、热爱编程。技术是开源的、知识是共享的。

这博客是对自己学习的一点点总结及记录,如果您对 Java算法 感兴趣,可以关注我的动态,我们一起学习。

用知识改变命运,让我们的家人过上更好的生活

文章目录

      • 一、效果展示
      • 二、知识储备
      • 三、画立方体
        • 1. 编写HTML代码
        • 2. 编写CSS代码
          • 2.1 外层立方体样式
          • 2.2 先做上面的一个面
          • 2.2 在立方体容器中创造3d效果
          • 2.3 旋转画好的面
          • 2.4 完成其它几个面的制作
          • 2.5 绘制嵌套的内层立方体
          • 2.6 使立方体旋转起来
          • 2.7 添加鼠标移入后的效果
      • 四、完整代码
        • 1. html代码
        • 2. css代码
      • 五、源代码获取

谁说我们程序猿不浪漫,马上要到520情人节了。当你在为女朋友买什么礼物犯愁的时候,不妨花点时间给她送个别样的礼物。更能体现你的真心,何乐而不为了?

在这里插入图片描述

一、效果展示

首先看一下效果,由于无法传视频,这里只使用动图演示,就听不到美妙的音乐了。

如果不想看制作过程,可以直接拉到最后去看完整代码就可以了。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

二、知识储备

要做3D立方体,首先要清楚几个面
在这里插入图片描述

x轴平行,y轴垂直,z轴指向正对屏幕。z轴的零点就是屏幕所在的平面。

其中用到几个属性:

  1. rotateX()
    通过 rotateX() 属性,可以使元素围绕 X 轴以指定的度数进行旋转。

  2. rotateY()
    通过 rotateY() 属性,可以使元素围绕 Y 轴以指定的度数进行旋转。

  3. rotateZ()
    通过 rotateZ() 属性,可以使元素围绕 Z 轴以指定的度数进行旋转。

  4. transform-style
    通过transform-style属性,可以指定嵌套元素如何在3D空间中呈现
    值:flat值为默认值,表示所有子元素在2D平面呈现。preserve-3d表示所有子元素在3D空间中呈现。

  5. translateZ()
    通过.translateZ()属性,可以使元素沿Z轴平移
    注意:只有在transform-style:preserve-3d情况下,才起作用。

  6. opacity
    规定不透明度。从 0.0 (完全透明)到 1.0(完全不透明)。

三、画立方体

这个立方体首先是包裹在一个 div 里, 有上下前后左右六个面组成。

1. 编写HTML代码

用6个div表示六个面

html代码

<div class="cube"><!-- 外层立方体 --><div class="outer-cube"><div class="outer-top">1</div><div class="outer-bottom">2</div><div class="outer-front">3</div><div class="outer-back">4</div><div class="outer-left">5</div><div class="outer-right">6</div></div><!-- 内层立方体 --><div class="inner-cube"><div class="inner-top"></div><div class="inner-bottom"> </div><div class="inner-front"></div><div class="inner-back"></div><div class="inner-left"></div><div class="inner-right"></div></div>
</div>

2. 编写CSS代码

首先在.cube 里设置宽高,让整体居中。不可省略的有定位,目的是为了让每个小盒子叠在一起,方便后来旋转及平移操作,之后就是创造3d空间

* {margin: 0px;padding: 0px;}html {overflow: hidden;height: 100%;
}.cube {position: relative;margin: 0px auto;margin-top: 9%;margin-left: 42%;width: 200px;height: 200px;
}
2.1 外层立方体样式
.outer-cube .outer-top,
.outer-cube .outer-bottom,
.outer-cube .outer-right,
.outer-cube .outer-left,
.outer-cube .outer-front,
.outer-cube .outer-back {position: absolute;top: 0;left: 0;width: 200px;height: 200px;font-size: 30px;border: 1px solid red;opacity: 0.3; 
}

在这里插入图片描述

2.2 先做上面的一个面
.outer-top {background-color: rgb(236, 32, 17);
}

在这里插入图片描述

2.2 在立方体容器中创造3d效果
.cube {/* 创造3D效果 */transform-style: preserve-3d;/* 显示立体效果 */transform: rotateX(-30deg) rotateY(57deg);
}

图2

2.3 旋转画好的面

原来的位置是正对着我们的,需要让正对我们的面跑到上面去,方法是:以X轴向上旋转90度,坐标系也跟着X轴发生了变化,此时Z轴是向上的,再向Z轴平移100px。

.outer-top {background-color: rgb(236, 32, 17);transform: rotateX(90deg) translateZ(100px);
}

在这里插入图片描述

2.4 完成其它几个面的制作
.outer-bottom {background-color: rgb(0, 255, 13);transform: rotateX(-90deg) translateZ(100px);
}.outer-front {background-color: blue;transform: rotateY(0deg) translateZ(100px);
}.outer-back {background-color:rgb(231, 228, 28);transform: translateZ(-100px) rotateY(180deg);
}.outer-left {background-color: rgb(0, 124, 128);transform: rotateY(90deg) translateZ(100px);
}.outer-right {background-color: rgb(255, 0, 221);transform: rotateY(-90deg) translateZ(100px);
}

在这里插入图片描述

2.5 绘制嵌套的内层立方体
.inner-cube>div {width: 130px;height: 130px;position: absolute;top: 35px;left: 35px;
}
.inner-top {background-color: deepskyblue;transform: rotateX(90deg) translateZ(65px);
}.inner-bottom {background-color: deepskyblue;transform: rotateX(-90deg) translateZ(65px);
}.inner-front {background-color: deepskyblue;transform: rotateY(0deg) translateZ(65px);
}.inner-back {background-color: deepskyblue;transform: translateZ(-65px) rotateY(180deg);
}.inner-left {background-color: deepskyblue;transform: rotateY(90deg) translateZ(65px);
}.inner-right {background-color: deepskyblue;transform: rotateY(-90deg) translateZ(65px);
}

在这里插入图片描述

2.6 使立方体旋转起来
.cube {animation: rotate 15s infinite;
}
.cube .outer-cube, .cube .inner-cube {transform-style: preserve-3d;
}/* 旋转 */
@keyframes rotate {from {transform: rotateX(0deg) rotateY(0deg);}to {transform: rotateX(360deg) rotateY(360deg);}
}

在这里插入图片描述

2.7 添加鼠标移入后的效果
.cube:hover .outer-top {right: -70px;bottom: -70px;width: 200px;height: 200px;opacity: 0.8;transform: rotateX(90deg) translateZ(200px);
}.cube:hover .outer-bottom {right: -70px;bottom: -70px;width: 200px;height: 200px;opacity: 0.8;transform: rotateX(-90deg) translateZ(200px);
}.cube:hover .outer-front {right: -70px;bottom: -70px;width: 200px;height: 200px;opacity: 0.8;transform: rotateY(0deg) translateZ(200px);
}.cube:hover .outer-back {right: -70px;bottom: -70px;width: 200px;height: 200px;opacity: 0.8;transform: translateZ(-200px) rotateY(180deg);
}.cube:hover .outer-left {right: -70px;bottom: -70px;width: 200px;height: 200px;opacity: 0.8;transform: rotateY(90deg) translateZ(200px);
}.cube:hover .outer-right {right: -70px;bottom: -70px;width: 200px;height: 200px;opacity: 0.8;transform: rotateY(-90deg) translateZ(200px);
}

在这里插入图片描述

四、完整代码

1. html代码

<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=div, initial-scale=1.0">
<title>Document</title>
<link rel="stylesheet" href="./css/program.css">
</head>
<body>
<div class="title">3D立方体旋转
</div>
<audio controls="controls" autoplay="autoplay"><source src="./video/love.mp3" type="audio/mpeg"/>Your browser does not support the audio element.</audio>
<div class="cube"><!-- 外层立方体 --><div class="outer-cube"><div class="outer-top"><img src="images/1.jpg"/></div><div class="outer-bottom"><img src="images/2.jpg"/></div><div class="outer-front"><img src="images/3.jpg"/></div><div class="outer-back"><img src="images/4.jpg"/></div><div class="outer-left"><img src="images/5.jpg"/></div><div class="outer-right"><img src="images/6.jpg"/></div></div><!-- 内层立方体 --><div class="inner-cube"><div class="inner-top"><img src="images/01.jpg"/></div><div class="inner-bottom"><img src="images/02.jpg"/></div><div class="inner-front"><img src="images/03.jpg"/></div><div class="inner-back"><img src="images/04.jpg"/></div><div class="inner-left"><img src="images/05.jpg"/></div><div class="inner-right"><img src="images/06.jpg"/></div></div>
</div>
<div><div class="message"><div class="author">扬帆向海制作</div><div class="tip">温馨提示:鼠标移入移出立方体,将会显示效果!</div></div>
</div>
</body>
</html>

2. css代码

* {margin: 0px;padding: 0px;
}html {overflow: hidden;height: 100%;background: linear-gradient(rgb(0, 238, 255) 0%, #000 100%);
}.title {color: rgb(255, 0, 200);text-align: center;text-shadow: 0px 1px 0px #999, 0px 2px 0px #888, 0px 3px 0px #777, 0px 4px 0px #666, 0px 5px 0px #555, 0px 6px 0px #444, 0px 7px 0px #333, 0px 8px 7px #001135;font-size: 40px;
}.cube {position: relative;margin: 0px auto;margin-top: 9%;margin-left: 42%;width: 200px;height: 200px;transform: rotateX(-30deg) rotateY(-80deg);transform-style: preserve-3d;animation: rotate 15s infinite;
}.cube .outer-cube,
.cube .inner-cube {transform-style: preserve-3d;
}/* 旋转立方体 */
@keyframes rotate {from {transform: rotateX(0deg) rotateY(0deg);}to {transform: rotateX(360deg) rotateY(360deg);}
}/* 外层立方体样式 */
.outer-cube .outer-top,
.outer-cube .outer-bottom,
.outer-cube .outer-right,
.outer-cube .outer-left,
.outer-cube .outer-front,
.outer-cube .outer-back {position: absolute;top: 0;left: 0;width: 200px;height: 200px;border: 1px solid #fff;opacity: 0.3;transition: all .9s;
}.outer-cube img {width: 200px;height: 200px;
}.outer-top {transform: rotateX(90deg) translateZ(100px);
}.outer-bottom {transform: rotateX(-90deg) translateZ(100px);
}.outer-front {transform: rotateY(0deg) translateZ(100px);
}.outer-back {transform: translateZ(-100px) rotateY(180deg);
}.outer-left {transform: rotateY(90deg) translateZ(100px);
}.outer-right {transform: rotateY(-90deg) translateZ(100px);
}/* 嵌套的内层立方体样式 */
.inner-cube>div {position: absolute;top: 35px;left: 35px;width: 130px;height: 130px;
}.inner-cube img {width: 130px;height: 130px;
}.inner-top {transform: rotateX(90deg) translateZ(65px);
}.inner-bottom {transform: rotateX(-90deg) translateZ(65px);
}.inner-front {transform: rotateY(0deg) translateZ(65px);
}.inner-back {transform: translateZ(-65px) rotateY(180deg);
}.inner-left {transform: rotateY(90deg) translateZ(65px);
}.inner-right {transform: rotateY(-90deg) translateZ(65px);
}.cube:hover .outer-top {right: -70px;bottom: -70px;opacity: 0.8;transform: rotateX(90deg) translateZ(200px);
}.cube:hover .outer-bottom {right: -70px;bottom: -70px;opacity: 0.8;transform: rotateX(-90deg) translateZ(200px);
}.cube:hover .outer-front {right: -70px;bottom: -70px;opacity: 0.8;transform: rotateY(0deg) translateZ(200px);
}.cube:hover .outer-back {right: -70px;bottom: -70px;opacity: 0.8;transform: translateZ(-200px) rotateY(180deg);
}.cube:hover .outer-left {right: -70px;bottom: -70px;opacity: 0.8;transform: rotateY(90deg) translateZ(200px);
}.cube:hover .outer-right {right: -70px;bottom: -70px;opacity: 0.8;transform: rotateY(-90deg) translateZ(200px);
}.message .author {position: absolute;right: 50px;background-image: -webkit-linear-gradient(left, blue, #66ffff 10%, #cc00ff 20%, #CC00CC 30%, #CCCCFF 40%, #00FFFF 50%, #CCCCFF 60%, #CC00CC 70%, #CC00FF 80%, #66FFFF 90%, blue 100%);font-size: 35px;-webkit-text-fill-color: transparent;-webkit-background-clip: text;-webkit-background-size: 200% 100%;-webkit-animation: masked-animation 4s linear infinite;
}@keyframes masked-animation {0% {background-position: 0 0;}100% {background-position: -100% 0;}
}.message .tip {position: absolute;right: 0px;margin-top: 60px;color: red;font-size: 18px;
}

五、源代码获取

如果需要源码里面的所有文件, 可以微信关注公众号: 扬帆向海, 回复 520,即可获取!

在这里插入图片描述


由于水平有限,本博客难免有不足,恳请各位大佬不吝赐教!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/64006.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

现在论文用手写还是用计算机写,我需要一台计算机来写毕业论文吗?平板电脑可以用来写毕业论文吗?值得为毕业论文购买一台计算机吗?...

首先,您必须搜索信息;其次,本文是易于修改的电子版本. 但是,如果您现在不购买计算机,由于撰写论文,就无需购买计算机,只需到计算机室购买,以后再购买,下班后再购买一台更好的计算机 什么是毕业论文?您需要写多少个单词?您需要电脑吗? 根据您的,是不同的,单词的数…

计算机专业毕业设计(论文+系统)_kaic

基于SpringBoot的学生学籍管理系统的设计与实现基于SpringBoot的城乡客运服务系统的设计与实现基于Spring BootVue的蜗牛运动管理系统的设计与实现基于微信小程序的寻物平台的设计与实现基于PHP的房产经纪服务系统的设计与实现基于SpringBoot的电动车充电桩管理系统的设计与实现…

校外国外博士论文去哪里查找下载

国外博士论文可去ProQuest学位论文全文数据库查找下载&#xff0c;ProQuest学位论文全文数据库是将ProQuest公司PQDD文摘库&#xff08;现名PQDT&#xff09;中适合中国科研人员科研和教学使用的论文全文建设而成&#xff0c;并向全国百数家科研教学单位的读者提供全文服务。是…

计算机er在本科如何争取发论文?

写在前面 在本科阶段&#xff0c;GPA是衡量大家专业能力的重要标准之一&#xff0c;良好的绩点对以后继续读研深造还是找工作都有不小的帮助。GPA固然重要&#xff0c;但它并不是衡量大家能力的唯一标准&#xff0c;在大学阶段还有其他十分有含金量的事情能帮助大家提高自身实…

计算机相关专业本科毕业论文撰写指南

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 本科毕业论文背景 本科毕业论文是大学本科生完成学业的重要标志之一。通常情况下&#xff0c;本科毕业论文需要经过以下几个步骤&#xff1a; 选题&#xff1a;选择一个合适…

2023届计算机专业弄潮儿如何快速找毕业论文文献?

人生苦短&#xff0c;我用Python 一、准备工作 软件选择 Python3.8pycharm 模块 requests #模拟请求 Selenium # 浏览器自动化操作winr打开搜索框&#xff0c;输入cmd按确定打开命令提示符窗口&#xff0c;输入pip install 加上你要安装的模块名&#xff0c; 回车即可安…

记录一下计算机专业毕业论文用到的在线网站

写在前面的话&#xff1a; 在毕业设计完成期间&#xff0c;用到的还算顺手的网站&#xff0c;我个人觉得写论文的时候用WPS好一点&#xff0c;就是有点卡。 文档文献查找&#xff0c;无非就是知网&#xff0c;万方&#xff0c;学校图书馆一般都有入口。 processOn流程图&…

chatgpt赋能python:迭代器是什么?

迭代器是什么&#xff1f; 在Python编程语言中&#xff0c;迭代器是常见的编程工具。迭代器是一个对象&#xff0c;它允许您遍历容器中的元素。我们可以使用迭代器来访问序列&#xff0c;字典和集合等Python容器的元素。通过使用迭代器&#xff0c;我们可以访问容器中的元素一…

时序数据库-TDengine涛思(taos)使用以及踩坑

时序数据库 时序数据库(Time Series Database&#xff0c;TSDB) 全称为时间序列数据库。时间序列数据库指主要用于处理带时间标签&#xff08;按照时间的顺序变化&#xff0c;即时间序列化&#xff09;的数据&#xff0c;带时间标签的数据也称为时间序列数据 通过 DB-Engines…

chatgpt赋能Python-python迭代法

介绍 Python是一种被广泛应用于科学计算、人工智能、Web开发等领域的编程语言&#xff0c;迭代法(iterative method)是Python中非常重要的一种算法。迭代法是指通过不断重复执行某一操作从而逐步接近问题的解。在Python中&#xff0c;我们通常使用循环语句来实现迭代算法。 迭…

chatgpt赋能python:Python里的迭代器:如何利用这个强大的工具

Python里的迭代器&#xff1a;如何利用这个强大的工具 Python是一种流行的编程语言&#xff0c;它具有许多强大的功能来帮助您编写高效的代码。其中一个功能就是迭代器。在 Python 中&#xff0c;迭代器是从可迭代对象&#xff08;Iterables&#xff09;创建的对象&#xff0c…

自动售卖机的类型和工作流程分析

线上经济的崛起提高了人们的生活品质&#xff0c;促进了我国市场经济的发展。随着互联网的快速发展&#xff0c;线上经济资源已经饱和&#xff0c;线上和线下资源整合已经成为市场经济发展的方向&#xff0c;而自动售卖机正是线上和线下经济发展的连接纽带。 自动售卖机作为无人…

「应用案例」科聪赋能拣选AMR系统,落地新加坡新零售行业

在新零售浪潮推动下及人工智能等无人化技术日趋成熟的背景下&#xff0c;无人值守的新业态层出不穷&#xff0c;无人售货以自助购物、即时享受、移动支付等特点俘获了无数消费者。在互联网时代&#xff0c;无人售货在年轻消费群体中的接受度很高。 然而当货柜缺货时&#xff0c…

自动售卖系统开发系列——人脸识别自动售卖机三代BrotherSharp

大纲&#xff1a; 售卖机三代BrotherSharp的简介 售卖机三代BrotherSharp的方案介绍 #系统整体组成 #软件平台 #硬件平台 售卖机三代BrotherSharp的实现过程 #功能实现论述 #软件流程图 #源码 售卖机三代BrotherSharp的技术难点解析 参考文献 #售卖机三代BrotherSharp的简介…

基于FPGA的自动售货机

目录 一、项目功能 二、设计思路 按键实现&#xff1a; 数码管 蜂鸣器 LED灯 三、流程图 四、代码实现 1、按键消抖 key_debounce.v 2、LED状态选择 led_drive.v 3、蜂鸣器模块 beep_drive.v 4、数码管位选信号选择 sel_drive.v 5、数码管段选信号选择 seg…

基于FPGA的售货机

文章目录 一、要求二、效果三、设计思路1.按键2.数码管3.LED4.蜂鸣器 四、程序流程图五、项目RTL视图六、代码实现1.按键消抖2.售货机3.LED4.数码管5.音乐播放6.蜂鸣器7.顶层模块 七、仿真 一、要求 默认只接收0.5元、1元投币。货物为2.5元。满足2.5元后自动出货&#xff0c;出…

自动售卖系统开发系列——人脸识别自动售卖机二代ChingTom

大纲&#xff1a; 售卖机二代ChingTom的简介 售卖机二代ChingTom的方案介绍 #系统整体组成 #软件平台 #硬件平台 售卖机二代ChingTom的实现过程 #业务逻辑介绍 #软件流程图 #源码 售卖机二代ChingTom的技术难点解析 #售卖机二代ChingTom的简介 自动售卖机ChingTom是基于人脸…

无人售货机如何更智能?

行业现状 随着互联网经济渗透生活&#xff0c;无人零售行业的业务发展变得更加多样化。各类零售功能的自助售货机如饮料售货机、自助榨汁机、自助咖啡机、自助售酒机、盒饭售货机遍布城市大街小巷。新冠疫情之后&#xff0c;更是大量涌现口罩自动售货机、自助售药机等医药无人零…

医日健自助售药机

产品概述 医日健智能自助售药机整合了信息化管理技术 、远程监控管理技术 、自动化技术、人脸识别技术等多种先进技术 &#xff0c;结合药品零售的特点 &#xff0c;通过在医院、诊所、药店、便利店、社区等场所部署药品自助售药机 &#xff0c;为用户提供自选购药服务&#x…

医院买药也能自助? 揭秘24小时营业的AI售药机

疫情期间&#xff0c;你是否会期待&#xff0c;医院的人工取药窗口也能实现“无接触”&#xff1f;是否希望在突发状况时&#xff0c;可以避免等待&#xff0c;第一时间就能买到急需药品&#xff1f;现在&#xff0c;药品 AI 售卖机的出现&#xff0c;让这一切问题都得到了解决…