场景描述
整理资料发现在开始学习
HTML
时,写了几个具有3D效果
的页面,虽然简单,与其吃灰,那就把源码分享一下吧,不如做个记录也好。
效果图 + 源码
(1)、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>Document</title>
<style>
* {
margin: 0;
padding: 0;
}
.contain {
margin: 100px auto;
width: 800px;
height: 600px;
/* background: skyblue; */
position: relative;
perspective: 1000px;
transform-style: preserve-3d;
transform: rotateX(-30deg);
}
.contain>div {
width: 200px;
height: 200px;
/* perspective: 1000px; */
/* border: 1px solid black; */
transform-style: preserve-3d;
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
margin: auto;
/* transition: 2s; */
animation: run 2s linear infinite;
}
@keyframes run {
from {}
to {
/* transform: rotateX(360deg) rotateY(360deg) rotateZ(360deg); */
/* transform: rotateX(360deg) rotateY(360deg); */
transform: rotateY(360deg);
transform: rotate3d(1, 1, 1, 360deg);
/* transform: rotate3d(360deg, 360deg, 360deg); */
}
}
/* .contain:hover>div {} */
.box {
width: 200px;
height: 200px;
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
margin: auto;
border-radius: 100px;
}
.bg1 {
background: rgb(53, 63, 19);
transform: rotateY(60deg);
}
.bg2 {
background: rgb(31, 149, 173);
transform: rotateY(120deg);
}
.bg3 {
background: rgb(248, 90, 198);
transform: rotateY(180deg);
}
.bg4 {
background: rgb(212, 217, 175);
transform: rotateY(-120deg);
}
.bg5 {
background: rgb(233, 133, 133);
transform: rotateY(-60deg);
}
.bg6 {
background: rgb(172, 224, 49);
transform: rotateY(0deg);
}
</style>
</head>
<body>
<div class="contain">
<div>
<div class="box bg1"></div>
<div class="box bg2"></div>
<div class="box bg3"></div>
<div class="box bg4"></div>
<div class="box bg5"></div>
<div class="box bg6"></div>
</div>
</div>
</body>
</html>
(2)、正方体测试 + 鼠标渐入渐出效果
源码如下:
<!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>Document</title>
<style>
* {
margin: 0;
padding: 0;
}
body {
background: black;
}
.contain {
margin: 100px auto;
width: 800px;
height: 600px;
position: relative;
perspective: 1000px;
transform-style: preserve-3d;
/* transform: rotateX(-30deg) rotateY(-30deg); */
}
.contain>div {
width: 200px;
height: 200px;
transform-style: preserve-3d;
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
margin: auto;
/* transition: 2s; */
animation: run 4s linear infinite;
}
@keyframes run {
0% {}
/* 50% {
transform: rotate3d(1, 1, 1, 360deg) rotateX(360deg) rotateZ(360deg);
transform: rotate3d(1, 1, 1, 360deg);
} */
100% {
/* transform: rotate3d(1, 1, 1, 360deg) rotateX(360deg) rotateZ(360deg); */
/* transform: rotate3d(-1, -1, -1, -360deg); */
transform: rotate3d(1, -1, 1, 360deg);
}
}
.contain:hover>div {
animation-play-state: paused;
}
.box {
width: 200px;
height: 200px;
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
margin: auto;
text-align: center;
line-height: 200px;
border-radius: 30px;
}
.box>h1 {
font-size: 160px;
opacity: .8;
color: white;
}
.bg1 {
background: rgba(53, 63, 19, .6);
transform: rotateX(-90deg) translateZ(100px);
}
.bg2 {
background: rgba(31, 149, 173, .6);
transform: rotateX(90deg) translateZ(100px);
}
.bg3 {
background: rgba(248, 90, 198, .6);
transform: rotateY(270deg) translateZ(100px);
}
.bg4 {
background: rgba(212, 217, 175, .6);
transform: rotateY(180deg) translateZ(100px);
}
.bg5 {
background: rgba(233, 133, 133, .6);
transform: rotateY(90deg) translateZ(100px);
}
.bg6 {
background: rgba(172, 224, 49, .6);
transform: rotateY(0deg) translateZ(100px);
}
</style>
</head>
<body>
<div class="contain">
<div>
<div class="box bg1">
<h1>1</h1>
</div>
<div class="box bg2">
<h1>2</h1>
</div>
<div class="box bg3">
<h1>3</h1>
</div>
<div class="box bg4">
<h1>4</h1>
</div>
<div class="box bg5">
<h1>5</h1>
</div>
<div class="box bg6">
<h1>6</h1>
</div>
</div>
</div>
</body>
</html>
(3)、贴图正方体 + 鼠标渐入渐出效果
源码如下:
<!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>Document</title>
<style>
* {
margin: 0;
padding: 0;
}
.contain {
margin: 100px auto;
width: 800px;
height: 600px;
position: relative;
perspective: 1000px;
transform-style: preserve-3d;
}
.contain>div {
width: 400px;
height: 400px;
/* perspective: 1200px; */
transform-style: preserve-3d;
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
margin: auto;
/* transition: 2s; */
animation: run 6s linear infinite;
}
@keyframes run {
from {}
to {
/* transform: rotateY(720deg) rotateX(720deg) rotateZ(720deg); */
transform: rotateY(720deg) rotateX(720deg);
/* transform: rotateY(720deg); */
/* transform: rotate3d(1, 1, 1, 360deg); */
}
}
.contain:hover>div {
animation-play-state: paused;
}
.box {
width: 400px;
height: 400px;
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
margin: auto;
text-align: center;
/* line-height: 400px; */
}
.box>img {
width: inherit;
height: inherit;
}
.bg1 {
background: rgba(53, 63, 19, .6);
transform: rotateX(-90deg) translateZ(200px);
}
.bg2 {
background: rgba(31, 149, 173, .6);
transform: rotateX(90deg) translateZ(200px);
}
.bg3 {
background: rgba(248, 90, 198, .6);
transform: rotateY(270deg) translateZ(200px);
}
.bg4 {
background: rgba(212, 217, 175, .6);
transform: rotateY(180deg) translateZ(200px);
}
.bg5 {
background: rgba(233, 133, 133, .6);
transform: rotateY(90deg) translateZ(200px);
}
.bg6 {
background: rgba(172, 224, 49, .6);
transform: rotateY(0deg) translateZ(200px);
}
</style>
</head>
<body>
<div class="contain">
<div>
<div class="box bg1">
<img src="./images/am1.gif" alt="">
</div>
<div class="box bg2">
<img src="./images/am2.gif" alt="">
</div>
<div class="box bg3">
<img src="./images/am3.gif" alt="">
</div>
<div class="box bg4">
<img src="./images/am4.gif" alt="">
</div>
<div class="box bg5">
<img src="./images/am5.gif" alt="">
</div>
<div class="box bg6">
<img src="./images/am6.gif" alt="">
</div>
</div>
</div>
</body>
</html>
(4)、夜光球体
源码如下:
<!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>Document</title>
<style>
* {
margin: 0;
padding: 0;
}
body {
background: black;
}
.contain {
margin: 100px auto;
width: 800px;
height: 600px;
/* background: skyblue; */
perspective: 1000px;
transform-style: preserve-3d;
}
.contain>div {
width: 400px;
height: 400px;
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
margin: auto;
border: 1px solid black;
transform-style: preserve-3d;
/* transform: rotateX(30deg); */
/* transition: 2s; */
animation: run 4s linear infinite;
}
@keyframes run {
0% {}
100% {
transform: rotate3d(1, 1, 1, 360deg);
}
}
.box1 {
width: 200px;
height: 200px;
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
margin: auto;
}
.box2 {
width: 150px;
height: 150px;
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
margin: auto;
}
.bg1 {
/* border: 1px solid red; */
border-radius: 100px;
box-shadow: 0px 0px 100px red;
}
.bg2 {
/* border: 1px solid red; */
border-radius: 100px;
box-shadow: 0px 0px 100px red;
}
.contain>div>div:nth-child(2) {
transform: translateZ(50px);
}
.contain>div>div:nth-child(3) {
transform: translateZ(-50px);
}
.contain>div>div:nth-child(4) {
transform: rotateX(90deg);
}
.contain>div>div:nth-child(5) {
transform: translateY(-50px) rotateX(90deg);
}
.contain>div>div:nth-child(6) {
transform: translateY(50px) rotateX(90deg);
}
.contain>div>div:nth-child(7) {
transform: translateX(-50px) rotateY(90deg);
}
.contain>div>div:nth-child(8) {
transform: translateX(50px) rotateY(90deg);
}
</style>
</head>
<body>
<div class="contain">
<div>
<div class="box1 bg1"></div>
<div class="box2 bg2"></div>
<div class="box2 bg2"></div>
<div class="box1 bg1"></div>
<div class="box2 bg2"></div>
<div class="box2 bg2"></div>
<div class="box2 bg2"></div>
<div class="box2 bg2"></div>
</div>
</div>
</body>
</html>
(5)、球体相册
源码如下:
<!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>Document</title>
<link rel="stylesheet" href="./css/05.css">
</head>
<body>
<div class="contain">
<div>
<!-- 球体部分 -->
<div class="box1 bg1"></div>
<div class="box2 bg2"></div>
<div class="box2 bg2"></div>
<div class="box1 bg1"></div>
<div class="box2 bg2"></div>
<div class="box2 bg2"></div>
<div class="box2 bg2"></div>
<div class="box2 bg2"></div>
<!-- 相册部分 -->
<div class="box3"><img src="./images/am1.gif" alt=""></div>
<div class="box3"><img src="./images/am2.gif" alt=""></div>
<div class="box3"><img src="./images/am3.gif" alt=""></div>
<div class="box3"><img src="./images/am4.gif" alt=""></div>
<div class="box3"><img src="./images/am5.gif" alt=""></div>
<div class="box3"><img src="./images/am6.gif" alt=""></div>
</div>
</div>
</body>
</html>
- 以下是
css
源码
* {
margin: 0;
padding: 0;
}
body {
background: black;
}
.contain {
margin: 100px auto;
width: 800px;
height: 600px;
perspective: 1000px;
transform-style: preserve-3d;
}
.contain>div {
width: 400px;
height: 400px;
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
margin: auto;
transform-style: preserve-3d;
animation: run 4s linear infinite;
}
@keyframes run {
0% {}
100% {
transform: rotate3d(1, 1, -1, 360deg);
}
}
.box1 {
width: 200px;
height: 200px;
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
margin: auto;
}
.box2 {
width: 150px;
height: 150px;
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
margin: auto;
}
.box3 {
width: 200px;
height: 200px;
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
margin: auto;
border: 10px solid #ccc;
box-shadow: 0px 0px 60px white;
opacity: .8;
}
.box3>img {
width: inherit;
height: inherit;
}
.bg1 {
border-radius: 100px;
box-shadow: 0px 0px 100px red;
}
.bg2 {
border-radius: 100px;
box-shadow: 0px 0px 100px red;
}
.contain>div>div:nth-child(2) {
transform: translateZ(50px);
}
.contain>div>div:nth-child(3) {
transform: translateZ(-50px);
}
.contain>div>div:nth-child(4) {
transform: rotateX(90deg);
}
.contain>div>div:nth-child(5) {
transform: translateY(-50px) rotateX(90deg);
}
.contain>div>div:nth-child(6) {
transform: translateY(50px) rotateX(90deg);
}
.contain>div>div:nth-child(7) {
transform: translateX(-50px) rotateY(90deg);
}
.contain>div>div:nth-child(8) {
transform: translateX(50px) rotateY(90deg);
}
.contain>div>div:nth-child(9) {
transform: translateZ(200px);
}
.contain>div>div:nth-child(10) {
transform: translateZ(-200px) rotateX(180deg);
}
.contain>div>div:nth-child(11) {
transform: translateX(200px) rotateY(90deg);
}
.contain>div>div:nth-child(12) {
transform: translateX(-200px) rotateY(90deg);
}
.contain>div>div:nth-child(13) {
transform: rotateX(90deg) translateZ(200px);
}
.contain>div>div:nth-child(14) {
transform: rotateX(90deg) translateZ(-200px);
}
(6)、行星环绕相册
源码如下:
<!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>Document</title>
<link rel="stylesheet" href="./css/06.css">
</head>
<body>
<div class="contain">
<div>
<div class="box"><img src="./images/01-a.png" alt=""></div>
<div class="box"><img src="./images/02-a.png" alt=""></div>
<div class="box"><img src="./images/03-a.png" alt=""></div>
<div class="box"><img src="./images/04-a.png" alt=""></div>
<div class="box"><img src="./images/05-a.png" alt=""></div>
<div class="box"><img src="./images/06-a.png" alt=""></div>
<div class="box"><img src="./images/07-a.png" alt=""></div>
<div class="box"><img src="./images/08-a.png" alt=""></div>
<div class="box"><img src="./images/06-a.png" alt=""></div>
<div class="box"><img src="./images/05-a.png" alt=""></div>
<div class="box"><img src="./images/03-a.png" alt=""></div>
<div class="box"><img src="./images/12-a.png" alt=""></div>
<div class="box1 bg1"></div>
<div class="box2 bg2"></div>
<div class="box2 bg2"></div>
<div class="box1 bg1"></div>
<div class="box2 bg2"></div>
<div class="box2 bg2"></div>
<div class="box2 bg2"></div>
<!-- <div class="box2 bg2">8</div> -->
</div>
</div>
</body>
</html>
- 以下是
css
源码
* {
margin: 0;
padding: 0;
}
/* body {
background: black;
} */
.contain {
margin: 100px auto;
width: 800px;
height: 600px;
/* background: skyblue; */
perspective: 1000px;
transform-style: preserve-3d;
/* transform: rotateX(-18deg); */
animation: rotate_contain 10s linear infinite;
/* transform: rotate3d(1, 1, 1, -34deg); */
}
.contain>div {
width: 400px;
height: 400px;
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
margin: auto;
/* border: 1px solid black; */
transform-style: preserve-3d;
/* transform: rotateX(-18deg) rotateY(-18deg); */
animation: run 10s linear infinite;
/* transform: rotateY(-18deg); */
}
@keyframes run {
0% {}
100% {
transform: rotate3d(0, 1, 0, 360deg);
}
}
@keyframes rotate_contain {
0% {
transform: rotateX(-30deg);
}
50% {
transform: rotateX(30deg);
}
100% {
transform: rotateX(-30deg);
}
}
.box {
width: 80px;
height: 150px;
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
margin: auto;
}
.box>img {
width: inherit;
height: inherit;
}
.contain>div>div:nth-child(1) {
/* background: yellow; */
transform: rotateY(30deg) translateZ(400px);
}
.contain>div>div:nth-child(2) {
/* background: rgb(201, 201, 174); */
transform: rotateY(60deg) translateZ(400px);
}
.contain>div>div:nth-child(3) {
/* background: rgb(62, 160, 145); */
transform: rotateY(90deg) translateZ(400px);
}
.contain>div>div:nth-child(4) {
/* background: rgb(73, 98, 225); */
transform: rotateY(120deg) translateZ(400px);
}
.contain>div>div:nth-child(5) {
/* background: rgb(155, 62, 156); */
transform: rotateY(150deg) translateZ(400px);
}
.contain>div>div:nth-child(6) {
/* background: yellow; */
transform: rotateY(180deg) translateZ(400px);
}
.contain>div>div:nth-child(7) {
/* background: rgb(201, 201, 174); */
transform: rotateY(210deg) translateZ(400px);
}
.contain>div>div:nth-child(8) {
/* background: rgb(62, 160, 145); */
transform: rotateY(240deg) translateZ(400px);
}
.contain>div>div:nth-child(9) {
/* background: rgb(73, 98, 225); */
transform: rotateY(270deg) translateZ(400px);
}
.contain>div>div:nth-child(10) {
/* background: rgb(155, 62, 156); */
transform: rotateY(300deg) translateZ(400px);
}
.contain>div>div:nth-child(11) {
/* background: rgb(73, 98, 225); */
transform: rotateY(330deg) translateZ(400px);
}
.contain>div>div:nth-child(12) {
/* background: rgb(73, 98, 225); */
transform: rotateY(360deg) translateZ(400px);
}
.box1 {
width: 200px;
height: 200px;
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
margin: auto;
text-align: center;
font-size: 50px;
line-height: 200px;
}
.box2 {
width: 150px;
height: 150px;
position: absolute;
left: 0;
top: 0;
right: 0;
bottom: 0;
margin: auto;
text-align: center;
font-size: 50px;
line-height: 200px;
}
.bg1 {
/* border: 1px solid red; */
border-radius: 100px;
box-shadow: 0px 0px 100px rgb(52, 186, 231);
}
.bg2 {
/* border: 1px solid red; */
border-radius: 100px;
box-shadow: 0px 0px 100px rgb(0, 208, 255);
}
.contain>div>div:nth-child(13) {
transform: translateZ(0px);
/* background: black; */
}
.contain>div>div:nth-child(14) {
/* background: black; */
transform: translateZ(-50px);
}
.contain>div>div:nth-child(15) {
/* background: black; */
transform: rotateX(90deg) translateZ(50px);
}
.contain>div>div:nth-child(16) {
/* background: black; */
transform: translateY(0px) rotateX(90deg);
}
.contain>div>div:nth-child(17) {
/* background: black; */
transform: translateY(50px) rotateX(90deg);
}
.contain>div>div:nth-child(18) {
/* background: black; */
transform: translateZ(50px);
}
.contain>div>div:nth-child(19) {
/* transform: translateZ(100px) rotateY(90deg); */
background: white;
}
描述说明
这些代码已经蛮久了,没有写注释,见谅。当然也仅仅是作为参考。鉴于有些图片不好直接上传,最后我会把所有
源码包括图片等资源一起打包上传
。有需要的朋友可以自行免费领取。源码链接