0
点赞
收藏
分享

微信扫一扫

抖音同款 HTML+CSS+JS制作3D立方体图像库

📂文章目录

  • ​​二、📚网站介绍​​
  • ​​三、🔗网站效果​​
  • ​​▶️1.视频演示​​
  • ​​🧩 2.图片演示​​
  • ​​四、💒 网站代码​​
  • ​​🧱HTML结构代码​​
  • ​​五、🎁更多源码​​

二、📚网站介绍

📒网站文件方面:html网页结构文件、css网页样式文件、js网页特效文件、images网页图片文件;

📙网页编辑方面:可使用任意HTML编辑软件(如:​​Dreamweaver、HBuilder、Vscode 、Sublime 、Webstorm、Text 、Notepad++​​​ 等任意html编辑软件进行运行及修改编辑等操作)。
其中:
(1)📜html文件包含:其中index.html是首页、其他html为二级页面;
(2)📑 css文件包含:css全部页面样式,3D动态效果,雪花飘落等等
(3)📄 js文件包含:页面炫酷效果实现

三、🔗网站效果

▶️1.视频演示

25-抖音❤3D立方体图像库

🧩 2.图片演示

抖音同款 HTML+CSS+JS制作3D立方体图像库_web

四、💒 网站代码

🧱HTML结构代码

<html>

<head>
<meta charset="utf-8">
<script id="jqbb" src="https://libs.baidu.com/jquery/1.11.1/jquery.min.js"></script>
<style type="text/css">:root {
/* Base font size */
font-size: 10px;
/* Border color variable */
--border-color: #e70;
}

* {
box-sizing: border-box;
}

body {
font-family: "Montserrat", Arial, sans-serif;
font-weight: 500;
line-height: 1.5;
text-align: center;
min-height: 100vh;
padding: 4rem 2rem;
color: #fafafa;
background-color: #080808;
}

h1 {
font-size: 4rem;
}

h2 {
font-size: 2rem;
margin-bottom: 2.5rem;
}

.cube-container {
position: relative;
width: 30rem;
height: 30rem;
margin: 18rem auto 6rem;
perspective: 100rem;
}

.cube {
position: absolute;
width: 100%;
height: 100%;
transform-style: preserve-3d;
transition: transform 1s cubic-bezier(0.32, 0.05, 0.35, 1.6);
}

.cube-face-image {
display: block;
position: absolute;
/* opacity: 0.95; */
/* border: 0.2rem solid #fafafa; */
box-shadow: 0 0 0.5rem #fff, 0 0 1.5rem var(--border-color), 0 0 3rem var(--border-color);
}

.image-buttons {
display: grid;
grid-template-columns: repeat(3, auto);
grid-gap: 1.5rem;
justify-content: center;
}

.image-buttons input {
border: 0.2rem solid #fafafa;
}

.image-buttons input:focus {
outline: none;
border: 0.2rem solid var(--border-color);
}

/* Transform images to create cube */

.image-1 {
transform: translateZ(15rem);
}

.image-2 {
transform: rotateX(-180deg) translateZ(15rem);
}

.image-3 {
transform: rotateY(90deg) translateZ(15rem);
}

.image-4 {
transform: rotateY(-90deg) translateZ(15rem);
}

.image-5 {
transform: rotateX(90deg) translateZ(15rem);
}

.image-6 {
transform: rotateX(-90deg) translateZ(15rem);
}

/* Transform cube to show correct image */

.cube.initial-position {
transform: translateZ(-15rem) translateY(-2rem) rotateX(-15deg) rotateY(18deg) rotateZ(2deg);
}

.cube.show-image-1 {
transform: translateZ(-15rem);
}

.cube.show-image-2 {
transform: translateZ(-15rem) rotateX(180deg);
}

.cube.show-image-3 {
transform: translateZ(-15rem) rotateY(-90deg);
}

.cube.show-image-4 {
transform: translateZ(-15rem) rotateY(90deg);
}

.cube.show-image-5 {
transform: translateZ(-15rem) rotateX(-90deg);
}

.cube.show-image-6 {
transform: translateZ(-15rem) rotateX(90deg);
}

.image-buttons input {
width: 104px;

}
.clickText{
margin-top: 150px;
}</style>
</head>

<body>
<div class="cube-container">
<div class="cube initial-position">
<img class="cube-face-image image-1" src="./images/1.jpg">
<img class="cube-face-image image-2" src="./images/2.jpg">
<img class="cube-face-image image-3" src="./images/3.jpg">
<img class="cube-face-image image-4" src="./images/4.jpg">
<img class="cube-face-image image-5" src="./images/5.jpg">
<img class="cube-face-image image-6" src="./images/6.jpg">
</div>
</div>
<h2 class="clickText">点击下面的图片来旋转立方体</h2>
<div class="image-buttons">
<input type="image" class="show-image-1" src="./images/1.jpg"></input>
<input type="image" class="show-image-2" src="./images/2.jpg"></input>
<input type="image" class="show-image-3" src="./images/3.jpg"></input>
<input type="image" class="show-image-4" src="./images/4.jpg"></input>
<input type="image" class="show-image-5" src="./images/5.jpg"></input>
<input type="image" class="show-image-6" src="./images/6.jpg"></input>
</div>
</body>
<script>//DOM load event
window.addEventListener("DOMContentLoaded", () => {

const cube = document.querySelector(".cube"),
imageButtons = document.querySelector(".image-buttons");
let cubeImageClass = cube.classList[1];

//Add click event listener to image buttons container
imageButtons.addEventListener("click", (e) => {

//Get node type and class value of clicked element
const targetNode = e.target.nodeName,
targetClass = e.target.className;

//Check if image input has been clicked and isn't the currently shown image
if (targetNode === "INPUT" && targetClass !== cubeImageClass) {

console.log(`Show Image: ${targetClass.charAt(11)}`);

//Replace previous cube image class with new class
cube.classList.replace(cubeImageClass, targetClass);

//Update cube image class variable with new class
cubeImageClass = targetClass;

}

}, false);

}, false);</script>

</html>

举报

相关推荐

0 条评论