目 录
2.定义box的旋转角度(这个是为刚好的体现正方体每个角度的文字)
一、前言
1.本文讲解的响应式开发技术(HTML5+CSS3+Bootstrap)的变形中的3D转换、旋转等功能的代码,这也是很多教材的一个典型案例,具体功能是实现一个盒子模型的正方体能够以3D的方式进行旋转,同时每个面上会显示对应的方向数字;
2.本文将讲解涉及到3D转换、旋转等功能的知识点,其它方面会大致讲一下;
3.本代码是使用visual Studio Code编写的,其他软件如DW,HBX等都是可以的;
4.运行浏览器是谷歌,同时推荐使用谷歌浏览器;
5.这个案例是我上学跟老师所讲做出来的,有些地方不是很完美,请见谅也请多赐教;
二、知识点讲解
函数名 | 功能描述 | 功能说明 |
---|---|---|
translate3d(x,y,z) | 声明3D转化 | 元素需要移动的数值 |
translateX/Y/Z(x)/(y)/(z) | 单独用于x/y/z轴的值 | 元素需要移动的数值,这里的x.y.z是单独一段使用的 |
scale3d(x,y,z) | 声明3D缩放 | 表示缩放的比例,取值范围是正数、负数和小数 |
scaleX/Y/Z(x)/(y)/(z) | 沿着x/y/z轴缩放 | 表示缩放的比例,取值范围是正数、负数和小数,这里的x.y.z是单独一段使用的 |
rotate3d(x,y,z,angel) | 定义3D旋转 | x,y,z判断旋转的轴,旋转轴的值设置为1,否则为0,angel表示元素旋转角度 |
rotateX/Y/Z(x)/(y)/(z) | 沿着x/y/z轴3D旋转 | angel表示元素旋转角度,这里的x.y.z是单独一段使用的 |
三、实现的代码及功能
1.创建盒子模型以及定义3D变量的初始值
下面定义了正方体每一个面的样式及名字,这里需要使用<div>,同时把这个<div>声明名称为box
<body>
<div class="box">
<div class="front">前</div>
<div class="back">后</div>
<div class="left">左</div>
<div class="right">右</div>
<div class="top">上</div>
<div class="bottom">下</div>
</div>
</body>
下面需要在head头文件将声明的box定义3D变量的初始值,之前需要声明style;
<style>
.box{
width: 200px;
height: 200px;
background-color: aqua;
position: absolute;
left: 650px;
top: 250px;
transition: 18S;
perspective: 1000px;
transform-style: preserve-3d;
}
2.定义box的旋转角度(这个是为刚好的体现正方体每个角度的文字)
.box:hover{
transform: rotateX(-360deg) rotateY(360deg);
}
3.定义正方体每个面的样式
.front,.back,.left,.right,.top,.bottom{
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
border: 1px solid black;
font-size: 40px;
text-align: center;
line-height: 200px;
}
在定义完之后,可以看下运行的结果,目前是将正方体放在了中央,但文字以及3D效果和旋转还没有实现;
4.实现正方体各个面的位置及3D功能的效果
.front{
background-color: darkorange;
transform: translateZ(100px);
}
.back{
background-color: darkseagreen;
transform: translateZ(-100px);
}
效果图,前后两面
5.将正方体的各个面全部实现
.left{
background-color: aquamarine;
transform: rotateY(-90deg) translateZ(100px);
}
.right{
background-color: lightcoral;
transform: rotateY(90deg) translateZ(100px);
}
.top{
background-color: rgb(81, 216, 23);
transform: rotateX(90deg) translateZ(100px);
}
.bottom{
background-color: red;
transform: rotateX(-90deg) translateZ(100px);
}
实现后的效果图
到这就将这个正方体盒子模型的部分3D转换功能实现完了,下面是完整代码
四、案例完整代码
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>3D转换功能</title>
<style>
.box{
width: 200px;
height: 200px;
background-color: aqua;
position: absolute;
left: 650px;
top: 250px;
transition: 18S;
perspective: 1000px;
transform-style: preserve-3d;
}
.box:hover{
transform: rotateX(-360deg) rotateY(360deg);
}
.front,.back,.left,.right,.top,.bottom{
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
border: 1px solid black;
font-size: 40px;
text-align: center;
line-height: 200px;
}
.front{
background-color: darkorange;
transform: translateZ(100px);
}
.back{
background-color: darkseagreen;
transform: translateZ(-100px);
}
.left{
background-color: aquamarine;
transform: rotateY(-90deg) translateZ(100px);
}
.right{
background-color: lightcoral;
transform: rotateY(90deg) translateZ(100px);
}
.top{
background-color: rgb(81, 216, 23);
transform: rotateX(90deg) translateZ(100px);
}
.bottom{
background-color: red;
transform: rotateX(-90deg) translateZ(100px);
}
</style>
</head>
<body>
<div class="box">
<div class="front">前</div>
<div class="back">后</div>
<div class="left">左</div>
<div class="right">右</div>
<div class="top">上</div>
<div class="bottom">下</div>
</div>
</body>
</html>
五、案例运行的截图及视频
正方体盒子模型实现3D转换功能的效果视频