- הגדר qué gestos maneja el navegador: desplazamiento, pellizco-zoom y doble toque.
- שילוב ערכים (pan-x/pan-y/pan-*) y pinch-zoom, או usa el atajo מניפולציה.
- אזכור וגישה: evitar bloquear el zoom salvo necesidad real.
- תאימות אמפליה; iOS Safari מציג מתאימות, שימוש וחומרה אמיתיים.
Cuando trabajamos con interfaces táctiles, hay un detalle que marca la diferencia entre una experiencia fluida y otra frustrante: decidir qué gestos gestiona el navegador y cuáles gestiona tu códigoרכוש CSS touch-action es justo el interruptor fino que permite ajustar ese comportamiento al milímetro.
לזכות במשהו אזוטרי, touch-action controla el desplazamiento, el zoom por pellizco y otros gestos predeterminados que el navegador aplicaría al tocar un elemento. Bien usada, evita retrasos en eventos, choca menos con tu JavaScript y te da control real en componentes como mapas, carruseles o lienzos de juegos.
האם מגע מגע מדויק?
En pocas palabras, touch-action indica al agente de usuario qué acciones táctiles puede ejecutar de forma nativa en una region de la página y cuáles debe reservar para tus manejadores de eventos. Es el complemento táctil de pointer-events, que solemos asociar más a interacciones con ratón, pero con un enfoque específico en gestos como el desplazamiento y el zoom.
בדרך זו, puedes permitir que el navegador haga su trabajo (desplazar, hacer zoom) o bloquearlo para implementar tú las interacciones (por ejemplo, zoom interno de un mapa) sin interferencias ni demoras artificiales en los click.

