- Takrifkan qué gestos maneja el navegador: desplazamiento, pellizco-zoom y doble toque.
- Combina valores (pan-x/pan-y/pan-*) y picit-zoom, atau manipulasi atajo usa.
- Atención accesibilidad: evitar bloquear el zoom salvo perlukan real.
- Keserasian amplia; iOS Safari membentangkan mati, mengurangkan dan perkakasan sebenar.

Cuando trabajamos con interfaces tactiles, hay un detalle que marca la diferencia entre un experiencia fluida y otra frustrante: decidir qué gestos gestiona el navegador y cuáles gestiona tu código. La propiedad CSS touch-action es justo el interruptor fino que permite ajustar ese comportamiento al milímetro.
Lejos de ser algo esotérico, touch-action controla el desplazamiento, el zoom por pellizco y otros gestos predeterminados que el navegador aplicaría al tocar un element. Apabila digunakan, anda perlu mengubah masa dalam acara, memilih lebih sedikit dengan JavaScript dan mengawal sebenar dan komponen seperti peta, kawalan atau lienzos de juegos.
¿Qué es exactament touch-action?
En pocas palabras, touch-action indica al agente de usuario qué acciones táctiles puede ejecutar de forma nativa en satu región de la página y cuáles debe reservar for tus manejadores de eventos. Es el complemento táctil de pointer-events, que solemos asociar más a interacciones con ratón, but con un enfoque específico en gestos como el desplazamiento y el zoom.
Dengan cara ini, puedes permitir que el navegador haga su trabajo (desplazar, hacer zoom) or bloquearlo for implementar tú las interacciones (contohnya, zoom interno de un mapa) sin interferencias ni demoras artificiales en los click.

