Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.09.2022, 09:03
Новичок на форуме
Отправить личное сообщение для ren2222 Посмотреть профиль Найти все сообщения от ren2222
 
Регистрация: 20.09.2022
Сообщений: 1

Галерея с миниатюрами на чистом JavaScript
Здравствуйте,
есть необходимость сделать карточку товара, одно большое изображение и 5 цветов в виде миниатюр, при нажатии, меняется основное изображение. Функционал вроде я реализовал, но никак не разберусь с активным элементом, необходимо, чтобы по умолчанию был выбран первый элемент (синяя рамка вокруг миниатюры), а при последующем нажатии удалялся активный класс и добавлялся нажатой миниатюре.

Карточки будут менятся в зависимости он содержание заголовка h2. также подтягивать необходимые изображения


<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Привет HTML</title>
 
  <style type="text/css">
    .wraper {
      display: flex;
      justify-content: space-around;
    }
    .active {
      margin: -3px;
      border: 3px solid #597df7;
    }
    .item_max {
      height: 400px;
      width: 150px;
      cursor: pointer;
    }
 
    .item {
      height: 100px;
      width: 70px;
      cursor: pointer;
      box-shadow: 0.4em 0.4em 5px rgb(122 122 122 / 50%);
    }
    .item1 {background: url(images/1Ualy.jpg)}
    .item2 {background: url(images/1Umag.jpg)}
    .item3 {background: url(images/1Udark.jpg)}
    .item4 {background: url(images/1Uman.jpg)}
    .item5 {background: url(images/1Usand.jpg)}
  </style>
</head>
<body>
 
  <span>Модель:</span>
 
  <h2>1U</h2>
 
  <div id="wraper" class="wraper">
    <div id="big" class="item_max">Аляска</div>
    <div class="item item1 active" id="aly">Аляска</div>
    <div class="item item2" id="sand">Манхеттен</div>
    <div class="item item3" id="man">Санд</div>
    <div class="item item4" id="mag">Грей</div>
    <div class="item item5" id="dark">Магнолия</div>
  </div>
 
  <script>
 
    let model = document.querySelector('h2').innerHTML;
 
    let aly = document.getElementById('aly');
    let sand = document.getElementById('sand');
    let man = document.getElementById('man');
    let mag = document.getElementById('mag');
    let dark = document.getElementById('dark');
 
    const colors = [aly, sand, man, mag, dark];
 
    const bigPic = document.getElementById("big");
    bigPic.style.backgroundImage = 'url(images/' + model + colors[0].id + '.jpg)';
 
    for (let i = 0; i < colors.length; i++) {
      colors[i].onclick = function () {
        bigPic.style.backgroundImage = 'url(images/' + model + colors[i].id + '.jpg)';
      };
    colors[i].className += ' active';
    }
 
  </script>
 
</body>
Изображения:
Тип файла: jpg 777.jpg (7.2 Кб, 1 просмотров)
Ответить с цитированием
  #2 (permalink)  
Старый 20.09.2022, 09:26
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

ren2222,
решение: запоминать активный элемент.
let model = document.querySelector('h2').innerHTML;

        let aly = document.getElementById('aly');
        let sand = document.getElementById('sand');
        let man = document.getElementById('man');
        let mag = document.getElementById('mag');
        let dark = document.getElementById('dark');

        const colors = [aly, sand, man, mag, dark];

        const bigPic = document.getElementById("big");
        bigPic.style.backgroundImage = 'url(images/' + model + colors[0].id + '.jpg)';
        let temp = colors[0];
        for (let i = 0; i < colors.length; i++) {
            colors[i].onclick = function () {
                bigPic.style.backgroundImage = 'url(images/' + model + colors[i].id + '.jpg)';
                temp.classList.remove('active');
                temp = colors[i];
                temp.classList.add('active')
            };
        }
Ответить с цитированием
  #3 (permalink)  
Старый 20.09.2022, 09:27
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,070

ren2222,
на всякий случай https://learn.javascript.ru/task/image-gallery
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Галерея с миниатюрами Antonjrjr Элементы интерфейса 2 28.04.2017 09:38
Auto resizing textarea на чистом JavaScript volshebnyi jQuery 1 16.09.2016 10:34
JSON запрос на чистом javascript FaLer Events/DOM/Window 5 12.05.2015 18:12
Последние книги по JavaScript! monolithed Учебные материалы 7 26.10.2010 19:40
Выдвет ошибку JavaScript Ромио Opera, Safari и др. 4 21.10.2010 20:34