Как реализовать активное\не активное состояние карточки товара?

) Пытаюсь реализовать состояние карточки товара, но не совсем понимаю, как это сделать корректно. При наведении на карточку снизу должно появиться дополнительное поле с уточняющими данными товара.

const card = document.getElementsByClassName('card-no-active')
const more_cards = document.getElementsByClassName('card-active')

for (let i = 0; i < card.length; i++) {
  card[i].addEventListener('mouseover', function() {
    for (let j = 0; j < card.length; j++) {
      if (i === j) {
        more_cards[j].classList.remove('d-none')
      }

    }
  });

  card[i].addEventListener('mouseout', function() {
    for (let j = 0; j < card.length; j++) {
      more_cards[j].classList.add('d-none')
    }
  });
}
<div class="card-no-active">
  <img src="/comfort/img/nothing.webp" alt="" class="rounded-4 w-100">

  <div class="d-flex mt-2">

    <p class="fs-5" style="font-weight: 600">
      Какая-то вещь
    </p>

    <div class="ms-auto">
      <img src="/comfort/icons/heart-svgrepo-com.svg" alt="">
    </div>

  </div>

  <div class="d-flex">
    <p class="fw-bold h4">
      Цена 1
    </p>
    <p class="fs-6 text-danger text-decoration-line-through ms-4 mt-1">
      Цена 2 по скидке
    </p>
  </div>

  {# АКТИВНОЕ СОСТОЯНИЕ КАРТОЧКИ #}
  <div class="border-top border-1 position-absolute d-none card-active">
    <p class="fw-bold mt-2">Размеры</p>

    <div class="d-flex fw-bold d-grid gap-3 text-center ms-2">

      <div>
        <p>150 см</p>
        <p class="fw-light fw-lighter mt-0">Длина</p>
      </div>

      <div>x</div>

      <div>
        <p>75 см</p>
        <p class="fw-light fw-lighter">Ширина</p>
      </div>

      <div>x</div>

      <div>
        <p>55 см</p>
        <p class="fw-light fw-lighter">Высота</p>
      </div>

    </div>

    <button class="bg-dark text-white w-100 border-0 rounded-3 fs-6" style="height: 35px">Купить</button>
  </div>

</div>

Вроде все работает, но мне кажется, что можно сделать это красивее. Заранее спасибо!)


Ответы (0 шт):