Spec-Zone.ru › CSS

touch-action

Базовая Широко поддерживается

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с сентября 2019 года.

  • Подробнее
  • Полная совместимость
  • Отправить отзыв

Свойство touch-action CSS задаёт, как пользователь с сенсорным экраном может взаимодействовать с областью элемента (например, с помощью функций масштабирования, встроенных в браузер).

По умолчанию, жесты перемещения (прокрутка) и масштабирования обрабатываются исключительно браузером. Приложение, использующее Pointer events, получит событие pointercancel, когда браузер начнёт обработку жеста касания. Явно указав, какие жесты следует обрабатывать браузеру, приложение может реализовать собственное поведение в обработчиках pointermove и pointerup для оставшихся жестов. Приложения, использующие Touch events, отключают обработку жестов браузером, вызывая preventDefault(), но также должны использовать touch-action для того, чтобы браузер понял намерение приложения до вызова любых обработчиков событий.

Когда начинается жест, браузер пересекает значения touch-action элемента, на который был наведён указатель, и его предков, до элемента, реализующего этот жест (то есть, первого элемента, содержащего прокрутку). Это означает, что на практике touch-action обычно применяется только к верхним элементам, которые имеют некоторое пользовательское поведение, без необходимости явного указания touch-action ни на одном из потомков этого элемента.

Примечание: После начала жеста изменения в touch-action не повлияют на поведение текущего жеста.

Синтаксис

/* Keyword values */
touch-action: auto;
touch-action: none;
touch-action: pan-x;
touch-action: pan-left;
touch-action: pan-right;
touch-action: pan-y;
touch-action: pan-up;
touch-action: pan-down;
touch-action: pinch-zoom;
touch-action: manipulation;

/* Global values */
touch-action: inherit;
touch-action: initial;
touch-action: revert;
touch-action: revert-layer;
touch-action: unset;

Свойство touch-action может быть задано как:

  • Одно из ключевых слов auto, none, manipulation, или
  • Одно из ключевых слов pan-x, pan-left, pan-right, и/или одно из ключевых слов pan-y, pan-up, pan-down, плюс необязательно ключевое слово pinch-zoom.

Значения

auto

Включить обработку браузером всех жестов перемещения и масштабирования.

none

Отключить обработку браузером всех жестов перемещения и масштабирования.

pan-x

Включить жесты горизонтального перемещения одним пальцем. Может быть объединён с pan-y, pan-up, pan-down и/или pinch-zoom.

pan-y

Включить жесты вертикального перемещения одним пальцем. Может быть объединён с pan-x, pan-left, pan-right и/или pinch-zoom.

manipulation

Включить жесты перемещения и масштабирования, но отключить дополнительные нестандартные жесты, такие как двойное касание для масштабирования. Отключение двойного касания для масштабирования устраняет необходимость для браузеров задерживать генерацию событий click при касании экрана пользователем. Это псевдоним для "pan-x pan-y pinch-zoom" (который, для совместимости, всё ещё является допустимым).

pan-left, pan-right, pan-up, pan-down

Включить жесты перемещения одним пальцем, которые начинаются прокруткой в заданном направлении(ях). После начала прокрутки направление может быть изменено. Обратите внимание, что прокрутка "вверх" (pan-up) означает, что пользователь проводит пальцем вниз по поверхности экрана, а также pan-left означает, что пользователь проводит пальцем вправо. Несколько направлений могут быть объединены, за исключением случаев, когда существует более простое представление (например, "pan-left pan-right" недействительно, так как "pan-x" проще, но "pan-left pan-down" допустимо).

pinch-zoom

Включить многопальцевые жесты перемещения и масштабирования страницы. Может быть объединён с любыми значениями pan-.

Доступность

Объявление touch-action: none; может препятствовать использованию функций масштабирования браузера. Это помешает людям с нарушениями зрения читать и понимать содержимое страницы.

  • MDN Понимание WCAG, объяснения к руководству 1.4
  • Понимание критерия успеха 1.4.4 | Понимание WCAG 2.0

Формальное определение

Начальное значение auto
Применяется к всем элементам, кроме: незамещающих встроенных элементов, строк таблицы, групп строк, столбцов таблицы и групп столбцов
Наследуется нет
Вычисленное значение как указано
Тип анимации Не анимируется

Формальный синтаксис

touch-action = 
auto |
none |
[ [ pan-x | pan-left | pan-right ] || [ pan-y | pan-up | pan-down ] || pinch-zoom ] |
manipulation

Примеры

Отключение всех жестов

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

HTML

<div id="map"></div>

CSS

#map {
  height: 150vh;
  width: 70vw;
  background: linear-gradient(blue, green);
  touch-action: none;
}

Результат

Спецификации

Спецификация
Стандарт совместимости
# touch-action
Pointer Events
# the-touch-action-css-property

Совместимость браузеров

Рабочий стол Мобильный
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
touch-action 36 12
52Не применимо к платформам Firefox, которые не поддерживают события pointer или touch.
23 13 36 52 24 9.3 3.0 37
manipulation 36 12
52Не применимо к платформам Firefox, которые не поддерживают события pointer или touch.
23 13 36 52 24 9.3 3.0 37
none 36 12
52Не применимо к платформам Firefox, которые не поддерживают события pointer или touch.
23 13 36 52 24 13 3.0 37
pan-down 55 79 Нет 42 Нет 55 Нет 42 Нет 6.0 55
pan-left 55 79 Нет 42 Нет 55 Нет 42 Нет 6.0 55
pan-right 55 79 Нет 42 Нет 55 Нет 42 Нет 6.0 55
pan-up 55 79 Нет 42 Нет 55 Нет 42 Нет 6.0 55
pan-x 36 12
52Не применимо к платформам Firefox, которые не поддерживают события pointer или touch.
23 13 36 52 24 13 3.0 37
pan-y 36 12
52Не применимо к платформам Firefox, которые не поддерживают события pointer или touch.
23 13 36 52 24 13 3.0 37
pinch-zoom 56 12
85Не применимо к платформам Firefox, которые не поддерживают события pointer или touch.
43 13 56
85Не применимо к платформам Firefox, которые не поддерживают события pointer или touch.
43 13 6.0 56

См. также

  • pointer-events
  • События указателя
  • Блог WebKit Более отзывчивые нажатия на iOS
  • Блог Google Developers Ускорение прокрутки по касанию по умолчанию
  • Скролл Снап

© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/touch-action

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API