Как сделать горизонтальное меню со свайпом?

Здравствуйте!

Подскажите пожалуйста, есть какие-то готовые решения горизонтального меню со склолом (точнее свайпом)?

6Qs3S.png

Нужно, чтоб если меню не влазит в ширину родительского контейнера, то пункты меню не заходили на второй ряд, а прятались и меню можно было скроллить по горизонтали..

При этом свайпать (зажимать курсором) так-же с десктопа нужно..просто overflow-x: scroll - не подходит(

  • Вопрос задан
  • 1078 просмотров
Пригласить эксперта
Ответы на вопрос 2
@AleksRap
Используй swiper. В доке и примерах все есть. В т.ч и для такой ситуации
Ответ написан
@AndrewRusinas
Как раз решал такую же проблему. Написал класс, который отвечает за горизонтальную прокрутку.
Суть простая - слушаем mousedown на блоке, mousemove на документе, затем задаем scrollLeft блоку в зависимости от перемещения мыши.

У блока по любому будет overflow-x: auto, просто нужно дополнительно задать для этого блока
::-webkit-scrollbar
  display: none


На мобилке будет работать просто с этими css свойствами, а для десктопа придется заморочиться с прослушиванием событий. Брать стороннюю библиотеку для слайдеров - полная чушь. Написать свое решение тут можно гораздо легче и лаконичнее.

UPD: немного добавлю деталей.

На уровне html это будет что такое:
<div class="container">

  <div class="menu">
     <div class="menu-element">Меню</div>
     <div class="menu-element">Еще чето</div>
     <div class="menu-element">И еще</div>
  </div>

</div>


CSS:
.container {
  width: 100%;
  overflow-x: auto;
}

.container::-webkit-scrollbar { // честно, уже не помню как это правильно написать на чистом css
  display: none 
}

.menu {
  display: flex 
  flex-wrap: none // запрещаем переносить элементы при переполнении блока
}
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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