这是一款js和CSS3 3D立方体图片画廊特效。该3D立方体图片画廊特效通过CSS3进行布局,构建立方体,然后通过简单的js代码来完成点击缩略图进行立方体旋转的操作。

由于该该3D立方体图片画廊特效中使用了CSS变量和CSS grid,所以不是所以浏览器都支持该特效。

使用方法

在页面中引入样式文件style.css。

<link href="css/style.css" rel="stylesheet"> 
                
HTML结构

该3D立方体图片画廊特效的HTML结构如下:

<!--立方体图片画廊-->
<div class="cube-container">

  <div class="cube initial-position">

    <img class="cube-face-image image-1" src="img/1.jpg">
    
    <img class="cube-face-image image-2" src="img/2.jpg">
    
    <img class="cube-face-image image-3" src="img/3.jpg">
    
    <img class="cube-face-image image-4" src="img/4.jpg">
    
    <img class="cube-face-image image-5" src="img/5.jpg">
    
    <img class="cube-face-image image-6" src="img/6.jpg">

  </div>

</div>
<!-- 缩略图 -->
<div class="image-buttons">

  <input type="image" class="show-image-1" src="img/1.jpg"></input>

  <input type="image" class="show-image-2" src="img/2.jpg"></input>

  <input type="image" class="show-image-3" src="img/3.jpg"></input>

  <input type="image" class="show-image-4" src="img/4.jpg"></input>

  <input type="image" class="show-image-5" src="img/5.jpg"></input>

  <input type="image" class="show-image-6" src="img/6.jpg"></input>

</div>
                

3D立方体图片画廊特效

Javascript

然后在页面加载完毕之后,通过下面的js代码来完成点击缩略图旋转立方体的功能。

window.addEventListener("DOMContentLoaded", function () {

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

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

            //Get node type and class value of clicked element
            var 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.remove(cubeImageClass);
              cube.classList.add(targetClass);

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

该3D立方体图片画廊特效的codepen地址为:https://codepen.io/GeorgePark/pen/gegavO