El atributo title te ofrece un tooltip, pero no uno muy bueno. Aparece tras un retraso controlado por el navegador y se ve diferente en cada sistema operativo y navegador. Además, no se puede personalizar. Tippy.js soluciona los tres problemas sin requerir jQuery.
El tooltip del atributo `title` en Webflow aparece tras un retraso controlado por el navegador, se ve distinto en Safari que en Chrome y no permite personalización. Es uno de los problemas más frecuentes con los tooltips, y la solución más citada (Tooltipster) requiere jQuery, algo que no deberías añadir a proyectos nuevos.
Tippy.js ofrece una alternativa. No requiere jQuery, la versión CDN es estable en la v6.3.7 y se puede configurar en Webflow en pocos minutos. Obtienes control total sobre la ubicación, la animación y el contenido, incluyendo HTML enriquecido dentro del tooltip.
En esta guía, exploramos la configuración completa: cargar la biblioteca, marcar los elementos, inicializar con opciones y solucionar los cuatro errores comunes que atrapan a la mayoría de los desarrolladores la primera vez.
¿Qué necesitas para añadir tooltips en Webflow?
Necesitas un plan de pago de Webflow que permita código personalizado. Ese es el único requisito estricto. Nada de cuentas externas, claves API o servicios de terceros.
El elemento Incrustar código personalizado y las secciones de código personalizado en la configuración del sitio están disponibles en cualquier plan de sitio de pago (Basic, CMS, Business o Enterprise) y en los planes de espacio de trabajo Core, Growth, Agency y Freelancer. Los planes gratuitos no pueden usar código personalizado.
Una vez que tienes acceso al código personalizado, la configuración requiere dos lugares en Webflow: la configuración del sitio para cargar la biblioteca y la configuración del elemento para marcar los elementos individuales. Así es como funciona cada paso.
5 pasos para añadir tooltips de Tippy.js a Webflow
La configuración consta de dos fases distintas: cargar Tippy.js globalmente a través de la configuración del sitio y configurarlo para activar elementos específicos. La implementación completa no requiere más que unos pocos bloques de código. Aquí tienes qué hace cada uno y dónde va.
1. Cargar Tippy.js en la configuración del sitio
Empiezas pegando dos etiquetas script en la sección de código del pie de página (Footer code) de Webflow: una para Popper.js (mantenido principalmente ahora como Floating UI), el motor de posicionamiento que requiere Tippy.js, y otra para Tippy.js. Ve a Configuración del sitio → Código personalizado → Código del pie de página para llegar allí.
Tippy.js depende de Popper.js para la lógica de posicionamiento. Cargas ambos mediante CDN: primero Popper, después Tippy.
Ahora, pega ambas etiquetas script en la sección de código del pie de página (antes de </body>):
<!-- Popper.js (required by Tippy.js for positioning) -->
<script src="https://unpkg.com/@popperjs/core@2/dist/umd/popper.min.js"></script>
<!-- Tippy.js v6 -->
<script src="https://unpkg.com/tippy.js@6/dist/tippy-bundle.umd.js"></script>
Así es como se ve:
La tippy-bundle versión empaqueta Popper.js y el CSS de Tippy.js juntos.
Si tu proyecto tiene una Política de seguridad de contenido que restringe los estilos en línea, cárgalos por separado:
<link rel="stylesheet" href="https://unpkg.com/tippy.js@6/dist/tippy.css" />
Coloca ese enlace CSS en la sección de código del encabezado (Head code) si usas la hoja de estilos por separado. Las etiquetas script siguen yendo en el código del pie de página.
¿Por qué en el pie de página? Los scripts en el encabezado se ejecutan antes de que exista el DOM, por lo que Tippy.js intenta encontrar elementos antes de que tu página se renderice. Poner scripts en el pie de página asegura que el DOM esté completamente cargado cuando Tippy.js se inicialice.
Tras guardar, ambas bibliotecas se cargarán en cada página publicada de tu sitio. No se ejecutarán en el lienzo del Diseñador de Webflow. Tippy.js solo funciona en páginas publicadas.
2. Añade el atributo data-tippy-content a cada elemento
Añade un atributo personalizado llamado data-tippy-content a cada elemento que deba tener un tooltip. El valor se convertirá en el texto del tooltip.
Selecciona el elemento objetivo en el Diseñador de Webflow, abre la configuración del elemento (presiona D o haz clic en el icono de engranaje en la barra de herramientas superior) y desplázate hasta la sección de Atributos personalizados.
Luego, añade el nombre del atributo y su valor:
- Nombre del atributo: data-tippy-content
- Valor: [el texto que quieres que aparezca en el tooltip, p. ej., "Se abre en una pestaña nueva" o "Campo obligatorio"]
El valor que introduzcas aquí será el texto del tooltip. Cada elemento tiene su propio valor, y eso es exactamente lo que aparecerá en la burbuja cuando alguien pase el cursor por encima.
Tippy.js lee data-tippy-content al inicializarse y lo usa como contenido del tooltip. No hace falta ninguna clase ni atributo title. Repite esto para cada elemento al que quieras añadirle un tooltip. Puedes usar valores de contenido distintos para cada uno. Cada elemento tendrá su propia instancia de tooltip independiente.
Una nota sobre elementos interactivos: si añades esto a un elemento HTML no interactivo (un El elemento ya está marcado. El tooltip aún no aparecerá; eso requiere la llamada de inicialización del paso 3. Añade la llamada de inicialización después de las etiquetas de script de Tippy.js. En Configuración del sitio → Código personalizado → Código del pie de página, después de las dos etiquetas de script del paso 1, añade: Esta única llamada selecciona todos los elementos de la página con un atributo Para personalizar el comportamiento (posición, animación, retraso), pasa un objeto de opciones: Las opciones se aplican globalmente a todos los tooltips de la página. Si usas una animación distinta a 'fade', carga el CSS correspondiente en Configuración del sitio → Código personalizado → Código del encabezado: Reemplaza Si necesitas configuraciones distintas por elemento, por ejemplo La lista completa de opciones disponibles se encuentra en la referencia de propiedades de Tippy.js. Guarda y tu sitio estará listo para publicarse. Tippy.js se activará en todos los elementos con Haz clic en Publicar en la parte superior derecha del Diseñador. Selecciona tu dominio y publica. Una vez que termine la publicación, abre la URL de tu sitio en vivo. El código personalizado no se ejecuta en el lienzo del Diseñador de Webflow. En el modo de vista previa, el código personalizado está desactivado de forma predeterminada. Puedes habilitarlo haciendo clic en el interruptor "Habilitar código personalizado" en la parte inferior izquierda de la ventana de vista previa. Pasa el cursor sobre cualquier elemento al que hayas añadido Deberías ver lo siguiente: En dispositivos móviles, la información sobre herramientas se activa al tocar. El elemento debe tener De forma predeterminada, Tippy.js trata el valor de Para renderizar HTML dentro de una información sobre herramientas (contenido con formato, iconos, enlaces), habilita Luego, establece el valor del atributo personalizado como una cadena HTML: Ten en cuenta un par de cosas. Para contenido complejo que vaya más allá de una cadena breve (una tarjeta con una imagen, una definición con formato), puedes hacer referencia a un elemento DOM fuera de pantalla en lugar de una cadena en línea. La mayoría de los fallos se deben a cuatro motivos: probar en el entorno incorrecto, un error tipográfico en el atributo, el problema de toque en iOS o un conflicto de contención CSS. Aquí te explicamos cómo identificar y solucionar cada uno. Has publicado el sitio y has pasado el cursor sobre los elementos, pero no ocurre nada. Comprobación 1: ¿Estás probando en el sitio publicado? El código personalizado no se ejecuta en el lienzo del Diseñador de Webflow. Si estás viendo el lienzo o una URL de vista previa compartida, Tippy.js no se ejecutará. Abre tu dominio publicado o Comprobación 2: ¿El script de inicialización se carga después de la librería? La Comprobación 3: Abre la consola del navegador. Haz clic derecho en la página publicada → Inspeccionar → Consola. Si ves La mayoría de los elementos responden, pero unos pocos no hacen nada, a pesar de tener Causa: El nombre del atributo tiene un error tipográfico. Tippy.js selecciona elementos usando En el Diseñador de Webflow, abre la Configuración del elemento (Element Settings) en el elemento afectado y verifica que el nombre del atributo personalizado sea Algo que suele confundir: si el valor está vacío ( Los tooltips al pasar el cursor funcionan en escritorio. Tocar el mismo elemento en un iPhone o iPad en Safari no hace nada. Causa: iOS Safari no dispara eventos de toque o clic en elementos que no son interactivos de forma nativa (enlaces, botones, campos de entrada) a menos que el elemento tenga Dado que Tippy.js usa el evento Solución: Selecciona el elemento activador en el Diseñador de Webflow. En el panel de Estilo, busca la propiedad Cursor en Miscelánea (o escribe "cursor" en la barra de búsqueda) y establécela en Pointer. Publica y prueba en iOS. Este es el problema móvil más reportado para interacciones de JavaScript personalizadas en elementos no interactivos en Webflow. Cambiar el cursor es una solución de un solo clic. El tooltip se activa, pero una parte queda cortada por un contenedor o escondida detrás de un encabezado fijo. Causa 1: overflow: hidden en un contenedor padre. Tippy.js añade los tooltips a Causa 2: conflicto de z-index. Tippy.js usa por defecto Configúralo con un valor superior al de cualquier elemento que cubra el tooltip.<span>span, un elemento de texto de Webflow), configura también el cursor como "Pointer" en el panel de estilos. Sin esto, iOS Safari no reconocerá el toque y el tooltip no se activará en dispositivos táctiles.
3. Inicializa Tippy.js en el código personalizado del pie de página
<script>
tippy('[data-tippy-content]');
</script>data-tippy-content y activa una instancia de Tippy.js en cada uno. Tippy.js lee automáticamente el valor del atributo como el contenido del tooltip.Personalización del comportamiento
<script>
tippy('[data-tippy-content]', {
placement: 'bottom', // 'top', 'bottom', 'left', 'right', or auto variants
animation: 'scale', // 'fade' (default), 'scale', 'shift-away', 'shift-toward', 'perspective'
delay: [100, 200], // [show delay in ms, hide delay in ms]
arrow: true // show the arrow pointer (default: true)
});
</script><!-- Required for 'scale' animation -->
<link rel="stylesheet" href="https://unpkg.com/tippy.js@6/animations/scale.css" />scale por shift-away'scale'shift-toward, perspective,'shift-away'\fade o 'perspective' según la animación que utilices. Sin este CSS, el ajuste de animación se ignorará silenciosamente y se usará la animación 'fade' por defecto.Uso de diferentes ajustes por elemento
placement: 'right' en un elemento y placement: 'top' en otro, inicializa cada conjunto por separado con un selector más específico, o usa las propiedades data-tippy-* de Tippy.js para sobrescribir cada elemento:<script>
// Global defaults
tippy('[data-tippy-content]', {
placement: 'top',
animation: 'fade'
});
</script>
data-tippy-placement="right" ← set this as a custom attribute on specific elements to override
data-tippy-content al cargar la página.4. Publica y prueba en el sitio en vivo
data-tippy-content en el paso 2.placement que hayas configurado)animation que hayas configurado)cursor: pointer en su CSS para que esto funcione en iOS Safari. Si al tocar no sucede nada, la sección de solución de problemas a continuación te indica cómo arreglarlo.5. Renderiza contenido HTML dentro de las informaciones sobre herramientas (opcional)
data-tippy-content como texto sin formato.allowHTML:<script>
tippy('[data-tippy-content]', {
allowHTML: true
});
</script>data-tippy-content → <strong>Required field</strong> — must be a valid email addressallowHTML: true solo es relevante si el navegador necesita analizar etiquetas dentro de la cadena de contenido. Para la mayoría de los casos de uso (etiquetas simples, descripciones breves), no lo necesitas. Si lo usas, asegúrate de que el contenido sea seguro. No pases cadenas generadas por usuarios sin sanear directamente a las informaciones sobre herramientas de allowHTML: true .¿Qué hace que las informaciones sobre herramientas de Tippy.js fallen en Webflow?
Los tooltips no aparecen en ninguna parte de la página
.webflow.io subdominio.tippy(...) llamada debe ejecutarse después de las etiquetas de script de Popper.js y Tippy.js. Los tres bloques deben estar en la sección de código del pie de página (Footer), en este orden: primero Popper, segundo Tippy y tercero tu script de inicialización. Si el script de inicialización está en la sección de código del encabezado (Head), Tippy.js aún no existe cuando se ejecuta.tippy is not defined o un error 404 en las URLs de la CDN, uno de los scripts no se cargó. Revisa Configuración del sitio → Código personalizado para confirmar que las etiquetas de script están en el pie de página y que las URLs son correctas.Algunos elementos tienen tooltips y otros no
data-tippy-content configurado.'[data-tippy-content]' exactamente. Si falta un solo carácter, el elemento es invisible para el selector.data-tippy-content, todo en minúsculas, con guiones y no guiones bajos.data-tippy-content sin valor definido), Tippy.js aún se inicializa en el elemento pero muestra un tooltip en blanco. Asegúrate de que cada elemento tenga un valor que no esté vacío.Los tooltips no se activan en iOS al tocar el elemento
cursor: pointer configurado en CSS. Este es un comportamiento conocido de Safari desde hace mucho tiempo, no una limitación de Tippy.js.focus para el toque, y focus no se dispara en elementos no interactivos sin esta propiedad CSS, el tooltip nunca se activa.El tooltip aparece pero está recortado o escondido detrás de otro elemento
document.body por defecto, lo que debería evitar la mayoría de los recortes. Si el recorte persiste, es probable que se deba a un padre con overflow: hidden o overflow: clip . Revisa los elementos padres en el panel de Estilo.z-index: 9999. Si un encabezado fijo o una capa modal tiene un z-index mayor, el tooltip se renderizará detrás. Sobrescribe el z-index de Tippy.js en las opciones:<script>
tippy('[data-tippy-content]', {
zIndex: 100000
});
</script>
Preguntas frecuentes
¿Funcionan los tooltips de Tippy.js dentro de las listas de colección del CMS de Webflow?
Sí. Añade como atributo personalizado dentro de la plantilla de la lista de colección. Tippy.js se inicializa al cargar la página y detecta todos los elementos coincidentes en el DOM renderizado, incluidos los generados por el CMS. Para contenido dinámico por elemento, vincula un campo del CMS al valor del atributo usando la vinculación de atributos personalizados de Webflow.data-tippy-content
¿Entra Tippy.js en conflicto con las interacciones nativas de Webflow?
No. Tippy.js funciona de forma independiente al sistema de interacciones de Webflow, incluidas las interacciones con GSAP. Ambos pueden actuar sobre el mismo elemento sin problemas. Si una animación al pasar el ratón y un tooltip compiten visualmente, añade un breve a las opciones de inicio de Tippy.js para ajustar el tiempo.delay
¿Funcionan los tooltips en los campos de formulario y etiquetas de Webflow?
Sí. Los campos de entrada, etiquetas, menús desplegables y áreas de texto admiten el . Para los campos de formulario, usa para que el tooltip no quede sobre la etiqueta, y para que solo aparezca cuando el usuario seleccione el campo, no al pasar el ratón.data-tippy-content attributeplacement: 'right'trigger: 'focus'
¿Funcionan los tooltips en el subdominio de pruebas de Webflow?
Sí. El subdominio de pruebas utiliza el mismo HTML publicado que tu dominio personalizado. Tippy.js funciona igual. El lienzo del Diseñador no ejecuta código personalizado. El modo de vista previa tampoco lo hace por defecto, pero puedes activarlo mediante el interruptor "Habilitar código personalizado" en la esquina inferior izquierda de la ventana de vista previa..webflow.io




