Вместо того, чтобы скрывать, показывать и перемещать созданные вами элементы костей, вы можете просто создать нужный элемент по щелчку (с некоторыми изменениями CSS, чтобы воспользоваться преимуществами генерации случайных чисел, чтобы помочь расположить точки).Кроме того, здесь нет реальной необходимости в jquery, но он используется в примере, поскольку вы использовали его в своем первоначальном подходе.
js создает прослушиватель события click для кнопки #roll
.При каждом нажатии кнопки переменная num
устанавливается на случайное число от 1 до 6. Переменная cls
устанавливает префикс для различных классов, которые определяют расположение точек на матрице - она предполагает бросокявляется нечетным числом, а затем корректируется, если оно четное.Затем мы удаляем все дочерние элементы из #die
с помощью empty()
(поэтому все точки из предыдущего броска удаляются перед добавлением новых).Наконец, мы используем цикл для добавления того же количества точек к #die
, которое сгенерировано в нашей переменной num
.В то же время мы добавляем пронумерованный класс для каждой точки (поэтому мы назвали наши классы odd-1
, 'even-1` и т. Д.).Например:
$('#roll').click(() => {
let num = Math.floor(Math.random() * 6) + 1;
let cls = 'odd-'
if (num % 2 === 0) {
cls = 'even-'
}
$('#die').empty();
for (let i = 1; i <= num; i++) {
$('#die').append('<div class="dot ' + cls + i + '"></div>');
}
});
.dice {
position: relative;
margin: 8px;
border: solid 3px #aaa;
border-radius: 3px;
width: 100px;
height: 100px;
}
.dice .dot {
position: absolute;
background: #000;
border-radius: 50%;
width: 16px;
height: 16px;
transform: translate(-8px, -8px);
}
.odd-1 {
top: 50%;
left: 50%;
}
.even-1,
.odd-2 {
top: 25%;
left: 25%;
}
.even-2,
.odd-3 {
top: 75%;
left: 75%;
}
.even-3,
.odd-4 {
top: 75%;
left: 25%;
}
.even-4,
.odd-5 {
top: 25%;
left: 75%;
}
.even-5 {
top: 50%;
left: 75%;
}
.even-6 {
top: 50%;
left: 25%;
}
<div>
<button id="roll" type="button">Click to roll</button>
<div id="die" class="dice">
</div>
</div>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>