@Oldnickn

Привет всем, нужно менять цвет картинки авто по клику на кружочек, то есть цвет кружочка должен соответствовать цвету машины .Как это реализовать?

  • Вопрос задан
  • 234 просмотра
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
<div class="colorsSelector">
  <div class="colorItem" data-color="blue"></div>
  <div class="colorItem" data-color="white"></div>
  <div class="colorItem" data-color="red"></div>
  <div class="colorItem" data-color="black"></div>
  <div class="colorItem" data-color="white-pure"></div>
  <div class="colorItem" data-color="orange"></div>
  <div class="colorItem" data-color="graphite"></div>
</div>

[data-color="blue"]       { background-color: #325488; }
[data-color="white"]      { background-color: #cfcfcf; }
[data-color="red"]        { background-color: #c64040; }
[data-color="black"]      { background-color: #08090b; }
[data-color="white-pure"] { background-color: #f0f0f0; }
[data-color="orange"]     { background-color: #d87c5a; }
[data-color="graphite"]   { background-color: #7f7f7f; }

const container = document.querySelector('.colorsSelector');
const itemSelector = '.colorItem';
const activeClass = 'colorItem--active';
const img = document.querySelector('.imgHolder img');
const src = color => `//webcademy.ru/files/js2020/solaris/${color}.png`;


// делегированный обработчик клика назначается контейнеру с цветами
container.addEventListener('click', ({ target: { dataset: { color } } }) => {
  if (color) {
    img.src = src(color);
    document.querySelectorAll(itemSelector).forEach(n => {
      n.classList.toggle(activeClass, color === n.dataset.color);
    });
  }
});

// или, каждому цвету обработчик клика назначается индивидуально
const items = container.querySelectorAll(itemSelector);
items.forEach(n => n.addEventListener('click', onClick));

function onClick({ target: t }) {
  img.src = src(t.dataset.color);
  items.forEach(n => n.classList.toggle(activeClass, n === t));
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы