@senchkim
Junior Frontend

Как реализовать переключение вида карточек?

Как реализовать вот такое переключение внешнего вида карточек?
https://jsfiddle.net/himodoricode/6od47bkt/
  • Вопрос задан
  • 358 просмотров
Решения вопроса 1
0xD34F
@0xD34F Куратор тега JavaScript
Так что надо-то - задавать карточкам различные стили (а это и есть "переключение вида"), или переключаться между разными наборами карточек (которые вы показали в песочнице)?

Первое.
<div class="wrapper">
  <button data-view="horizontal">Горизонтально</button>
  <button data-view="vertical">Вертикально</button>
  <div class="card-wrapper" data-view="horizontal">
    <div class="card"></div>
    <div class="card"></div>
    <div class="card"></div>
    <div class="card"></div>
  </div>
</div>

.card-wrapper {
  display: flex;
}
.card-wrapper[data-view="horizontal"] {
  flex-direction: row;
}
.card-wrapper[data-view="vertical"] {
  flex-direction: column;
}

document.querySelector('.wrapper').addEventListener('click', function(e) {
  const view = e.target.dataset.view;
  if (view && e.target.tagName === 'BUTTON') {
    this.querySelector('.card-wrapper').dataset.view = view;
  }
});

https://jsfiddle.net/7Leb60y9/

Второе.
<div class="wrapper">
  <button data-view="horizontal">Горизонтально</button>
  <button data-view="vertical">Вертикально</button>
  <div class="card-wrapper active" data-view="horizontal">
    <div class="card"></div>
    <div class="card"></div>
    <div class="card"></div>
    <div class="card"></div>
  </div>
  <div class="card-wrapper" data-view="vertical">
    <div class="card"></div>
    <div class="card"></div>
    <div class="card"></div>
    <div class="card"></div>
  </div>
</div>

.card-wrapper {
  display: none;
}
.card-wrapper.active {
  display: flex;
}
.card-wrapper[data-view="horizontal"] {
  flex-direction: row;
}
.card-wrapper[data-view="vertical"] {
  flex-direction: column;
}

document.querySelector('.wrapper').addEventListener('click', function(e) {
  const view = e.target.dataset.view;
  if (view && e.target.tagName === 'BUTTON') {
    document.querySelectorAll('.card-wrapper').forEach(n => {
      n.classList.toggle('active', n.dataset.view === view);
    });
  }
});

https://jsfiddle.net/dq2hpfzj/
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Stimulate
@Stimulate
могу
Ответ написан
Комментировать
joeberetta
@joeberetta Куратор тега JavaScript
Читай: https://epdf.pub/google-for-dummies.html
Ваш ответ на вопрос

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

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