如何使用HTML+CSS+JS制作3D立方体图像库
这篇文章主要介绍了如何使用HTML+CSS+JS制作3D立方体图像库的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何使用HTML+CSS+JS制作3D立方体图像库文章都会有所收获,下面我们一起来看看吧。
图片效果
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; } h2 { font-size: 4rem; } h3 { 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> <h3 class="clickText">点击下面的图片来旋转立方体</h3> <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>
关于“如何使用HTML+CSS+JS制作3D立方体图像库”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“如何使用HTML+CSS+JS制作3D立方体图像库”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注蜗牛博客行业资讯频道。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:niceseo99@gmail.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。版权声明:如无特殊标注,文章均为本站原创,转载时请以链接形式注明文章出处。
评论