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; может препятствовать использованию функций масштабирования браузера. Это помешает людям с нарушениями зрения читать и понимать содержимое страницы.
Формальное определение
| Начальное значение | auto |
|---|---|
| Применяется к | всем элементам, кроме: незамещающих встроенных элементов, строк таблицы, групп строк, столбцов таблицы и групп столбцов |
| Наследуется | нет |
| Вычисленное значение | как указано |
| Тип анимации | Не анимируется |
Формальный синтаксис
Примеры
Отключение всех жестов
Наиболее распространённое использование — отключение всех жестов на элементе (и его непрокручиваемых потомков), предоставляющем собственное поведение перетаскивания и масштабирования — например, карта или игровое поле.
HTML
<div id="map"></div>
CSS
#map {
height: 150vh;
width: 70vw;
background: linear-gradient(blue, green);
touch-action: none;
}
Результат
Спецификации
Совместимость браузеров
| Рабочий стол | Мобильный | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| 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