{"id":3302,"date":"2025-10-06T16:10:06","date_gmt":"2025-10-06T14:10:06","guid":{"rendered":"https:\/\/tecnologia.euroinnova.com\/como-crear-animaciones-en-css-guia-para-principiantes\/"},"modified":"2025-10-07T14:51:54","modified_gmt":"2025-10-07T12:51:54","slug":"como-crear-animaciones-en-css","status":"publish","type":"post","link":"https:\/\/tecnologia.euroinnova.com\/en\/como-crear-animaciones-en-css","title":{"rendered":"How to create CSS animations: A beginner's guide"},"content":{"rendered":"<p class=\"has-line-data\" data-line-start=\"4\" data-line-end=\"5\">Las animaciones en CSS son una herramienta esencial para los dise\u00f1adores y desarrolladores web. M\u00e1s all\u00e1 de ser un elemento decorativo, las animaciones mejoran la interacci\u00f3n con los usuarios y a\u00f1aden dinamismo a los proyectos. Entender c\u00f3mo utilizarlas correctamente no solo te permitir\u00e1 crear p\u00e1ginas atractivas, sino tambi\u00e9n funcionales y optimizadas.<\/p>\n<p class=\"has-line-data\" data-line-start=\"6\" data-line-end=\"7\">Antes de la llegada de CSS3, crear animaciones en la web era un proceso mucho m\u00e1s complejo y menos eficiente. Herramientas como\u00a0<strong>Adobe Flash<\/strong>\u00a0dominaban el panorama, permitiendo animaciones visuales atractivas, pero con un alto costo en rendimiento y accesibilidad. Al mismo tiempo, JavaScript era la alternativa principal, requiriendo scripts detallados y un mayor consumo de recursos.<\/p>\n<p class=\"has-line-data\" data-line-start=\"8\" data-line-end=\"9\">La introducci\u00f3n de las\u00a0<strong>animaciones en CSS3<\/strong>\u00a0revolucion\u00f3 la forma en que se implementan efectos din\u00e1micos en los sitios web. Ahora, gracias a su sintaxis declarativa y facilidad de uso, los desarrolladores pueden crear animaciones de manera r\u00e1pida, eficiente y accesible, sin necesidad de herramientas externas.<\/p>\n<p class=\"has-line-data\" data-line-start=\"10\" data-line-end=\"11\">Por ejemplo, en una tienda online, las animaciones pueden guiar visualmente al usuario a trav\u00e9s de los productos destacados o indicar la adici\u00f3n de un art\u00edculo al carrito. En un sitio educativo, ayudan a ilustrar conceptos complejos mediante efectos visuales simples pero impactantes. Estas posibilidades han convertido las animaciones en una herramienta esencial en el dise\u00f1o web moderno.<\/p>\n<p class=\"has-line-data\" data-line-start=\"12\" data-line-end=\"13\">En sitios web modernos de marcas reconocidas, como Apple o Tesla, las animaciones en CSS son clave para destacar contenido, proporcionar interacciones fluidas y crear experiencias memorables para los usuarios.<\/p>\n<h2 class=\"code-line\" data-line-start=\"14\" data-line-end=\"15\"><a id=\"La_importancia_de_las_animaciones_en_el_diseo_web_moderno_14\"><\/a><strong>La importancia de las animaciones en el dise\u00f1o web moderno<\/strong><\/h2>\n<p class=\"has-line-data\" data-line-start=\"16\" data-line-end=\"17\">En el entorno digital actual, donde las primeras impresiones cuentan m\u00e1s que nunca, las animaciones juegan un papel crucial. Un sitio web din\u00e1mico y bien dise\u00f1ado puede marcar la diferencia entre captar la atenci\u00f3n del usuario o perderlo r\u00e1pidamente.<\/p>\n<p class=\"has-line-data\" data-line-start=\"18\" data-line-end=\"19\">Las animaciones no solo son visualmente atractivas, sino que tambi\u00e9n cumplen funciones espec\u00edficas dentro de un dise\u00f1o:<\/p>\n<ul>\n<li class=\"has-line-data\" data-line-start=\"20\" data-line-end=\"21\"><strong>Comunicar informaci\u00f3n:<\/strong>\u00a0Ayudan a transmitir ideas de forma visual, como destacar un bot\u00f3n o un mensaje emergente.<\/li>\n<li class=\"has-line-data\" data-line-start=\"21\" data-line-end=\"22\"><strong>Guiar la interacci\u00f3n:<\/strong>\u00a0A trav\u00e9s de movimientos sutiles, puedes indicar a los usuarios c\u00f3mo navegar por tu sitio.<\/li>\n<li class=\"has-line-data\" data-line-start=\"22\" data-line-end=\"24\"><strong>Mejorar la experiencia del usuario:<\/strong>\u00a0Las animaciones aportan fluidez y retroalimentaci\u00f3n visual, haciendo que el uso de una p\u00e1gina sea m\u00e1s intuitivo.<\/li>\n<\/ul>\n<p class=\"has-line-data\" data-line-start=\"24\" data-line-end=\"25\">En resumen, las animaciones bien implementadas pueden transformar un sitio web est\u00e1tico en una experiencia din\u00e1mica que deje una impresi\u00f3n positiva y duradera.<\/p>\n<h2 class=\"code-line\" data-line-start=\"26\" data-line-end=\"27\"><a id=\"Beneficios_clave_Mejora_de_la_experiencia_del_usuario_y_diseo_visual_26\"><\/a><strong>Beneficios clave: Mejora de la experiencia del usuario y dise\u00f1o visual<\/strong><\/h2>\n<p class=\"has-line-data\" data-line-start=\"28\" data-line-end=\"29\">Antes de profundizar en c\u00f3mo crear animaciones en CSS, es importante entender sus beneficios clave. A continuaci\u00f3n, exploraremos por qu\u00e9 son tan valiosas:<\/p>\n<ul>\n<li class=\"has-line-data\" data-line-start=\"30\" data-line-end=\"31\"><strong>Interacci\u00f3n m\u00e1s atractiva:<\/strong>\u00a0Las animaciones proporcionan retroalimentaci\u00f3n en tiempo real, como un cambio de color o movimiento al hacer clic en un bot\u00f3n, haciendo que la interacci\u00f3n sea m\u00e1s fluida y agradable.<\/li>\n<li class=\"has-line-data\" data-line-start=\"31\" data-line-end=\"32\"><strong>Dise\u00f1os visuales modernos:<\/strong>\u00a0Incorporar movimientos sutiles y transiciones suaves hace que una p\u00e1gina luzca m\u00e1s actual y profesional.<\/li>\n<li class=\"has-line-data\" data-line-start=\"32\" data-line-end=\"34\"><strong>Narrativa visual:<\/strong>\u00a0Las animaciones pueden guiar al usuario a trav\u00e9s de un flujo espec\u00edfico, destacando elementos importantes y facilitando la navegaci\u00f3n.<\/li>\n<\/ul>\n<p class=\"has-line-data\" data-line-start=\"34\" data-line-end=\"35\">Cada uno de estos beneficios contribuye a crear una experiencia de usuario m\u00e1s rica y satisfactoria, lo que resulta fundamental en el competitivo mundo del dise\u00f1o web.<\/p>\n<h2 class=\"code-line\" data-line-start=\"36\" data-line-end=\"37\"><a id=\"Fundamentos_de_las_animaciones_en_CSS_36\"><\/a><strong>Fundamentos de las animaciones en CSS<\/strong><\/h2>\n<p class=\"has-line-data\" data-line-start=\"38\" data-line-end=\"39\">Para empezar a trabajar con animaciones en CSS, es importante comprender sus fundamentos. Esto incluye desde una definici\u00f3n b\u00e1sica hasta las diferencias entre transiciones y animaciones, as\u00ed como el uso de propiedades clave.<\/p>\n<h3 class=\"code-line\" data-line-start=\"40\" data-line-end=\"41\"><a id=\"Qu_son_las_animaciones_en_CSS_40\"><\/a><strong>Qu\u00e9 son las animaciones en CSS<\/strong><\/h3>\n<p class=\"has-line-data\" data-line-start=\"42\" data-line-end=\"43\">Las animaciones en CSS son un conjunto de t\u00e9cnicas que permiten cambiar de forma din\u00e1mica las propiedades de un elemento a lo largo del tiempo. A diferencia de los cambios est\u00e1ticos, las animaciones crean transiciones fluidas entre estados, haciendo que los sitios sean m\u00e1s interactivos y atractivos.<\/p>\n<p class=\"has-line-data\" data-line-start=\"44\" data-line-end=\"45\">Existen dos m\u00e9todos principales para animar elementos con CSS:<\/p>\n<ul>\n<li class=\"has-line-data\" data-line-start=\"46\" data-line-end=\"47\"><strong>Transiciones:<\/strong>\u00a0Se utilizan para realizar cambios sencillos y se activan en respuesta a un evento del usuario, como pasar el cursor sobre un bot\u00f3n.<\/li>\n<li class=\"has-line-data\" data-line-start=\"47\" data-line-end=\"49\"><strong>Animaciones completas:<\/strong>\u00a0Usan la regla\u00a0<code>@keyframes<\/code>\u00a0para definir m\u00faltiples estados o etapas en una secuencia, lo que permite crear efectos m\u00e1s complejos y personalizados.<\/li>\n<\/ul>\n<p class=\"has-line-data\" data-line-start=\"49\" data-line-end=\"50\">Con estas herramientas, puedes animar propiedades como color, tama\u00f1o, posici\u00f3n e incluso transformaciones en 3D.<\/p>\n<h3 class=\"code-line\" data-line-start=\"51\" data-line-end=\"52\"><a id=\"Propiedades_clave_para_crear_animaciones_51\"><\/a><strong>Propiedades clave para crear animaciones<\/strong><\/h3>\n<p class=\"has-line-data\" data-line-start=\"53\" data-line-end=\"54\">CSS proporciona una serie de propiedades que controlan c\u00f3mo y cu\u00e1ndo ocurren las animaciones. Estas son las m\u00e1s importantes:<\/p>\n<ul>\n<li class=\"has-line-data\" data-line-start=\"55\" data-line-end=\"56\"><strong><code>animation-name<\/code>:<\/strong>\u00a0Define el nombre de la animaci\u00f3n creada con\u00a0<code>@keyframes<\/code>.<\/li>\n<li class=\"has-line-data\" data-line-start=\"56\" data-line-end=\"57\"><strong><code>animation-duration<\/code>:<\/strong>\u00a0Especifica cu\u00e1nto tiempo dura una animaci\u00f3n.<\/li>\n<li class=\"has-line-data\" data-line-start=\"57\" data-line-end=\"58\"><strong><code>animation-timing-function<\/code>:<\/strong>\u00a0Controla la aceleraci\u00f3n y desaceleraci\u00f3n de la animaci\u00f3n.<\/li>\n<li class=\"has-line-data\" data-line-start=\"58\" data-line-end=\"59\"><strong><code>animation-delay<\/code>:<\/strong>\u00a0Establece un retraso antes de que la animaci\u00f3n comience.<\/li>\n<li class=\"has-line-data\" data-line-start=\"59\" data-line-end=\"60\"><strong><code>animation-iteration-count<\/code>:<\/strong>\u00a0Indica cu\u00e1ntas veces se repetir\u00e1 la animaci\u00f3n.<\/li>\n<li class=\"has-line-data\" data-line-start=\"60\" data-line-end=\"61\"><strong><code>animation-direction<\/code>:<\/strong>\u00a0Permite que la animaci\u00f3n se reproduzca hacia adelante, hacia atr\u00e1s o en ambas direcciones.<\/li>\n<li class=\"has-line-data\" data-line-start=\"61\" data-line-end=\"63\"><strong><code>@keyframes<\/code>:<\/strong>\u00a0Define los estados intermedios y finales de la animaci\u00f3n.<\/li>\n<\/ul>\n<p class=\"has-line-data\" data-line-start=\"63\" data-line-end=\"64\">Entender estas propiedades es clave para comenzar a dise\u00f1ar animaciones funcionales y atractivas.<\/p>\n<h3 class=\"code-line\" data-line-start=\"65\" data-line-end=\"66\"><a id=\"Compatibilidad_de_las_animaciones_CSS_en_navegadores_65\"><\/a><strong>Compatibilidad de las animaciones CSS en navegadores<\/strong><\/h3>\n<p class=\"has-line-data\" data-line-start=\"67\" data-line-end=\"68\">Las animaciones en CSS son ampliamente compatibles con los\u00a0<strong>navegadores modernos<\/strong>, lo que las convierte en una herramienta confiable para el desarrollo web actual. Sin embargo, es importante conocer las\u00a0<strong>versiones m\u00ednimas soportadas<\/strong>\u00a0y considerar navegadores antiguos si necesitas ofrecer un soporte m\u00e1s amplio.<\/p>\n<ul>\n<li class=\"has-line-data\" data-line-start=\"69\" data-line-end=\"70\"><strong>Google Chrome:<\/strong>\u00a0Desde la versi\u00f3n 43.<\/li>\n<li class=\"has-line-data\" data-line-start=\"70\" data-line-end=\"71\"><strong>Mozilla Firefox:<\/strong>\u00a0Desde la versi\u00f3n 16.<\/li>\n<li class=\"has-line-data\" data-line-start=\"71\" data-line-end=\"72\"><strong>Microsoft Edge:<\/strong>\u00a0Todas las versiones modernas (basadas en Chromium).<\/li>\n<li class=\"has-line-data\" data-line-start=\"72\" data-line-end=\"73\"><strong>Safari:<\/strong>\u00a0Desde la versi\u00f3n 9.<\/li>\n<li class=\"has-line-data\" data-line-start=\"73\" data-line-end=\"75\"><strong>Internet Explorer:<\/strong>\u00a0Limitado a IE10 y versiones superiores (requiere prefijos\u00a0<code>-ms-<\/code>).<\/li>\n<\/ul>\n<p class=\"has-line-data\" data-line-start=\"75\" data-line-end=\"76\">Algunos consejos para garantizar compatibilidad son:<\/p>\n<ul>\n<li class=\"has-line-data\" data-line-start=\"77\" data-line-end=\"78\">Utiliza herramientas como\u00a0<strong><a href=\"https:\/\/caniuse.com\/\" target=\"_blank\" rel=\"nofollow noopener\">Can I Use<\/a><\/strong>\u00a0para verificar qu\u00e9 propiedades de animaci\u00f3n funcionan en distintos navegadores.<\/li>\n<li class=\"has-line-data\" data-line-start=\"78\" data-line-end=\"80\">Incluye\u00a0<strong>prefijos espec\u00edficos<\/strong>\u00a0as\u00a0<code>-webkit-<\/code>\u00a0para navegadores antiguos, especialmente para propiedades clave como\u00a0<code>@keyframes<\/code>\u00a0o\u00a0<code>animation<\/code>.<\/li>\n<\/ul>\n<p class=\"has-line-data\" data-line-start=\"80\" data-line-end=\"81\"><strong>Ejemplo con prefijos de navegador:<\/strong><\/p>\n<div style=\"background-color: #f3f4f6; border-radius: .75rem; padding: 1rem;\">\n<pre><code class=\"has-line-data\" data-line-start=\"83\" data-line-end=\"111\"><span class=\"hljs-at_rule\">@<span class=\"hljs-keyword\">-webkit-keyframes<\/span> girar <\/span>{\n  <span class=\"hljs-tag\">from<\/span> <span class=\"hljs-rules\">{\n    <span class=\"hljs-rule\"><span class=\"hljs-attribute\">-webkit-transform<\/span>:<span class=\"hljs-value\"> <span class=\"hljs-function\">rotate<\/span>(<span class=\"hljs-number\">0deg<\/span>)<\/span><\/span>;\n  }<\/span>\n  <span class=\"hljs-tag\">to<\/span> <span class=\"hljs-rules\">{\n    <span class=\"hljs-rule\"><span class=\"hljs-attribute\">-webkit-transform<\/span>:<span class=\"hljs-value\"> <span class=\"hljs-function\">rotate<\/span>(<span class=\"hljs-number\">360deg<\/span>)<\/span><\/span>;\n  }<\/span>\n}\n\n<span class=\"hljs-at_rule\">@<span class=\"hljs-keyword\">keyframes<\/span> girar <\/span>{\n  <span class=\"hljs-tag\">from<\/span> <span class=\"hljs-rules\">{\n    <span class=\"hljs-rule\"><span class=\"hljs-attribute\">transform<\/span>:<span class=\"hljs-value\"> <span class=\"hljs-function\">rotate<\/span>(<span class=\"hljs-number\">0deg<\/span>)<\/span><\/span>;\n  }<\/span>\n  <span class=\"hljs-tag\">to<\/span> <span class=\"hljs-rules\">{\n    <span class=\"hljs-rule\"><span class=\"hljs-attribute\">transform<\/span>:<span class=\"hljs-value\"> <span class=\"hljs-function\">rotate<\/span>(<span class=\"hljs-number\">360deg<\/span>)<\/span><\/span>;\n  }<\/span>\n}\n\n<span class=\"hljs-class\">.spinner<\/span> <span class=\"hljs-rules\">{\n  <span class=\"hljs-rule\"><span class=\"hljs-attribute\">width<\/span>:<span class=\"hljs-value\"> <span class=\"hljs-number\">50px<\/span><\/span><\/span>;\n  <span class=\"hljs-rule\"><span class=\"hljs-attribute\">height<\/span>:<span class=\"hljs-value\"> <span class=\"hljs-number\">50px<\/span><\/span><\/span>;\n  <span class=\"hljs-rule\"><span class=\"hljs-attribute\">border<\/span>:<span class=\"hljs-value\"> <span class=\"hljs-number\">5px<\/span> solid lightgray<\/span><\/span>;\n  <span class=\"hljs-rule\"><span class=\"hljs-attribute\">border-top<\/span>:<span class=\"hljs-value\"> <span class=\"hljs-number\">5px<\/span> solid blue<\/span><\/span>;\n  <span class=\"hljs-rule\"><span class=\"hljs-attribute\">border-radius<\/span>:<span class=\"hljs-value\"> <span class=\"hljs-number\">50%<\/span><\/span><\/span>;\n  <span class=\"hljs-rule\"><span class=\"hljs-attribute\">-webkit-animation<\/span>:<span class=\"hljs-value\"> girar <span class=\"hljs-number\">1s<\/span> linear infinite<\/span><\/span>;\n  <span class=\"hljs-rule\"><span class=\"hljs-attribute\">animation<\/span>:<span class=\"hljs-value\"> girar <span class=\"hljs-number\">1s<\/span> linear infinite<\/span><\/span>;\n}<\/span>\n<\/code><\/pre>\n<\/div>\n<h2 class=\"code-line\" data-line-start=\"112\" data-line-end=\"113\"><a id=\"Transiciones_en_CSS_El_primer_paso_112\"><\/a><strong>Transiciones en CSS: El primer paso<\/strong><\/h2>\n<p class=\"has-line-data\" data-line-start=\"114\" data-line-end=\"115\">Las transiciones en CSS son el punto de partida ideal para introducir movimiento en tus proyectos web. Son f\u00e1ciles de implementar y permiten animar cambios en las propiedades de los elementos de forma fluida y elegante.<\/p>\n<h3 class=\"code-line\" data-line-start=\"116\" data-line-end=\"117\"><a id=\"Introduccin_a_las_transiciones_116\"><\/a><strong>Introducci\u00f3n a las transiciones<\/strong><\/h3>\n<p class=\"has-line-data\" data-line-start=\"118\" data-line-end=\"119\">Una transici\u00f3n en CSS ocurre cuando un elemento cambia de un estado a otro, como cuando pasas el cursor sobre un bot\u00f3n o un enlace. A diferencia de los cambios inmediatos, las transiciones crean un efecto visual progresivo que mejora la experiencia del usuario.<\/p>\n<p class=\"has-line-data\" data-line-start=\"120\" data-line-end=\"121\">Por ejemplo, puedes usar transiciones para animar:<\/p>\n<ul>\n<li class=\"has-line-data\" data-line-start=\"122\" data-line-end=\"123\">Cambios de color al interactuar con un bot\u00f3n o un enlace.<\/li>\n<li class=\"has-line-data\" data-line-start=\"123\" data-line-end=\"124\">Cambios en la posici\u00f3n de un elemento dentro de un contenedor.<\/li>\n<li class=\"has-line-data\" data-line-start=\"124\" data-line-end=\"126\">Transformaciones en el tama\u00f1o o forma de un componente.<\/li>\n<\/ul>\n<h3 class=\"code-line\" data-line-start=\"126\" data-line-end=\"127\"><a id=\"Propiedades_de_transicin_explicadas_126\"><\/a><strong>Propiedades de transici\u00f3n explicadas<\/strong><\/h3>\n<p class=\"has-line-data\" data-line-start=\"128\" data-line-end=\"129\">Las transiciones se controlan a trav\u00e9s de varias propiedades de CSS. Las m\u00e1s importantes son:<\/p>\n<ul>\n<li class=\"has-line-data\" data-line-start=\"130\" data-line-end=\"131\"><strong><code>transition-property<\/code>:<\/strong>\u00a0Especifica qu\u00e9 propiedad se va a animar (por ejemplo,\u00a0<code>color<\/code>\u00a0o\u00a0<code>transform<\/code>).<\/li>\n<li class=\"has-line-data\" data-line-start=\"131\" data-line-end=\"132\"><strong><code>transition-duration<\/code>:<\/strong>\u00a0Define cu\u00e1nto tiempo tarda en completarse la transici\u00f3n.<\/li>\n<li class=\"has-line-data\" data-line-start=\"132\" data-line-end=\"133\"><strong><code>transition-timing-function<\/code>:<\/strong>\u00a0Controla la velocidad de la transici\u00f3n, permitiendo ajustes como aceleraciones o movimientos lineales.<\/li>\n<li class=\"has-line-data\" data-line-start=\"133\" data-line-end=\"135\"><strong><code>transition-delay<\/code>:<\/strong>\u00a0Establece un retraso antes de que comience la transici\u00f3n.<\/li>\n<\/ul>\n<h3 class=\"code-line\" data-line-start=\"135\" data-line-end=\"136\"><a id=\"Herramientas_para_visualizar_transiciones_en_tiempo_real_135\"><\/a><strong>Herramientas para visualizar transiciones en tiempo real<\/strong><\/h3>\n<p class=\"has-line-data\" data-line-start=\"137\" data-line-end=\"138\">Al trabajar con transiciones en CSS, las\u00a0<strong>herramientas de desarrollo del navegador<\/strong>\u00a0(DevTools) son tus mejores aliadas. Estas permiten ajustar las propiedades de las transiciones y ver los resultados en tiempo real sin necesidad de modificar el c\u00f3digo fuente.<\/p>\n<h4 class=\"code-line\" data-line-start=\"139\" data-line-end=\"140\"><a id=\"Cmo_usar_DevTools_para_depurar_transiciones_139\"><\/a><strong>C\u00f3mo usar DevTools para depurar transiciones:<\/strong><\/h4>\n<ul>\n<li class=\"has-line-data\" data-line-start=\"141\" data-line-end=\"142\">Abre las\u00a0<strong>herramientas de desarrollo<\/strong>\u00a0de tu navegador (F12 o clic derecho &gt; Inspeccionar).<\/li>\n<li class=\"has-line-data\" data-line-start=\"142\" data-line-end=\"143\">Selecciona el elemento que tiene aplicada la transici\u00f3n.<\/li>\n<li class=\"has-line-data\" data-line-start=\"143\" data-line-end=\"144\">En la pesta\u00f1a\u00a0<strong>Estilos<\/strong>, busca la propiedad\u00a0<code>transition<\/code>\u00a0y ajusta los valores, como la duraci\u00f3n o la funci\u00f3n de tiempo.<\/li>\n<li class=\"has-line-data\" data-line-start=\"144\" data-line-end=\"146\">Utiliza la pesta\u00f1a\u00a0<strong>Animaciones<\/strong>\u00a0(disponible en navegadores como Chrome y Firefox) para visualizar las transiciones y ralentizarlas si es necesario.<\/li>\n<\/ul>\n<p class=\"has-line-data\" data-line-start=\"146\" data-line-end=\"147\">Esto te permite experimentar con diferentes configuraciones de tiempo y movimiento sin necesidad de refrescar la p\u00e1gina o escribir c\u00f3digo adicional.<\/p>\n<h3 class=\"code-line\" data-line-start=\"148\" data-line-end=\"149\"><a id=\"Ejemplo_prctico_Transiciones_simples_148\"><\/a><strong>Ejemplo pr\u00e1ctico: Transiciones simples<\/strong><\/h3>\n<p class=\"has-line-data\" data-line-start=\"150\" data-line-end=\"151\">En este ejemplo, crearemos un bot\u00f3n que cambia de color y aumenta ligeramente su tama\u00f1o al pasar el cursor sobre \u00e9l.<\/p>\n<div style=\"background-color: #f3f4f6; border-radius: .75rem; padding: 1rem;\">\n<pre><code class=\"has-line-data\" data-line-start=\"153\" data-line-end=\"167\"><span class=\"hljs-class\">.button<\/span> <span class=\"hljs-rules\">{\n  <span class=\"hljs-rule\"><span class=\"hljs-attribute\">background-color<\/span>:<span class=\"hljs-value\"> blue<\/span><\/span>;\n  <span class=\"hljs-rule\"><span class=\"hljs-attribute\">color<\/span>:<span class=\"hljs-value\"> white<\/span><\/span>;\n  <span class=\"hljs-rule\"><span class=\"hljs-attribute\">padding<\/span>:<span class=\"hljs-value\"> <span class=\"hljs-number\">10px<\/span> <span class=\"hljs-number\">20px<\/span><\/span><\/span>;\n  <span class=\"hljs-rule\"><span class=\"hljs-attribute\">border<\/span>:<span class=\"hljs-value\"> none<\/span><\/span>;\n  <span class=\"hljs-rule\"><span class=\"hljs-attribute\">cursor<\/span>:<span class=\"hljs-value\"> pointer<\/span><\/span>;\n  <span class=\"hljs-rule\"><span class=\"hljs-attribute\">transition<\/span>:<span class=\"hljs-value\"> background-color <span class=\"hljs-number\">0.3s<\/span> ease, transform <span class=\"hljs-number\">0.3s<\/span> ease<\/span><\/span>;\n}<\/span>\n\n<span class=\"hljs-class\">.button<\/span><span class=\"hljs-pseudo\">:hover<\/span> <span class=\"hljs-rules\">{\n  <span class=\"hljs-rule\"><span class=\"hljs-attribute\">background-color<\/span>:<span class=\"hljs-value\"> darkblue<\/span><\/span>;\n  <span class=\"hljs-rule\"><span class=\"hljs-attribute\">transform<\/span>:<span class=\"hljs-value\"> <span class=\"hljs-function\">scale<\/span>(<span class=\"hljs-number\">1.1<\/span>)<\/span><\/span>;\n}<\/span>\n<\/code><\/pre>\n<\/div>\n<h3 class=\"code-line\" data-line-start=\"168\" data-line-end=\"169\"><a id=\"Ejemplo_avanzado_Deslizamiento_de_un_men_168\"><\/a><strong>Ejemplo avanzado: Deslizamiento de un men\u00fa<\/strong><\/h3>\n<p class=\"has-line-data\" data-line-start=\"170\" data-line-end=\"171\">Tambi\u00e9n exploraremos c\u00f3mo crear un men\u00fa desplegable que se deslice suavemente al mostrarse.<\/p>\n<div style=\"background-color: #f3f4f6; border-radius: .75rem; padding: 1rem;\">\n<pre><code class=\"has-line-data\" data-line-start=\"173\" data-line-end=\"185\"><span class=\"hljs-class\">.menu<\/span> <span class=\"hljs-rules\">{\n  <span class=\"hljs-rule\"><span class=\"hljs-attribute\">width<\/span>:<span class=\"hljs-value\"> <span class=\"hljs-number\">200px<\/span><\/span><\/span>;\n  <span class=\"hljs-rule\"><span class=\"hljs-attribute\">height<\/span>:<span class=\"hljs-value\"> <span class=\"hljs-number\">0<\/span><\/span><\/span>;\n  <span class=\"hljs-rule\"><span class=\"hljs-attribute\">background-color<\/span>:<span class=\"hljs-value\"> lightgray<\/span><\/span>;\n  <span class=\"hljs-rule\"><span class=\"hljs-attribute\">overflow<\/span>:<span class=\"hljs-value\"> hidden<\/span><\/span>;\n  <span class=\"hljs-rule\"><span class=\"hljs-attribute\">transition<\/span>:<span class=\"hljs-value\"> height <span class=\"hljs-number\">0.5s<\/span> ease<\/span><\/span>;\n}<\/span>\n\n<span class=\"hljs-class\">.menu<\/span><span class=\"hljs-class\">.show<\/span> <span class=\"hljs-rules\">{\n  <span class=\"hljs-rule\"><span class=\"hljs-attribute\">height<\/span>:<span class=\"hljs-value\"> <span class=\"hljs-number\">150px<\/span><\/span><\/span>;\n}<\/span>\n<\/code><\/pre>\n<\/div>\n<p class=\"has-line-data\" data-line-start=\"186\" data-line-end=\"187\">Con estas bases, las transiciones se convierten en una herramienta poderosa para a\u00f1adir dinamismo y mejorar la experiencia del usuario de forma sencilla.<\/p>\n<h2 class=\"code-line\" data-line-start=\"188\" data-line-end=\"189\"><a id=\"Animaciones_con_keyframes_Moviendo_elementos_188\"><\/a><strong>Animaciones con\u00a0<code>@keyframes<\/code>: Moviendo elementos<\/strong><\/h2>\n<p class=\"has-line-data\" data-line-start=\"190\" data-line-end=\"191\">Cuando necesitas crear movimientos m\u00e1s complejos que una simple transici\u00f3n, las animaciones con\u00a0<code>@keyframes<\/code>\u00a0son la soluci\u00f3n ideal. Esta t\u00e9cnica permite definir m\u00faltiples etapas en una animaci\u00f3n, controlando c\u00f3mo cambia un elemento a lo largo del tiempo.<\/p>\n<h3 class=\"code-line\" data-line-start=\"192\" data-line-end=\"193\"><a id=\"Qu_son_y_cmo_funcionan_los_keyframes_192\"><\/a><strong>Qu\u00e9 son y c\u00f3mo funcionan los\u00a0<code>@keyframes<\/code><\/strong><\/h3>\n<p class=\"has-line-data\" data-line-start=\"194\" data-line-end=\"195\">La regla\u00a0<code>@keyframes<\/code>\u00a0define los estados intermedios y finales de una animaci\u00f3n. A trav\u00e9s de esta, puedes especificar c\u00f3mo debe cambiar un elemento en puntos clave de la animaci\u00f3n, utilizando porcentajes o palabras clave como\u00a0<code>from<\/code>\u00a0y\u00a0<code>to<\/code>.<\/p>\n<div style=\"background-color: #f3f4f6; border-radius: .75rem; padding: 1rem;\">\n<pre><code class=\"has-line-data\" data-line-start=\"197\" data-line-end=\"214\"><span class=\"hljs-at_rule\">@<span class=\"hljs-keyword\">keyframes<\/span> ejemplo-basico <\/span>{\n  <span class=\"hljs-tag\">from<\/span> <span class=\"hljs-rules\">{\n    <span class=\"hljs-rule\"><span class=\"hljs-attribute\">opacity<\/span>:<span class=\"hljs-value\"> <span class=\"hljs-number\">0<\/span><\/span><\/span>;\n    <span class=\"hljs-rule\"><span class=\"hljs-attribute\">transform<\/span>:<span class=\"hljs-value\"> <span class=\"hljs-function\">translateY<\/span>(-<span class=\"hljs-number\">20px<\/span>)<\/span><\/span>;\n  }<\/span>\n  <span class=\"hljs-tag\">to<\/span> <span class=\"hljs-rules\">{\n    <span class=\"hljs-rule\"><span class=\"hljs-attribute\">opacity<\/span>:<span class=\"hljs-value\"> <span class=\"hljs-number\">1<\/span><\/span><\/span>;\n    <span class=\"hljs-rule\"><span class=\"hljs-attribute\">transform<\/span>:<span class=\"hljs-value\"> <span class=\"hljs-function\">translateY<\/span>(<span class=\"hljs-number\">0<\/span>)<\/span><\/span>;\n  }<\/span>\n}\n\n<span class=\"hljs-class\">.caja-animada<\/span> <span class=\"hljs-rules\">{\n  <span class=\"hljs-rule\"><span class=\"hljs-attribute\">animation-name<\/span>:<span class=\"hljs-value\"> ejemplo-basico<\/span><\/span>;\n  <span class=\"hljs-rule\"><span class=\"hljs-attribute\">animation-duration<\/span>:<span class=\"hljs-value\"> <span class=\"hljs-number\">2s<\/span><\/span><\/span>;\n  <span class=\"hljs-rule\"><span class=\"hljs-attribute\">animation-timing-function<\/span>:<span class=\"hljs-value\"> ease-out<\/span><\/span>;\n}<\/span>\n<\/code><\/pre>\n<\/div>\n<h3 class=\"code-line\" data-line-start=\"215\" data-line-end=\"216\"><a id=\"Propiedades_avanzadas_de_animacin_215\"><\/a><strong>Propiedades avanzadas de animaci\u00f3n<\/strong><\/h3>\n<p class=\"has-line-data\" data-line-start=\"217\" data-line-end=\"218\">Adem\u00e1s de las propiedades b\u00e1sicas, CSS ofrece opciones avanzadas que ampl\u00edan las posibilidades de dise\u00f1o:<\/p>\n<ul>\n<li class=\"has-line-data\" data-line-start=\"219\" data-line-end=\"220\"><strong><code>animation-iteration-count<\/code>:<\/strong>\u00a0Controla cu\u00e1ntas veces se repetir\u00e1 la animaci\u00f3n. Puedes usar un n\u00famero entero o el valor especial\u00a0<code>infinite<\/code>\u00a0para bucles continuos.<\/li>\n<li class=\"has-line-data\" data-line-start=\"220\" data-line-end=\"225\"><strong><code>animation-fill-mode<\/code>:<\/strong>\u00a0Define c\u00f3mo debe lucir el elemento antes o despu\u00e9s de la animaci\u00f3n. Los valores m\u00e1s comunes son:\n<ul>\n<li class=\"has-line-data\" data-line-start=\"221\" data-line-end=\"222\"><code>none<\/code>: Sin estilo adicional.<\/li>\n<li class=\"has-line-data\" data-line-start=\"222\" data-line-end=\"223\"><code>forwards<\/code>: El elemento conserva el estilo del \u00faltimo fotograma.<\/li>\n<li class=\"has-line-data\" data-line-start=\"223\" data-line-end=\"224\"><code>backwards<\/code>: Aplica el estilo del primer fotograma antes de que comience la animaci\u00f3n.<\/li>\n<li class=\"has-line-data\" data-line-start=\"224\" data-line-end=\"225\"><code>both<\/code>: Combina ambos comportamientos.<\/li>\n<\/ul>\n<\/li>\n<li class=\"has-line-data\" data-line-start=\"225\" data-line-end=\"227\"><strong><code>animation-direction<\/code>:<\/strong>\u00a0Establece si la animaci\u00f3n se reproduce en orden normal, inverso o alterna entre ambas direcciones.<\/li>\n<\/ul>\n<h3 class=\"code-line\" data-line-start=\"227\" data-line-end=\"228\"><a id=\"Ejemplo_prctico_Efecto_de_rebote_bounce_227\"><\/a><strong>Ejemplo pr\u00e1ctico: Efecto de rebote (bounce)<\/strong><\/h3>\n<p class=\"has-line-data\" data-line-start=\"229\" data-line-end=\"230\">En este ejemplo, veremos c\u00f3mo crear una animaci\u00f3n que simule un rebote continuo en un cuadro.<\/p>\n<div style=\"background-color: #f3f4f6; border-radius: .75rem; padding: 1rem;\">\n<pre><code class=\"has-line-data\" data-line-start=\"232\" data-line-end=\"247\"><span class=\"hljs-at_rule\">@<span class=\"hljs-keyword\">keyframes<\/span> rebote <\/span>{\n  0%, 100% <span class=\"hljs-rules\">{\n    <span class=\"hljs-rule\"><span class=\"hljs-attribute\">transform<\/span>:<span class=\"hljs-value\"> <span class=\"hljs-function\">translateY<\/span>(<span class=\"hljs-number\">0<\/span>)<\/span><\/span>;\n  }<\/span>\n  50% <span class=\"hljs-rules\">{\n    <span class=\"hljs-rule\"><span class=\"hljs-attribute\">transform<\/span>:<span class=\"hljs-value\"> <span class=\"hljs-function\">translateY<\/span>(-<span class=\"hljs-number\">20px<\/span>)<\/span><\/span>;\n  }<\/span>\n}\n\n<span class=\"hljs-class\">.cuadro-rebotando<\/span> <span class=\"hljs-rules\">{\n  <span class=\"hljs-rule\"><span class=\"hljs-attribute\">animation-name<\/span>:<span class=\"hljs-value\"> rebote<\/span><\/span>;\n  <span class=\"hljs-rule\"><span class=\"hljs-attribute\">animation-duration<\/span>:<span class=\"hljs-value\"> <span class=\"hljs-number\">1s<\/span><\/span><\/span>;\n  <span class=\"hljs-rule\"><span class=\"hljs-attribute\">animation-iteration-count<\/span>:<span class=\"hljs-value\"> infinite<\/span><\/span>;\n}<\/span>\n<\/code><\/pre>\n<\/div>\n<h3 class=\"code-line\" data-line-start=\"248\" data-line-end=\"249\"><a id=\"Ejemplo_avanzado_Mover_un_objeto_en_crculo_248\"><\/a><strong>Ejemplo avanzado: Mover un objeto en c\u00edrculo<\/strong><\/h3>\n<p class=\"has-line-data\" data-line-start=\"250\" data-line-end=\"251\">Este ejemplo demuestra c\u00f3mo combinar transformaciones para que un elemento siga una trayectoria circular.<\/p>\n<div style=\"background-color: #f3f4f6; border-radius: .75rem; padding: 1rem;\">\n<pre><code class=\"has-line-data\" data-line-start=\"253\" data-line-end=\"268\"><span class=\"hljs-at_rule\">@<span class=\"hljs-keyword\">keyframes<\/span> mover-circulo <\/span>{\n  0% <span class=\"hljs-rules\">{\n    <span class=\"hljs-rule\"><span class=\"hljs-attribute\">transform<\/span>:<span class=\"hljs-value\"> <span class=\"hljs-function\">rotate<\/span>(<span class=\"hljs-number\">0deg<\/span>) <span class=\"hljs-function\">translateX<\/span>(<span class=\"hljs-number\">100px<\/span>) <span class=\"hljs-function\">rotate<\/span>(<span class=\"hljs-number\">0deg<\/span>)<\/span><\/span>;\n  }<\/span>\n  100% <span class=\"hljs-rules\">{\n    <span class=\"hljs-rule\"><span class=\"hljs-attribute\">transform<\/span>:<span class=\"hljs-value\"> <span class=\"hljs-function\">rotate<\/span>(<span class=\"hljs-number\">360deg<\/span>) <span class=\"hljs-function\">translateX<\/span>(<span class=\"hljs-number\">100px<\/span>) <span class=\"hljs-function\">rotate<\/span>(-<span class=\"hljs-number\">360deg<\/span>)<\/span><\/span>;\n  }<\/span>\n}\n\n<span class=\"hljs-class\">.objeto-circular<\/span> <span class=\"hljs-rules\">{\n  <span class=\"hljs-rule\"><span class=\"hljs-attribute\">animation-name<\/span>:<span class=\"hljs-value\"> mover-circulo<\/span><\/span>;\n  <span class=\"hljs-rule\"><span class=\"hljs-attribute\">animation-duration<\/span>:<span class=\"hljs-value\"> <span class=\"hljs-number\">4s<\/span><\/span><\/span>;\n  <span class=\"hljs-rule\"><span class=\"hljs-attribute\">animation-iteration-count<\/span>:<span class=\"hljs-value\"> infinite<\/span><\/span>;\n}<\/span>\n<\/code><\/pre>\n<\/div>\n<p class=\"has-line-data\" data-line-start=\"269\" data-line-end=\"270\">Con estas t\u00e9cnicas, podr\u00e1s llevar tus animaciones a un nivel superior, creando movimientos complejos y llamativos que se adapten a tus necesidades de dise\u00f1o.<\/p>\n<h2 class=\"code-line\" data-line-start=\"271\" data-line-end=\"272\"><a id=\"Tcnicas_avanzadas_de_animacin_271\"><\/a><strong>T\u00e9cnicas avanzadas de animaci\u00f3n<\/strong><\/h2>\n<p class=\"has-line-data\" data-line-start=\"273\" data-line-end=\"274\">Una vez dominados los fundamentos de las animaciones en CSS, puedes explorar t\u00e9cnicas avanzadas para llevar tus dise\u00f1os al siguiente nivel. Estas herramientas y enfoques te permitir\u00e1n crear efectos m\u00e1s sofisticados y optimizados.<\/p>\n<h3 class=\"code-line\" data-line-start=\"275\" data-line-end=\"276\"><a id=\"Uso_de_cubicbezier_para_personalizar_movimientos_275\"><\/a><strong>Uso de cubic-bezier para personalizar movimientos<\/strong><\/h3>\n<p class=\"has-line-data\" data-line-start=\"277\" data-line-end=\"278\">La propiedad\u00a0<code>animation-timing-function<\/code>\u00a0no se limita a valores predefinidos como\u00a0<code>ease<\/code>\u00a0o\u00a0<code>linear<\/code>. Utilizando la funci\u00f3n\u00a0<code>cubic-bezier<\/code>, puedes personalizar la curva de tiempo para lograr efectos \u00fanicos que simulan comportamientos f\u00edsicos, como aceleraci\u00f3n o desaceleraci\u00f3n naturales.<\/p>\n<div style=\"background-color: #f3f4f6; border-radius: .75rem; padding: 1rem;\">\n<pre><code class=\"has-line-data\" data-line-start=\"280\" data-line-end=\"291\"><span class=\"hljs-class\">.caja<\/span> <span class=\"hljs-rules\">{\n  <span class=\"hljs-rule\"><span class=\"hljs-attribute\">width<\/span>:<span class=\"hljs-value\"> <span class=\"hljs-number\">100px<\/span><\/span><\/span>;\n  <span class=\"hljs-rule\"><span class=\"hljs-attribute\">height<\/span>:<span class=\"hljs-value\"> <span class=\"hljs-number\">100px<\/span><\/span><\/span>;\n  <span class=\"hljs-rule\"><span class=\"hljs-attribute\">background-color<\/span>:<span class=\"hljs-value\"> coral<\/span><\/span>;\n  <span class=\"hljs-rule\"><span class=\"hljs-attribute\">transition<\/span>:<span class=\"hljs-value\"> transform <span class=\"hljs-number\">2s<\/span> <span class=\"hljs-function\">cubic-bezier<\/span>(<span class=\"hljs-number\">0.68<\/span>, -<span class=\"hljs-number\">0.55<\/span>, <span class=\"hljs-number\">0.27<\/span>, <span class=\"hljs-number\">1.55<\/span>)<\/span><\/span>;\n}<\/span>\n\n<span class=\"hljs-class\">.caja<\/span><span class=\"hljs-pseudo\">:hover<\/span> <span class=\"hljs-rules\">{\n  <span class=\"hljs-rule\"><span class=\"hljs-attribute\">transform<\/span>:<span class=\"hljs-value\"> <span class=\"hljs-function\">scale<\/span>(<span class=\"hljs-number\">1.5<\/span>)<\/span><\/span>;\n}<\/span>\n<\/code><\/pre>\n<\/div>\n<h3 class=\"code-line\" data-line-start=\"292\" data-line-end=\"293\"><a id=\"Entendiendo_cubicbezier_de_manera_intuitiva_292\"><\/a><strong>Entendiendo cubic-bezier de manera intuitiva<\/strong><\/h3>\n<p class=\"has-line-data\" data-line-start=\"294\" data-line-end=\"295\">The function\u00a0<strong><code>cubic-bezier<\/code><\/strong>\u00a0permite personalizar la curva de aceleraci\u00f3n de una animaci\u00f3n. Puedes imaginarlo como un gr\u00e1fico en el que controlas c\u00f3mo empieza y termina un movimiento, similar a ajustar la aceleraci\u00f3n y f<\/p>","protected":false},"excerpt":{"rendered":"<p>Las animaciones en CSS son una herramienta esencial para los dise\u00f1adores y desarrolladores web. M\u00e1s all\u00e1 de ser un elemento [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":957,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[1],"tags":[],"class_list":["post-3302","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-sin-categorizar"],"acf":[],"_links":{"self":[{"href":"https:\/\/tecnologia.euroinnova.com\/en\/wp-json\/wp\/v2\/posts\/3302","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tecnologia.euroinnova.com\/en\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/tecnologia.euroinnova.com\/en\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/tecnologia.euroinnova.com\/en\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/tecnologia.euroinnova.com\/en\/wp-json\/wp\/v2\/comments?post=3302"}],"version-history":[{"count":0,"href":"https:\/\/tecnologia.euroinnova.com\/en\/wp-json\/wp\/v2\/posts\/3302\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/tecnologia.euroinnova.com\/en\/wp-json\/wp\/v2\/media\/957"}],"wp:attachment":[{"href":"https:\/\/tecnologia.euroinnova.com\/en\/wp-json\/wp\/v2\/media?parent=3302"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/tecnologia.euroinnova.com\/en\/wp-json\/wp\/v2\/categories?post=3302"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/tecnologia.euroinnova.com\/en\/wp-json\/wp\/v2\/tags?post=3302"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}