Задать вопрос

Как сделать случайный фон без повтора?

Помогите реализовать следующее:

Есть сетка html (grid)
<div class="grid">
	<div class="item"></div>
	<div class="item"></div>
	<div class="item"></div>
	<div class="item"></div>
	<div class="item"></div>
	<div class="item"></div>
	<div class="item"></div>
	<div class="item"></div>
</div>

Тут сетка

Как с помощью javascript (или jQuery) сделать каждому элементу свой background - рандомно, и чтоб не повторялось. На скрине то, что мне нужно.

5d128e336494c465221476.png
  • Вопрос задан
  • 329 просмотров
Подписаться 1 Средний Комментировать
Помогут разобраться в теме Все курсы
  • Skillbox
    JavaScript
    3 месяца
    Далее
  • Яндекс Практикум
    Фронтенд-разработчик расширенный
    13 месяцев
    Далее
  • Академия Eduson
    Fullstack-разработчик на JavaScript
    11 месяцев
    Далее
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Кому и какие цвета надо назначить:

const colors = [
  'red', 'blue', 'magenta', 'green', 'yellow',
  'aqua', 'brown', 'silver', 'lime', 'orange',
];

const elements = document.querySelectorAll('.item');

Как получить перетасованные случайным образом элементы массивоподобного объекта:

function shuffled([...arr]) {
  for (let i = arr.length; --i > 0;) {
    const j = Math.random() * -~i | 0;
    [ arr[i], arr[j] ] = [ arr[j], arr[i] ];
  }

  return arr;
}

Вот так всё просто получается:

elements.forEach(function(n, i) {
  n.style.setProperty('background-color', this[i % this.length]);
}, shuffled(colors));

// или

shuffled(elements).forEach((n, i) => {
  n.style.backgroundColor = colors[i % colors.length];
});
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы