Dado 3D en JavaScript

1
2
3
4
5
6

index.html

				
					<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Dado 3D</title>
  <link rel="stylesheet" href="styles.css">
</head>
<body>
  <div class="scene">
    <div class="cube" id="dice">
      <div class="face front">1</div>
      <div class="face back">2</div>
      <div class="face right">3</div>
      <div class="face left">4</div>
      <div class="face top">5</div>
      <div class="face bottom">6</div>
    </div>
  </div>

  <script src="script.js"></script>
</body>
</html>

				
			

styles.css

				
					body {
    display: flex;
    justify-content: center;
    align-items: center;
    height: 100vh;
    margin: 0;
    background: #000000;
    font-family: Arial, sans-serif;
    }

    .scene {
    width: 200px;
    height: 200px;
    perspective: 1000px;
    }

    .cube {
    width: 100%;
    height: 100%;
    position: relative;
    transform-style: preserve-3d;
    transform: rotateX(0deg) rotateY(0deg);
    transition: transform 1s ease;
    }

    .face {
    position: absolute;
    width: 200px;
    height: 200px;
    background: #000000;
    border: 2px solid yellow;
    border-radius: 10px;
    display: flex;
    justify-content: center;
    align-items: center;
    color: yellow;
    font-size: 5rem;
    font-weight: bold;
    }

    .front { transform: rotateY(0deg) translateZ(100px); }
    .back { transform: rotateY(180deg) translateZ(100px); }
    .right { transform: rotateY(90deg) translateZ(100px); }
    .left { transform: rotateY(-90deg) translateZ(100px); }
    .top { transform: rotateX(90deg) translateZ(100px); }
    .bottom { transform: rotateX(-90deg) translateZ(100px); }
				
			

script.js

				
					  const dice = document.getElementById('dice');

    let currentX = 0;
    let currentY = 0;

    function getRandomInt(min, max) {
    return Math.floor(Math.random() * (max - min + 1)) + min;
    }

    dice.addEventListener('click', () => {
    const randomX = getRandomInt(1, 4) * 90;
    const randomY = getRandomInt(1, 4) * 90;

    currentX += randomX;
    currentY += randomY;

    dice.style.transform = `rotateX(${currentX}deg) rotateY(${currentY}deg)`;
    });