Pick Three Numbers
generatePickThreeNumbers() {return 3 random numbers between 0-9 and print to screen}
by trentHarlem
HTML
<div id="container">
<header>
<h1> Pick Three Numbers</h1>
</header>
<div class="pick_three_numbers numbers">
<div class="pick_three number"></div>
<div class="pick_three number"></div>
<div class="pick_three number"></div>
</div>
<div id="button">
<button id="pick-three-button" class="generate-button" title="click me">Generate Winning Numbers</button>
</div>
</div>
CSS
@import url('https://fonts.googleapis.com/css2?family=Dela+Gothic+One&display=swap');
* {
margin: 0;
padding: 0;
font-family: 'Dela Gothic One', sans-serif;
color: #3d3d3d;
background-color: chartreuse;
}
#container {
display: flex;
flex-direction: column;
position: relative;
text-align: center;
margin: 20px auto;
width: 100%;
min-width: 390px;
height: 100%;
}
header {
text-align: center;
margin: 10px;
position: relative;
padding: 20px;
}
.numbers {
display: flex;
flex-direction: row;
gap: 15px;
justify-content: center;
}
.number {
display: inline-block;
width: 50px;
height: 50px;
border: 1px solid #ccc;
border-radius: 1%;
background-color: azure;
text-align: center;
line-height: 50px;
font-size: 24px;
transition: transform 0.5s;
transform-style: preserve-3d;
color: whitesmoke;
}
.flipped {
background-color: rgb(47, 94, 0);
border: 1px solid #ffbb66;
transition: all 0.3s ease-in-out;
transform: scale(1.2);
}
/* This applies the "flip" animation continuously to elements with the "flip" class, using the @keyframes rule to define the animation. */
.flip {
animation: flip 0.3s linear infinite;
background-color: #ff990087;
}
@keyframes flip {
from {
transform: rotateY(0deg);
}
to {
transform: rotateY(360deg);
}
}
/* close keyframes */
/* button DIV */
#button {
margin: 20px;
text-align: center;
}
/* button itself */
.generate-button {
border: none;
border-radius: 5px;
background: #ffb13c;
padding: 10px;
font-size: 24px;
}
.generate-button:hover {
transition: transform 0.5s;
transform: scale(1.1);
background: #ff9900;
}
.generate-button:active {
/* slow down animations */
transition: transform 0.5s;
transform: scale(0.9);
background: #dd8800;
/* ...
JavaScript
const pickThreeButton = document.getElementById('pick-three-button')
pickThreeButton.addEventListener('click', generateAndDisplayPickThreeNumbers)
const pickThreeElement = document.getElementById('pick_three_numbers')
const pickThreeNumberTiles = document.querySelectorAll('.pick_three')
function generatePickThreeNumbers() {
const numbers = []
// Generate 3 random numbers between 0 and 9
for (let i = 0; i < 3; i++) {
numbers.push(Math.floor(Math.random() * 9) + 1)
}
console.log(numbers)
return numbers
}
function generateAndDisplayPickThreeNumbers() {
pickThreeButton.disabled = true
pickThreeNumberTiles.forEach(n => (n.textContent = ''))
const numbers = generatePickThreeNumbers(3)
pickThreeNumberTiles.forEach((element, index) => {
element.classList.remove('flipped')
element.classList.add('flip')
setTimeout(() => {
element.classList.remove('flip')
element.classList.add('flipped')
element.textContent = numbers[index]
}, (index + 1) * 500)
})
navigator.clipboard.writeText(numbers.join(', '))
pickThreeButton.textContent = 'Numbers copied to clipboard!'
setTimeout(() => {
pickThreeButton.disabled = false
pickThreeButton.textContent = 'Generate Numbers'
}, 3500)
}