Open In App

Design a Interactive 360-degree Product Viewer using HTML CSS and JavaScript

Creating an interactive 360-degree product viewer with an attractive user interface using HTML, CSS, and JavaScript is a simple, interactive resource that can be used to provide a virtual tour of your product. In this article, we will create an Interactive 360-degree Product Viewer using HTML, CSS, and JavaScript.

Approach

Example: In this example, we will see the design of a product viewer with a 360-degree viewer.






<!DOCTYPE html>
<html lang="en">
  
<head>
    <meta charset="UTF-8">
    <meta name="viewport" 
          content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" 
          href="style.css">
    <script src="script.js" defer></script>
    <title>The 360° Product Viewer</title>
</head>
  
<body>
    <div class="product-viewer">
        <div class="viewer-container">
            <img src="/image/car.png" 
                 class="product-image"
                 id="productImage" 
                 alt="Product Image">
        </div>
        <div class="controls">
            <button id="prevBtn" class="control-button">
              Previous
              </button>
            <button id="nextBtn" class="control-button">
              Next
              </button>
        </div>
    </div>
</body>
  
</html>




/* style.css */
  
body {
    display: flex;
    justify-content: center;
    align-items: center;
    height: 100vh;
    margin: 0;
}
  
.product-viewer {
    display: flex;
    flex-direction: column;
    align-items: center;
    width: 400px;
}
  
.viewer-container {
    position: relative;
    width: 100%;
    overflow: hidden;
    box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
}
  
.product-image {
    width: 100%;
    transition: transform 0.5s;
}
  
.controls {
    display: flex;
    justify-content: space-between;
    width: 100%;
    margin-top: 10px;
}
  
.control-button {
    padding: 10px 20px;
    background-color: #000000;
    color: #fff;
    border: none;
    cursor: pointer;
    border-radius: 5px;
    transition: background-color 0.3s;
}
  
.control-button:hover {
    background-color: #0000FF;
}




// script.js
const productImage = 
    document.getElementById('productImage');
const nextBtn = 
    document.getElementById('nextBtn');
const prevBtn = 
    document.getElementById('prevBtn');
const topBtn = 
    document.getElementById('topBtn');
const bottomBtn = 
    document.getElementById('bottomBtn');
  
let currentFrame = 1;
const totalFrames = 36;
nextBtn.addEventListener('click', () => {
    if (currentFrame < totalFrames) {
        currentFrame++;
        update();
    }
});
prevBtn.addEventListener('click', () => {
    if (currentFrame > 1) {
        currentFrame--;
        update();
    }
});
function update() {
    const rotation = (currentFrame - 1) * (360 / totalFrames);
    productImage.style.transform = `rotateY(${rotation}deg)`;
}

Output:




Article Tags :