En los propios términos del Skill
Apple Design destila las charlas de interfaz de WWDC de Apple, principalmente Designing Fluid Interfaces (WWDC 2018), en reglas para construir UI web fluida y física. Está dirigido a diseñadores y desarrolladores que trabajan en interfaces basadas en gestos: arrastrar, deslizar, hojas (sheets), resortes (springs), impulso (momentum), transiciones interrumpibles, materiales translúcidos y profundidad, tipografía (tamaño óptico, tracking, leading) y comportamiento de movimiento reducido.
El hilo conductor es que el movimiento debe comenzar desde el valor actual en pantalla, heredar la velocidad del usuario, proyectar el impulso hacia adelante, y ser agarrable y reversible en cualquier instante. Los resortes reemplazan las animaciones de duración fija porque son inherentemente interrumpibles y sensibles a la velocidad, y el skill cierra con los ocho principios de diseño de Apple usados como vocabulario compartido.
Qué produce
- CSS de retroalimentación de presión que escala el control en :active con una transición ease-out de 100ms.
- Llamadas de resorte de movimiento que muestran el valor por defecto críticamente amortiguado y la variante de rebote de impulso lado a lado.
- Un helper project() que implementa la proyección de impulso con decelerationRate por defecto en 0.998.
- CSS de transparencia reducida que reemplaza las barras de herramientas translúcidas con fondos sólidos y sin desenfoque.
Cómo funciona
- 01Responder al presionar (pointer-down)
La retroalimentación pertenece a la presión, no a la liberación: resalte el control en el instante en que se presiona, y trate cualquier cosa no esencial en la ruta de entrada, incluido el retraso de toque de ~300ms, como una regresión.
- 02Seguir el Puntero 1:1
Utilice Pointer Events con captura para que el seguimiento se mantenga aunque el puntero salga de los límites del elemento, y respete el punto donde el usuario lo sujetó en lugar de saltar al centro del elemento.
- 03Haga que el movimiento sea interrumpible
Un elemento en movimiento debe poder sujetarse y revertirse en pleno vuelo; el usuario nunca debería tener que esperar a que termine la animación actual para redirigirla.
- 04Modele el movimiento con muelles (springs)
Un muelle absorbe la nueva entrada simplemente cambiando su objetivo, de modo que el movimiento se mantiene continuo; los guiones de duración fija no tienen nada que reapuntar.
- 05Transfiera la velocidad de liberación
Dele al muelle la velocidad del puntero en el momento de la liberación para que no haya costura entre el arrastre y la animación; normalice según la distancia restante cuando la API requiera una velocidad relativa.
- 06Proyecte el momentum y luego ajuste (snap)
No ajuste desde el punto donde el dedo se soltó; proyecte la posición de reposo tal como lo haría la deceleración del desplazamiento y elija el destino de ajuste más cercano a esa proyección.