I'm trying to create a slot machine... but have a problem on the CSS side. I didn't see this problem while working on 1 slot band, but I got this problem when tried to have 3 slot bands.
It's spinning as well while having 1 slot band. I tried many things to solve this alignment problem but couldn't solve it.
Align Problem:
This to while I have 1 slot band:
my Codes:
var degree1;
degree1 = '505deg';
var root = document.querySelector(':root');
root.style.setProperty('--slot1Rotate',degree1);
var panes = document.querySelectorAll(".slot_item"),
paneSize = 100,
zDepth = paneSize / (2 * Math.tan(Math.PI/panes.length));
for (let index = 0; index < panes.length; index++) {
var xAngle = 360 / panes.length * index;
panes[index].style.transform= "rotateX("+ xAngle +"deg) translateZ("+ zDepth +"px)";
}
var machine = document.querySelectorAll('.slot-machine');
var spinBtn = document.querySelector('#spinBtn');
for(let i=0;i<machine.length;i++){
spinBtn.addEventListener('click',function(){
machine[i].classList.add('animation');
});
machine[i].addEventListener('animationend',function() {
machine[i].style.transform = 'rotateX('+degree1+')';
})
}
:root{
--slot1Rotate: 0;
}
html, body {
height: 100%;
perspective: 600;
background-color: #282a3a;
}
.machine{
top: 25em;
display: flex;
gap: 10px;
align-items: center;
justify-content: center;
position: relative;
}
.slots{
display: flex;
gap: 10px;
justify-content: center;
align-items: center;
}
.slot1{
}
.slot2{
}
.slot3{
}
.slot-machine{
width: 120px;
height: 120px;
list-style: none;
padding: 0;
position:relative;
transform-style: preserve-3d;
}
.animation{
animation-name: x-spin;
animation-duration: 5s;
transition-duration: 3s;
transition-delay: 1s;
}
.slot_item {
height: 100px;
position: absolute;
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
text-align: center;
width: 100%;
background: rgba(255, 255, 255, 0.832);
backface-visibility: hidden;
}
<div class="machine">
<div class="slots">
<ul class="slot-machine slot1">
<li class="slot_item">1</li>
<li class="slot_item">2</li>
<li class="slot_item">3</li>
<li class="slot_item">4</li>
<li class="slot_item">5</li>
<li class="slot_item">6</li>
<li class="slot_item">7</li>
<li class="slot_item">8</li>
<li class="slot_item">9</li>
<li class="slot_item">10</li>
</ul>
<ul class="slot-machine slot2">
<li class="slot_item">1</li>
<li class="slot_item">2</li>
<li class="slot_item">3</li>
<li class="slot_item">4</li>
<li class="slot_item">5</li>
<li class="slot_item">6</li>
<li class="slot_item">7</li>
<li class="slot_item">8</li>
<li class="slot_item">9</li>
<li class="slot_item">10</li>
</ul>
<ul class="slot-machine slot3">
<li class="slot_item">1</li>
<li class="slot_item">2</li>
<li class="slot_item">3</li>
<li class="slot_item">4</li>
<li class="slot_item">5</li>
<li class="slot_item">6</li>
<li class="slot_item">7</li>
<li class="slot_item">8</li>
<li class="slot_item">9</li>
<li class="slot_item">10</li>
</ul>
</div>
<button id="spinBtn">Spin</button>
</div>



