логотип PurpleSchool
Иконка входа
Вход
логотип PurpleSchool

Событие touch в JavaScript

Автор

Дмитрий Нечаев

Сенсорные экраны становятся все более распространенными в современных устройствах, начиная от смартфонов и планшетов до ноутбуков и даже настольных компьютеров. Вместе с этим распространением возникает необходимость понимания, как работать с событиями прикосновений на веб-страницах. В этой статье мы рассмотрим, как использовать JavaScript для обработки событий touch и какие возможности они предоставляют.

Введение в события touch

События touch возникают при взаимодействии пользователя с сенсорным экраном. Они включают в себя различные типы событий, такие как touchstart, touchmove, touchend и touchcancel. Давайте подробнее рассмотрим каждый из них:

  • touchstart: возникает, когда палец пользователя касается экрана.
  • touchmove: возникает, когда палец пользователя движется по экрану.
  • touchend: возникает, когда палец пользователя отрывается от экрана.
  • touchcancel: возникает, когда событие касания прерывается, например, из-за ухода пальца за пределы окна браузера.

Давайте посмотрим, как мы можем использовать эти события в JavaScript.

Обработка событий touch в JavaScript

Для обработки событий touch в JavaScript мы можем использовать методы добавления слушателей событий, такие как addEventListener. Давайте создадим простой пример, который будет выводить координаты касания пользователя на экране при каждом событии touchmove.

// Получаем элемент, на который будем навешивать обработчики событий
var touchElement = document.getElementById('touchElement');

// Добавляем обработчик события touchmove
touchElement.addEventListener('touchmove', function(event) {
    // Получаем первое касание (touch) из события
    var touch = event.touches[0];

    // Получаем координаты касания
    var x = touch.clientX;
    var y = touch.clientY;

    // Выводим координаты в консоль
    console.log("X: " + x + ", Y: " + y);
});

В этом примере мы добавляем обработчик события touchmove к элементу с идентификатором touchElement. Когда пользователь двигает пальцем по экрану, событие touchmove срабатывает, и мы получаем координаты касания пальца на экране.

Пример создания интерактивного элемента с помощью событий touch

Давайте создадим интерактивный элемент, который будет перемещаться по экрану вместе с перемещением пальца пользователя. Мы будем использовать события touchstart, touchmove и touchend для реализации этой функциональности.

<!DOCTYPE html>
<html lang="ru">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Сенсорные экраны и события touch</title>
    <style>
        #movableElement {
            width: 50px;
            height: 50px;
            background-color: blue;
            position: absolute;
            top: 0;
            left: 0;
        }
    </style>
</head>
<body>

<div id="movableElement"></div>

<script>
var movableElement = document.getElementById('movableElement');

movableElement.addEventListener('touchstart', function(event) {
    // Предотвращаем стандартное поведение браузера
    event.preventDefault();

    // Получаем первое касание (touch)
    var touch = event.touches[0];

    // Получаем начальные координаты элемента
    var startX = touch.clientX - movableElement.offsetLeft;
    var startY = touch.clientY - movableElement.offsetTop;

    // Добавляем обработчик события touchmove
    document.addEventListener('touchmove', moveElement);

    // Добавляем обработчик события touchend
    document.addEventListener('touchend', function() {
        // Удаляем обработчики событий touchmove и touchend
        document.removeEventListener('touchmove', moveElement);
        document.removeEventListener('touchend', arguments.callee);
    });

    // Функция для перемещения элемента
    function moveElement(event) {
        var touch = event.touches[0];

        // Вычисляем новые координаты элемента
        var newX = touch.clientX - startX;
        var newY = touch.clientY - startY;

        // Устанавливаем новые координаты элемента
        movableElement.style.left = newX + 'px';
        movableElement.style.top = newY + 'px';
    }
});
</script>

</body>
</html>

В этом примере мы создаем квадратный элемент синего цвета, который можно перемещать по экрану, касаясь его пальцем и перетаскивая. Мы используем события touchstart для начала перемещения, touchmove для обновления положения элемента при движении пальца, и touchend для завершения перемещения.

Заключение

События touch предоставляют мощный механизм для создания интерактивных пользовательских интерфейсов на сенсорных устройствах. Понимание того, как работать с этими событиями в JavaScript, открывает широкие возможности для создания удобных и интуитивно понятных веб-приложений.

Карта развития разработчика

Получите полную карту развития разработчика по всем направлениям: frontend, backend, devops, mobile