Sintaksis dan bentuk uso
La propiedad acepta varias combinaciones con reglas muy concretas. Puedes declarar un único valor, o componer varios valores compatible untuk ajustar el comportamiento táctil con precisión.
/* Declaración típica */
#elemento {
touch-action: pan-right pinch-zoom;
}
Jika perlu la gramática exacta, esta es la sintaxis formal reconocida:
touch-action =
auto |
none |
|| || pinch-zoom ] |
manipulation
Dalam kata lain, puedes usar uno de los valores globales (auto, tiada, manipulasi) o bien una combinación de los conjuntos de desplazamiento mendatar y/o menegak, más pinch-zoom secara pilihan.
Valores de touch-action y qué hace cada uno
Esta propiedad ofrece valores pensados para casos muy concretos. Anda boleh membuat tener untuk melaksanakan semula fungsi dengan JavaScript o, al contrario, te deja via free for hacerlo cuando lo necesites.
auto-
Deja que el navegador gestione todos los gestos de desplazamiento y zum. Es el comportamiento por defecto: el usuario puede deslizar para desplazarse y pellizcar for ampliar sin que tengas que hacer nada más.
none-
Bloquea por completo la intervención del navegador en esos gestos. Tiada habrá desplazamiento ni pellizco-zoom nativos; anda boleh laksanakan dengan JavaScript untuk memudahkan anda menggunakannya. Ia sesuai untuk peta atau lienzos donde el control debe ser 100% tuyo.
manipulation-
Permite el desplazamiento y el pellizco-zoom, tetapi nyahaktifkan ciertos gestos no estándar como el doble toque para ampliar. Es, en la práctica, un alias de "pan-x pan-y picit-zoom" (la combinación explícita se mantiene válida por compatibilidad). Al quitar el doble toque, tambien 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 mendatar bersama un solo dedo. Puede combinarse con
pan-y,pan-up,pan-downdan / ataupinch-zoom. Es un atajo que englobapan-leftypan-right. pan-y-
Activa el desplazamiento menegak con un solo dedo. Puede combinarse con
pan-x,pan-left,pan-rightdan / ataupinch-zoom. Dengan cara ini, anda boleh memasukkannyapan-upypan-down. pan-left,pan-right,pan-up,pan-down-
Benarkan gestos de desplazamiento con un solo dedo que empiezan en la dirección indicada. Ojo: una vez iniciado el desplazamiento, se puede invertir la dirección. Hay un detalle que suele confundir: en términos de interfaz, "pan-up" significa que el usuario arrastra el dedo hacia abajo en la pantalla para que el contenido se mueva hacia arriba; y "kuali-kiri" implica arrastrar el dedo a la derecha para que el contenido se desplace hacia la izquierda.
pinch-zoom-
Dayakan gestos multi-dedo de zum dan 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.
Reglas de combinación y normalización
Al combinar directions, existen reglas de simplificación. Tidak perlu untuk menulis es svalido si hay un forma más simple. Sebagai contoh, "pan-left pan-right"se considera invalido porque la forma correcta y más corta es pan-x.
Embargo dosa, gabungan jerami 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 combinación aceptable.
Juga ingat itu puedes mezclar ejes y pellizco. Sebagai contoh, "pan-x pinch-zoom" membenarkan desplazamiento mendatar untuk dedo y zum berbilang 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. Jika anda ingin bertanya tentang pellizcar afecte al propio map y no al zoom del navegador, te interesta declarar touch-action: none; dan tulis anda zum peribadi dalam JavaScript.
Otro escenario es cuando tu código sólo implementa una part de la interacción (contohnya, el zoom), y prefieres que el navegador mantenga el desplazamiento nativo. Begitu juga, "touch-action: pan-x pan-y;" le dice al agente de usuario que gestione todo el desplazamiento y te deja percuma for ocuparte del zoom como quieras.
Para komponen UI seperti carruseles horizontales, pan-x suele ser la mejor opción. 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.
Jika keutamaan anda adalah jawapan segera daripada toque y la eliminación del retardo del doble toque, manipulation es un atajo estupendo. Quita el doble tap untuk ampliar y con ello la necesidad de retrasar el click, lo que da una sensación de "snappiness" en botones y enlaces.
Impak dan aksesibiliti
Satu kritikan: si declaras touch-action: none; bloqueas el zoom nativo del navegador. Las personas con baja visión que necesitan ampliar for leer perderán esa capacidad, lo que puede convertir tu interfaz en inaccesible.
Cuando el contexto lo permita, considera mantener pinch-zoom didayakan atau cari alternatif kebolehcapaian que no impidan el aumento. Hacer zoom es, para muchos usuarios, satu herramienta de lectura esencial; tiada la desactives a la ligera.
Keserasian entre navegadores
Sokongan dari touch-action es amplio, tetapi con matices. Navegadores moden seperti Chrome (36+), Edge (12+), Firefox (52+) dan Opera (23+) implementan la propiedad con los valores principales.
El punto delicado históricamente mempunyai Safari. iOS Safari mempunyai had limitaciones, con supporte sólido para auto y manipulation, mientras que otros valores han sido más variables según versionón y contexto. En versiones recientes de Safari de escritorio (13+), la compatibilidad es notablemente major, tetapi conviene validar casos específicos, sobre todo si dependes de combinaciones avanzadas.
Tablas de compatibilidad públicas (lastípicas que consultamos a diario) sebagai sumbangan sebenar dalam komuniti 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 de forma fidedigna.
Contoh penggunaan yang praktikal
Veamos algunos patrones declaración que te solucionarán la vida. Recuerda probar siempre en hardware táctil untuk comprobar que la experiencia es la esperada.
1) Nyahaktifkan todos los gestos (peta atau canvas personalizado)
Útil cuando quieres implementar tú el arrastre y el zoom internos sin interferencias. 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 native, controlar solo el zoom
Dengan menggunakan JavaScript untuk mengezum, pergi ke navigasi gestione el scroll en ambos ejes para no reinventar la rueda.
.zoom-personalizado {
touch-action: pan-x pan-y;
}
3) Desplazamiento mendatar dengan pellizco-zoom
Untuk carruseles complejos or galerías: tatal mendatar con un dedo y zum con dos, dosa tatal menegak nativo.
.galeria-avanzada {
touch-action: pan-x pinch-zoom;
}
4) Desplazamientos por dirección inicial
En ocasiones conviene permitir solo gestos que arrancan hacia una dirección concreta (hlm. ej., untuk tidak mengganggu komponen komponen).
.panel-contextual {
touch-action: pan-left pan-down;
}
5) Atajo pragmático: manipulasi
Cuando buscas una respuesta táctil contundente sin doble toque, manipulation es un gran comodín. Ayuda a evitar el retraso del click selepas tok.
button, a {
touch-action: manipulation;
}
Hubungan dengan pointer-events y eventos de clic
Walaupun kadangkala mereka keliru, touch-action y pointer-events atacan masalah distintos. El segundo decide si un element responde a "punteros" (ratón, táctil, lápiz) a nivel de hit-testing; el primero determina qué gestos táctiles por defecto puede ejecutar el navegador di kawasan itu.
Selain itu, nyahaktifkan gestos como el doble toque con manipulation elimina el retraso clásico del click tras un toque en móviles. Ini menghalang kewujudan untuk membezakan toque yang mudah dan inicio de toque double untuk zum; kerana toque doble tidak wujud, el navegador boleh hilangkan el click tanpa menunggu
Notas y detalles de implementación
dengan pinch-zoom, hay navegadores que inician el zoom continuo inmediatamente dosa esperar a que intentes cancelar la acción por JavaScript. Este comportamiento favorece una sensación de inmediatez en el gesto de pellizco sobre elements 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 or un lienzo, y evita bloqueos artificiales and mitad del gesto.
Amalan baik
Primero, aplica la regla de mínima intervención: elige el valor menos restrictivo que resuelva tu caso. Si te basta con pan-x, tiada kegunaan none. Así memelihara gestos nativos y accesibilidad.
Segundo, dan komponen lengkap prueba dan perkakasan sebenar: 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 se notan.
Tercero, si bloqueas el zoom por necesidades del producto, ofrece alternativas de accesibilidad (controles de tamaño de texto, zum interno claro, contraste adecuado). Privar del zoom sin alternativa perjudica la lectura.
Cuarto, documenta y acuerda el comportamiento con el equipo: marcar contratos claros entre CSS dan JavaScript evita conflictos, sobre todo cuando hay listeners que cancelan eventos or librerías de gestos de por medio.
Classes utilitarias en frameworks
Banyak rangka kerja de utilidades ofrecen kelas que mapean 1:1 a touch-action, lo cual 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 and 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.
Menguji dan menyahpepijat
Untuk pengesahan el efecto, lo ideal es un dispositivo táctil. Algunos navegadores ofrecen emulación táctil en sus DevTools, tetapi tiada reproducen a la perfección la física del gesto ni los múltiples dedos simultáneos.
Jika tidak menjawab, semak semula keutamaan: ¿el elemen realmente recibe los eventos? ¿hay pendengar que cancelan por preventDefault()? mengesahkan computed style de touch-action y semak superposiciones con pointer-events menjimatkan masa anda.
Fragmentos listos para copiar
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; }
Notas de soporte específicas
Pada masa lalu, nilai pinch-zoom popularizó con supporte en Chrome a partir de la versionón 56, y su comportamiento ha ido refinándose. En plataformas donde el pellizco sea una action de sistema, verifica que tu app no entra en conflicto con gestos del SO (contohnya, gestos de navegación por bordes).
Untuk tujuan umum termasuk iOS, anda boleh mendapatkannya: las combinaciones avanzadas pueden no comportarse igual que en Chromium. Las pruebas cruzadas son obligatorias cuando basas la UX en direcciones iniciales or en bloquear el doble toque.
Sintaxis resumida y model mental
Satu manera de no equivocarte es pensar en capas. Primero eliges el eje o las direcciones permitidas (pan-x, pan-y, pan-kiri, dll.); después memutuskan si añades pinch-zoom; y, si lo tuyo es la rapidez, usa manipulation sebagai jalan pintas a lo típico sin doble toque.
Y no olvides la simplificación: si tu combinación se puede escribir con un atajo, usa el atajo. Boleh dibaca dan evita valores inválidos (el clásico "pan-kiri pan-kanan" que debería ser pan-x).
Plantilla de estilos para proyectos
Ini blok suele encajar dalam sistem reka bentuk dan percuma komponen. Takrifkan kegunaan dalam CSS untuk kegunaan frecuentes 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; }
Kelas con estas, documentas la intención (sebagai contoh, "akal" implicando respuesta ágil) dalam kawasan detalle técnico aislado, lo que facilita la adopción por parte de otros desarrolladores.
Pequeño senarai semak antes de publicar
– ¿Adakah escogido el valor menos intrusivo que cumple tu objetivo? Si algo puede ser nativo, déjalo nativo.
– Adakah apl anda boleh digunakan dengan zum? Tiada pengorbanan akses dan tidak dapat difahami.
– ¿Adakah realiti iOS dan Android yang berbeza? La emulación es útil, tetapi tiada definitiva.
– ¿Los pendengar tiada interfieren con el comportamiento esperado? Evita cancelaciones globales.
Jelas bahawa touch-action es una palanca esencial for afinar la experiencia táctil: te permite delimitar qué gestos son nativos y cuáles controlas tú, reduce latencias 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 tactiles que se sienten naturales y fibles.