LorD_Noka
@LorD_Noka

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

Имеется 6 кадров анимации, нужно "потянуть" вниз для их смены, то есть переключить класс Visible между блоками картинок. Ещё это и на мобильных устройствах работать должно.
Как я понимаю нужно в настольном браузере эмулировать touch события чтобы работало везде.
И как реализовать такую "анимацию"?
460f9f2e18f94c7f9f39c2547b42c531.gif
  • Вопрос задан
  • 231 просмотр
Решения вопроса 1
Ronnie_Gardocki
@Ronnie_Gardocki
Я у мамы фронтендщик.
Код примерно будет выглядеть вот так (работает сразу для мыши и тача):
$(document).on("mousedown touchstart", ".%класс_области_активности_ивентов%", function(e) {
  // если необходимо, сохраняем стартовую позицию ивента
  var startY =  e.pageY || e.originalEvent.touches[0].pageY;

  $(document).on("mousemove touchmove", function(e) {
    // получаем Y координаты во время движения с зажатой мышью/тачем
    var y = e.pageY || e.originalEvent.touches[0].pageY;
    // ваши действия со всей этой фигней
  });

});

$(document).on("mouseup touchend", function() {
  // отключаем обработчики маусмува/тачмува
  $(document).off("mousemove touchmove");
  // действия, которые вы возможно хотите сделать по окончании действий юзера
});
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
Petroveg
@Petroveg
Миром правят маленькие с#@&ки
1. Определяем поддержку touch по наличию window.ontouchstart.
2. Вешаем обработчик на событие mousedown или touchstart (по результатам проверки).
3. В обработчике ставим прослушивание на mousemove, mouseup (touchmove, touchend или touchcancel). Для этого вызываем функцию, в которой всё и устанавливается.
4. В обработчике mouseup (touchend или touchcancel) снимаем прослушивание с указанных выше событий.
5. В обработчике mousemove (touchmove) отменяем действие по умолчанию с помощью preventDefault(). Определяем величину и направление движения. По результатам меняем на предыдущий или следующий кадр. При смене вызываем ту же самую функцию для снятия обработчиков (см. п. 3).
Ответ написан
Комментировать
Kwisatz
@Kwisatz
Больше web-приложений, хороших и разных
Как вариант: использовать стандартный drag&drop
Ответ написан
Комментировать
@LiguidCool
Или взять готовый hammer.js
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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