如何使用HTML+CSS+JS制作3D立方体图像库

这篇文章主要介绍了如何使用HTML+CSS+JS制作3D立方体图像库的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何使用HTML+CSS+JS制作3D立方体图像库文章都会有所收获,下面我们一起来看看吧。

图片效果

如何使用HTML+CSS+JS制作3D立方体图像库  html 第1张

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进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

评论

有免费节点资源,我们会通知你!加入纸飞机订阅群

×
天气预报查看日历分享网页手机扫码留言评论Telegram