סינטקסיס וצורות שימוש
La propiedad acepta varias combinaciones con regglas muy concretas. Puedes declarar un único valor, o componer varios valores compatibles para ajustar el comportamiento táctil con precisión.
/* Declaración típica */
#elemento {
touch-action: pan-right pinch-zoom;
}
אין צורך בגראמאטיקה מדויקת, esta es la sintaxis reconocida פורמלי:
touch-action =
auto |
none |
|| || pinch-zoom ] |
manipulation
במילים אחרות, puedes usar uno de los valores globales (אוטומטי, אין, מניפולציה) o bien una combinación de los conjuntos de desplazamiento אופקי y/o אנכי, יותר pinch-zoom אופציונלי.
שפע של מגע-אקשן ואיך לא
Esta propiedad ofrece valores pensados para casos muy concretos. Elegir el que toca evita tener que reimplementar gestos con JavaScript o, al contrario, te deja vía libre para hacerlo cuando lo necesites.
auto-
עזוב את הנווט gestione todos los gestos de desplazamiento y zoom. Es el comportamiento por defecto: el usuario puede deslizar para desplazarse y pellizcar para ampliar sin que tengas que hacer nada más.
none-
Bloquea por completo la intervención del navegador en esos gestos. אין צורך ב-Pellisco-Zoom Nativos; יש צורך ליישם את JavaScript עם JavaScript. Es ideal para mapas o lienzos donde el control debe ser 100% tuyo.
manipulation-
Permite el desplazamiento y el pellizco-zoom, pero desactiva ciertos gestos no estándar como el doble toque para ampliar. Es, en la práctica, un alias de "פאן-X פאן-Y זום-צביטה" (la combinación explícita se mantiene válida por compatibilidad). Al quitar el doble toque, también elimina la necesidad de retrasar la generación de eventos
clicktras un toque, lo que mejora la respuesta de la interfaz. pan-x-
Activa el desplazamiento horizontal con un solo dedoניתן לשלב עם
pan-y,pan-up,pan-downו / אוpinch-zoomזה קרב שאנגלוpan-leftypan-right. pan-y-
Activa el desplazamiento vertical con un solo dedoניתן לשלב עם
pan-x,pan-left,pan-rightו / אוpinch-zoom. Del mismo modo, es un atajo que incluyepan-upypan-down. pan-left,pan-right,pan-up,pan-down-
אפשר gestos de desplazamiento con un solo dedo que empiezan en la dirección indicada. אוג'ו: una vez iniciado el desplazamiento, se puede invertir la dirección. Hay un detalle que suele confundir: en términos de interfaz, "פאן-אפ"significa que el usuario arrastra el dedo hacia abajo en la pantalla para que el contenido se mueva hacia arriba; y"פאן-שמאל" implica arrastrar el dedo a la derecha para que el contenido se desplace hacia la izquierda.
pinch-zoom-
לְאַפשֵׁר gestos multi-dedo de zoom y desplazamiento. Se puede combinar con cualquiera de los valores
pan-*. En navegadores que lo implementan, el agente de usuario puede iniciar el zoom continuo de inmediato Sin esperar a que un manejador de eventos lo cancele.
Regglas de combinación y normalización
Al combinar directciones, existen regglas de simplificación. No todo lo que se puede escribir es válido si hay una forma más simpleלדוגמה, "pan-left pan-right" se considera inválido porque la forma correcta y más corta es pan-x.
אמברגו חטא, combinaciones hay que sí tienen sentido, como "pan-left pan-down" para permitir desplazamientos que inician hacia la izquierda o hacia abajo. En este caso, no hay una abreviatura directa equivalente, por lo que es una combinación aceptable.
זכרו גם את זה puedes mezclar ejes y pellizcoלדוגמה, "pan-x pinch-zoom" permite desplazamiento horizontal por un dedo y zoom multi-dedo a la vez, dejando fuera el desplazamiento vertical nativo.
Cuándo usar cada valor: patrones reales
El caso típico es un mapa o un lienzo de juego embebido en la página. Si quieres que el gesto de pellizcar afecte al propio mapa y no al zoom del navegador, אתה מעוניין להצהיר touch-action: none; כתוב לך התאמה אישית של זום ב-JavaScript.
תרחיש נוסף es cuando tu código sólo implementa una parte de la interacción (por ejemplo, el zoom), y prefieres que el navegador mantenga el desplazamiento nativo. בסופו של דבר, "touch-action: pan-x pan-y;" Le dice al agente de usuario que gestione todo el desplazamiento y te deja libre para ocuparte del zoom como quieras.
עבור רכיבי ממשק משתמש כמו קרוזלים אופקיים, pan-x אפשרות טובה יותר. Permites el desplazamiento lateral con un dedo, mantienes el pellizco-zoom desactivado si no lo añades, y evitas conflictos con el scroll vertical de la página si no quieres que se active.
אם העדיפות שלך היא תשובה אינמדיה דל טוק y la eliminación del retardo del doble toque, manipulation es un atajo estupendo. Quita el doble tap para ampliar y con ello la necesidad de retrasar el click, lo que da una sensación de "snappiness" en botones y enlaces.
השפעה על נגישות
נקודה מבקרת: אם מצהיר touch-action: none; bloqueas el zoom nativo del navegador. Las personas con baja visión que necesitan ampliar para leer perderán esa capacidad, lo que puede convertir tu interfaz en unaccessible.
Cuando el contexto lo permita, לשקול לשמור pinch-zoom מופעל או לחפש חלופות נגישות que no impidan el aumento. Hacer zoom es, para muchos usuarios, una herramienta de lectura esencial; no la desactives a la ligra.
תואם עבור נבגים
התמיכה של touch-action זה הרבה, אבל עם חברים. ניו יורקים מודרניים כמו Chrome (36+), Edge (12+), Firefox (52+) ו Opera (23+) implementan la propiedad con los valores principales.
El punto delicado históricamente ha sido Safari. ל-iOS ספארי יש מגבלות, עם הזדמנות זו auto y manipulation, mientras que otros valores han sido más משתנים según version y contexto. En versiones recientes de Safari de escritorio (13+), La compatibilidad es notablemente mejor, אבל אפשר להתאים את המאפיינים המיוחדים, sobre todo si dependes de combinaciones avanzadas.
Las tablas de compatibilidad públicas (las típicas que consultamos a diario) se actualizan contribuciones de la comunidad y estadísticas de uso; si tu proyecto es sensible a gestos concretos, prueba en dispositivos reales. Ten en cuenta también que solo en dispositivos con pantalla táctil podrás verificar el comportamiento מְאֻמָּנָה
דוגמאות מעשיות לשימוש
Veamos algunos patrones de declaración que te solucionarán la vida. Recuerda probar siempre en hardware táctil para comprobar que la experiencia es la esperada.
1) השבת את כל הפעולות (מפה או קנבס אישית)
אתה יכול ליישם את ההפרעות שלך. El navegador no interceptará ni el desplazamiento ni el pellizco.
<!-- HTML -->
<div id='mapa' class='superficie'></div>
<!-- CSS -->
.superficie {
touch-action: none;
}
2) Permitir desplazamiento nativo, controler solo el zoom
אם יש לך JavaScript לאסוף את זום, דהייה que el navegador gestione el scroll en ambos ejes כדי לא לחדש את הרוח.
.zoom-personalizado {
touch-action: pan-x pan-y;
}
3) Desplazamiento אופקי con pellizco-zoom
עבור קומפלי הגלריות: גלול אופקית ועשה וזום פעולות, ללא גלילה אנכית.
.galeria-avanzada {
touch-action: pan-x pinch-zoom;
}
4) Desplazamientos por dirección inicial
בהזדמנות אפשרית solo gestos que arrancan hacia una dirección concreta (עמ' ej., para no interferir con otros componentes).
.panel-contextual {
touch-action: pan-left pan-down;
}
5) Atajo pragmático: מניפולציה
Cuando buscas una respuesta táctil contundente sin doble toque, manipulation זה קומודין גדול. Ayuda a Evitar El Retraso del click פוסט-טווק.
button, a {
touch-action: manipulation;
}
קשר עם pointer-events ואירועי לחיצה
למרות שלפעמים הם מתבלבלים, touch-action y pointer-events בעיות שונות של אטקן. El segundo להחליט סי un elemento להגיב "פונטרוס" (ratón, táctil, lápiz) a nivel de hit-testing; el primero determina qué gestos táctiles por defecto puede ejecutar el navegador באותו אזור.
בנוסף, desactivar gestos como el doble toque con manipulation elimina el retraso clásico del click tras un toque en móviles. Ese retardo existía para distinguir entre un toque simple y el inicio de un doble toque para zoom; si el doble toque ya no existe, el navegador puede despachar el click בלי לחכות
הערות y details de implementación
עם pinch-zoom, יש אנשים שנווטים inician el zoom continuo inmediatamente חטא esperar a que intentes cancelar la acción por JavaScript. Este comportamiento favorece תחושה מיידית en el gesto de pellizco sobre elementos que lo permiten.
También debes saber que, aun cuando restringes la dirección que inicia un desplazamiento, el usuario podrá invertir la dirección una vez iniciado el scroll. Esto alinea la experiencia con lo que la gente espera de una lista o un lienzo, y evita bloqueos artificiales a mitad del gesto.
שיטות עבודה טובות
Primero, aplica la regla de minima intervención: elige el valor menos restrictivo que resuelva tu casoאם אתה באסט קון pan-x, אין שימושים none. שמירה על מקורות מידע וגישה.
המשך, ורכיבים מורכבים לחומרה אמיתיים: lo que parece óptimo con el emulador puede no reflejar la inercia y la fricción reales. Las sensaciones táctiles son sutiles, y pequeños cambios en touch-action נראה לעין.
Tercero, si bloqueas el zoom por cesidades del producto, ofrece alternativas de accesibilidad (בקרות דה טמאנו דה טקסטו, זום interno claro, contraste adecuado). Privar del zoom sin alternative perjudica la lectura.
Cuarto, documenta y acuerda el comportamiento con el equipo: marcar contratos claros entre CSS y JavaScript evita conflictos, sobre todo cuando hay listeners que cancelan eventos o librerías de gestos de por medio.
שיעורים תועלתניים ומסגרות
הרבה מסגרות שימושיות חדשות שיעורים כמו פרק א':א' touch-action, lo cal acelera prototipado y cambios. Es habitual encontrar variantes como touch-auto, touch-none, touch-pan-x o touch-pan-y.
<div class='h-48 w-full touch-auto overflow-auto'>
<img class='h-auto w- max-w-none' src='...' alt=''>
</div>
<div class='h-48 w-full touch-none overflow-auto'>
<img class='h-auto w- max-w-none' src='...' alt=''>
</div>
<div class='h-48 w-full touch-pan-x overflow-auto'>
<img class='h-auto w- max-w-none' src='...' alt=''>
</div>
<div class='h-48 w-full touch-pan-y overflow-auto'>
<img class='h-auto w- max-w-none' src='...' alt=''>
</div>
Estas utilidades ayudan a mantener el CSS limpio y coherente; recuerda que bajo el capó siguen siendo valores de touch-action, con las mismas reglas de combinación y efectos.
בדיקה ואיתור באגים
Para verificar el efecto, lo ideal es un dispositivo táctil. Algunos navegadores ofrecen emulación táctil en sus DevTools, pero no reproduceren a la perfección la física del gesto ni los múltiples dedos simultáneos.
אם לא תגיב, יש צורך מחדש: ¿el elemento realmente recibe los eventos? ¿hay listeners que cancelan por preventDefault()? לאשר את computed style de touch-action y chequear superposiciones con pointer-events חוסך לך שעות.
רשימות מקטעים להעתקה
Unos cuantos atajos útiles para el día a día. Úsalos como base y ajústalos a tu caso.
/* Desactiva todo (señal de: me ocupo yo por JS) */
.superficie { touch-action: none; }
/* Solo desplazamiento horizontal */
.carrusel { touch-action: pan-x; }
/* Solo desplazamiento vertical */
.lista { touch-action: pan-y; }
/* Inicios hacia derecha + hacia arriba */
.panel { touch-action: pan-right pan-up; }
/* Pellizco-zoom + desplazamiento en cualquier eje (sin doble tap) */
.interactivo { touch-action: manipulation; }
הערות תמיכה ספציפיות
בעבר, את הערך pinch-zoom se popularizó con soporte en Chrome a partir de la version 56, y su comportamiento ha ido refinándose. En plataformas donde el pellizco sea una acción de sistema, verifica que tu app no entra en conflicto con גסטו דל סו (por ejemplo, gestos de navegación por bordes).
אתה פובליקו אובייקט כולל iOS, recuerda el matiz: las combinaciones avanzadas pueden no comportarse igual que en Chromium. Las pruebas cruzadas son obligatorias cuando basas la UX en direcciones iniciales o en bloquear el doble toque.
Sintaxis resumida y מודלים נפשיים
Una manera de no equivocarte es pensar en capas. Primero eliges el eje o las direcciones permitidas (pan-x, pan-y, pan-left וכו'); después מחליט si añades pinch-zoom; y, si lo tuyo es la rapidez, אתה משתמש manipulation כקיצור דרך טיפוסי ללא כובע כפול.
Y no olvides la simplificación: si tu combinación se puede escribir con un atajo, usa el atajo. Es קריא y evita valores inválidos (el clasico "pan-left pan-right" que debería ser pan-x).
Plantilla de estilos para proyectos
Este bloque suele encajar en design systems and librerías de componentes. הגדר שימוש ב-CSS עבור תדירות שימוש y tendrás coherencia entre equipos.
/* Utilidades corporativas */
.u-touch-auto { touch-action: auto; }
.u-touch-none { touch-action: none; }
.u-touch-pan-x { touch-action: pan-x; }
.u-touch-pan-y { touch-action: pan-y; }
.u-touch-zoom { touch-action: pinch-zoom; }
.u-touch-sensible { touch-action: manipulation; }
עם השיעורים האלה, תעודות הכוונה (por ejemplo, "הגיוני" implicando respuesta ágil) en lugar de un detalle técnico aislado, lo que facilita la adopción por parte de otros desarrolladores.
רשימת בדיקה לפני הפרסום
– האם escogido el valor menos intrusivo que cumple tu objetivo? אם יש לך רק לידה, דיאלו נתיב.
– ¿Tu app sigue siendo ניתן לניצול קו זום? אין להקריב את זה.
– האם השילוב של iOS ואנדרואיד אמיתי? La emulación es útil, pero no definitiva.
– ¿Los listeners no interfieren con el comportamiento esperado? ביטולי אוויטה גלובליים.
זה ברור ש touch-action es una palanca esencial para afinar la experiencia táctil: te permite delimitar qué gestos son nativos y cuáles controlas tú, לצמצם את לטיות como la del click tras el toque, y ofrece combinaciones ricas para casos avanzados; si a eso sumas pruebas en dispositivos reales y un ojo en accesibilidad, tendrás componentes táctiles que se sienten naturales y fiables.