{"id":19401,"date":"2026-06-14T06:46:00","date_gmt":"2026-06-14T04:46:00","guid":{"rendered":"https:\/\/martagonzalez.dev\/wp\/blog\/\/"},"modified":"2026-06-14T11:26:29","modified_gmt":"2026-06-14T09:26:29","slug":"como-crear-animaciones-suaves-con-transition","status":"publish","type":"post","link":"https:\/\/martagonzalez.dev\/wp\/blog\/como-crear-animaciones-suaves-con-transition\/","title":{"rendered":"C\u00f3mo crear animaciones suaves con transition"},"content":{"rendered":"<div class=\"kksr-ratings kksr-native\" data-payload=\"{&quot;align&quot;:&quot;left&quot;,&quot;id&quot;:&quot;19401&quot;,&quot;count&quot;:&quot;1&quot;,&quot;best&quot;:&quot;5&quot;,&quot;gap&quot;:&quot;5&quot;,&quot;greet&quot;:&quot;\u00bfTe ha resultado \u00fatil este art\u00edculo?&quot;,&quot;legend&quot;:&quot;{score}\/{best} \u00b7 {count} {votes}&quot;,&quot;_legend&quot;:&quot;{score}\/{best} \u00b7 {count} {votes}&quot;,&quot;score&quot;:&quot;5&quot;,&quot;size&quot;:&quot;24&quot;,&quot;legendonly&quot;:&quot;false&quot;,&quot;starsonly&quot;:&quot;false&quot;}\"><div class=\"kksr-stars\"><\/div><div class=\"kksr-legend\"><\/div><\/div>\n<figure class=\"wp-block-image size-large\"><img data-dominant-color=\"d2cbe2\" data-has-transparency=\"false\" style=\"--dominant-color: #d2cbe2;\" decoding=\"async\" width=\"1024\" height=\"683\" sizes=\"(max-width: 1024px) 100vw, 1024px\" src=\"https:\/\/martagonzalez.dev\/wp\/wp-content\/uploads\/2026\/06\/como-crear-animaciones-suaves-con-transition-css-1024x683.avif\" alt=\"\" class=\"wp-image-19431 not-transparent\" srcset=\"https:\/\/martagonzalez.dev\/wp\/wp-content\/uploads\/2026\/06\/como-crear-animaciones-suaves-con-transition-css-1024x683.avif 1024w, https:\/\/martagonzalez.dev\/wp\/wp-content\/uploads\/2026\/06\/como-crear-animaciones-suaves-con-transition-css-300x200.avif 300w, https:\/\/martagonzalez.dev\/wp\/wp-content\/uploads\/2026\/06\/como-crear-animaciones-suaves-con-transition-css-768x512.avif 768w, https:\/\/martagonzalez.dev\/wp\/wp-content\/uploads\/2026\/06\/como-crear-animaciones-suaves-con-transition-css.avif 1536w\" \/ fetchpriority=\"high\"><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">Crear una interfaz agradable no depende solo de elegir buenos colores, una tipograf\u00eda legible o una estructura clara. Tambi\u00e9n influye mucho c\u00f3mo responde la web cuando una persona interact\u00faa con ella. Un bot\u00f3n que cambia de estado de forma brusca puede sentirse r\u00edgido. En cambio, un bot\u00f3n que cambia de color o se desplaza ligeramente con suavidad transmite una sensaci\u00f3n m\u00e1s cuidada y profesional.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aqu\u00ed es donde entra en juego <code>transition<\/code>, una de las propiedades m\u00e1s \u00fatiles de CSS para crear peque\u00f1as animaciones entre dos estados. Con ella podemos suavizar cambios de color, movimientos, escalados, opacidades o sombras sin necesidad de utilizar JavaScript ni crear animaciones complejas con <code>@keyframes<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si est\u00e1s empezando a trabajar con movimiento en interfaces, te recomiendo leer tambi\u00e9n esta gu\u00eda sobre animaciones CSS desde cero, donde explico las bases para entender cu\u00e1ndo usar <code>transition<\/code>, cu\u00e1ndo usar <code>animation<\/code> y qu\u00e9 propiedades conviene animar.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En este art\u00edculo vamos a centrarnos en <strong>c\u00f3mo crear animaciones suaves con <code>transition<\/code><\/strong>, c\u00f3mo escribir su sintaxis correctamente, qu\u00e9 errores evitar y c\u00f3mo aplicarla en botones, enlaces, tarjetas, men\u00fas e im\u00e1genes.<\/p>\n\n\n\n<h2 id=\"h-que-es-transition-en-css\" class=\"wp-block-heading\">Qu\u00e9 es <code>transition<\/code> en CSS<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">La propiedad <code>transition<\/code> permite que un cambio entre dos estados de un elemento no ocurra de golpe, sino de forma progresiva.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por ejemplo, imagina un bot\u00f3n con un color de fondo rosa. Cuando pasas el cursor por encima, ese bot\u00f3n cambia a morado. Sin transici\u00f3n, el cambio es inmediato. Con <code>transition<\/code>, el navegador genera los estados intermedios y el cambio se percibe de manera m\u00e1s suave.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.button {\n  background-color: #cc2b5e;\n  transition: background-color 0.3s ease;\n}\n\n.button:hover {\n  background-color: #753a88;\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">En este ejemplo, el cambio de color tarda <code>0.3s<\/code> y utiliza una curva de movimiento <code>ease<\/code>. Es un detalle peque\u00f1o, pero cambia mucho la percepci\u00f3n de la interfaz.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La idea principal es sencilla: <strong><code>transition<\/code> suaviza el paso de un valor CSS a otro<\/strong>. No crea una animaci\u00f3n compleja por s\u00ed sola, sino que anima un cambio que ya existe.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por eso suele utilizarse en estados como:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>:hover<\/code><\/li>\n\n\n\n<li><code>:focus<\/code><\/li>\n\n\n\n<li><code>:active<\/code><\/li>\n\n\n\n<li>clases a\u00f1adidas con JavaScript<\/li>\n\n\n\n<li>cambios visuales en componentes interactivos<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Es una propiedad especialmente \u00fatil para microinteracciones: botones, enlaces, tarjetas, men\u00fas, iconos, tooltips o peque\u00f1os efectos visuales.<\/p>\n\n\n\n<h2 id=\"h-diferencia-entre-transition-y-animation\" class=\"wp-block-heading\">Diferencia entre <code>transition<\/code> y <code>animation<\/code><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Una duda muy habitual es cu\u00e1ndo conviene usar <code>transition<\/code> y cu\u00e1ndo es mejor usar <code>animation<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Aunque ambas sirven para crear movimiento en CSS, no tienen el mismo prop\u00f3sito.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><code>transition<\/code> se utiliza cuando queremos animar el cambio entre dos estados. Por ejemplo, un bot\u00f3n en reposo y ese mismo bot\u00f3n en estado <code>hover<\/code>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.card {\n  transform: translateY(0);\n  transition: transform 0.25s ease;\n}\n\n.card:hover {\n  transform: translateY(-6px);\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Aqu\u00ed solo hay dos estados: la tarjeta en su posici\u00f3n inicial y la tarjeta ligeramente elevada. Este es un caso perfecto para usar <code>transition<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En cambio, <code>animation<\/code> se utiliza cuando necesitamos una secuencia m\u00e1s elaborada, varios pasos intermedios o una repetici\u00f3n. Por ejemplo, un loader girando, un icono latiendo en bucle o una animaci\u00f3n de entrada con diferentes fases.<\/p>\n\n\n\n<h3 id=\"h-regla-practica-para-elegir\" class=\"wp-block-heading\">Regla pr\u00e1ctica para elegir<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Puedes quedarte con esta idea:<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><strong>Si hay dos estados, usa <code>transition<\/code>.<\/strong><br><strong>Si hay una secuencia o repetici\u00f3n, usa <code>animation<\/code>.<\/strong><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para un efecto <code>hover<\/code>, lo normal es usar <code>transition<\/code>. Para un loader infinito, probablemente usar\u00e1s <code>@keyframes<\/code> y <code>animation<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Esta diferencia es importante porque muchas veces se usa <code>animation<\/code> para resolver efectos que podr\u00edan hacerse de forma m\u00e1s simple, limpia y mantenible con <code>transition<\/code>.<\/p>\n\n\n\n<h2 id=\"h-sintaxis-de-transition\" class=\"wp-block-heading\">Sintaxis de <code>transition<\/code><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">La propiedad <code>transition<\/code> es una abreviatura que agrupa varias propiedades relacionadas con la transici\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Su sintaxis habitual es:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>transition: propiedad duraci\u00f3n funci\u00f3n-de-tiempo retraso;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Por ejemplo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>transition: transform 0.3s ease-in-out 0s;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Este c\u00f3digo indica que la propiedad <code>transform<\/code> debe cambiar durante <code>0.3s<\/code>, con una curva <code>ease-in-out<\/code> y sin retraso.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tambi\u00e9n se puede escribir de forma separada:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.element {\n  transition-property: transform;\n  transition-duration: 0.3s;\n  transition-timing-function: ease-in-out;\n  transition-delay: 0s;\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Ambas formas son correctas, pero en proyectos reales suele utilizarse la versi\u00f3n abreviada porque es m\u00e1s compacta y f\u00e1cil de leer.<\/p>\n\n\n\n<h3 id=\"h-transition-property-que-propiedad-se-anima\" class=\"wp-block-heading\"><code>transition-property<\/code>: qu\u00e9 propiedad se anima<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><code>transition-property<\/code> indica qu\u00e9 propiedad CSS queremos animar.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>transition-property: background-color;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Tambi\u00e9n podemos animar varias propiedades separ\u00e1ndolas con comas:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>transition-property: background-color, transform;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Una opci\u00f3n muy com\u00fan es usar <code>all<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>transition: all 0.3s ease;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Aunque puede parecer c\u00f3modo, conviene tener cuidado. <code>all<\/code> indica que cualquier propiedad que cambie ser\u00e1 animada. Esto puede provocar resultados inesperados si m\u00e1s adelante modificas otras propiedades del elemento.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por eso, en muchos casos es mejor indicar exactamente qu\u00e9 propiedades quieres animar:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>transition: background-color 0.3s ease, transform 0.3s ease;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">El c\u00f3digo queda m\u00e1s claro, m\u00e1s predecible y m\u00e1s f\u00e1cil de mantener.<\/p>\n\n\n\n<h3 id=\"h-transition-duration-cuanto-dura-la-transicion\" class=\"wp-block-heading\"><code>transition-duration<\/code>: cu\u00e1nto dura la transici\u00f3n<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><code>transition-duration<\/code> define cu\u00e1nto tarda la transici\u00f3n en completarse. Puede expresarse en segundos o milisegundos.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>transition-duration: 300ms;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">O tambi\u00e9n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>transition-duration: 0.3s;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Para microinteracciones, como botones o enlaces, suelen funcionar bien valores entre <code>150ms<\/code> y <code>300ms<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si la transici\u00f3n es demasiado r\u00e1pida, apenas se nota. Si es demasiado lenta, puede hacer que la interfaz se sienta pesada.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.button {\n  transition: background-color 180ms ease, transform 180ms ease;\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Este tipo de duraci\u00f3n suele funcionar muy bien para botones porque aporta suavidad sin hacer esperar a la persona usuaria.<\/p>\n\n\n\n<h3 id=\"h-transition-timing-function-como-se-mueve-la-transicion\" class=\"wp-block-heading\"><code>transition-timing-function<\/code>: c\u00f3mo se mueve la transici\u00f3n<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">La funci\u00f3n de tiempo define c\u00f3mo progresa la transici\u00f3n durante su duraci\u00f3n. Es decir, si empieza r\u00e1pido, termina lento, mantiene velocidad constante o combina aceleraci\u00f3n y desaceleraci\u00f3n.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Algunos valores habituales son:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>transition-timing-function: ease;\ntransition-timing-function: linear;\ntransition-timing-function: ease-in;\ntransition-timing-function: ease-out;\ntransition-timing-function: ease-in-out;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">El valor <code>ease<\/code> suele funcionar bien en muchos casos. Sin embargo, para interfaces m\u00e1s cuidadas, <code>ease-out<\/code> y <code>ease-in-out<\/code> pueden dar una sensaci\u00f3n m\u00e1s natural.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por ejemplo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.card {\n  transition: transform 0.25s ease-out;\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>ease-out<\/code> hace que el movimiento empiece con m\u00e1s energ\u00eda y termine suavemente. Es muy \u00fatil para tarjetas que se elevan, elementos que aparecen o peque\u00f1os desplazamientos.<\/p>\n\n\n\n<h3 id=\"h-transition-delay-retrasar-el-inicio\" class=\"wp-block-heading\"><code>transition-delay<\/code>: retrasar el inicio<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><code>transition-delay<\/code> permite retrasar el inicio de la transici\u00f3n.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>transition-delay: 0.1s;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Puede ser \u00fatil cuando quieres crear un efecto escalonado, por ejemplo en una lista de elementos que aparecen de forma progresiva.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.item {\n  opacity: 0;\n  transform: translateY(10px);\n  transition: opacity 0.3s ease, transform 0.3s ease;\n}\n\n.item.is-visible {\n  opacity: 1;\n  transform: translateY(0);\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">El retraso puede aportar ritmo visual, pero conviene usarlo con moderaci\u00f3n. Si todo tarda demasiado en responder, la experiencia puede sentirse lenta.<\/p>\n\n\n\n<h2 id=\"h-como-crear-un-hover-suave-con-transition\" class=\"wp-block-heading\">C\u00f3mo crear un hover suave con <code>transition<\/code><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Uno de los usos m\u00e1s habituales de <code>transition<\/code> es crear un <code>hover<\/code> suave en botones, enlaces o tarjetas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Veamos un ejemplo sencillo:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.button {\n  display: inline-block;\n  padding: 0.85rem 1.4rem;\n  border-radius: 999px;\n  background-color: #cc2b5e;\n  color: #ffffff;\n  text-decoration: none;\n  transition: background-color 0.25s ease, transform 0.25s ease;\n}\n\n.button:hover {\n  background-color: #753a88;\n  transform: translateY(-2px);\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Aqu\u00ed ocurren dos cosas: cambia el color de fondo y el bot\u00f3n se desplaza ligeramente hacia arriba.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">El resultado es una interacci\u00f3n sencilla, pero m\u00e1s fluida y agradable que un cambio instant\u00e1neo.<\/p>\n\n\n\n<h3 id=\"h-anadir-tambien-el-estado-focus\" class=\"wp-block-heading\">A\u00f1adir tambi\u00e9n el estado <code>focus<\/code><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Un error frecuente es dise\u00f1ar solo el estado <code>:hover<\/code> y olvidarse de las personas que navegan con teclado.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por eso, siempre que tenga sentido, conviene a\u00f1adir tambi\u00e9n <code>:focus-visible<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.button:hover,\n.button:focus-visible {\n  background-color: #753a88;\n  transform: translateY(-2px);\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">As\u00ed el bot\u00f3n responde tanto al cursor como al foco de teclado. Es un peque\u00f1o detalle que mejora la accesibilidad y hace que la interfaz sea m\u00e1s coherente.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si este tema te interesa, tambi\u00e9n puedes conectar este tipo de decisiones con el dise\u00f1o de interacciones y prototipos. En esta gu\u00eda sobre c\u00f3mo pasar de wireframe a prototipo interactivo en Figma explico c\u00f3mo pensar mejor los estados y flujos antes de llevarlos al c\u00f3digo.<\/p>\n\n\n\n<h2 id=\"h-propiedades-recomendadas-para-animaciones-suaves-css\" class=\"wp-block-heading\">Propiedades recomendadas para animaciones suaves CSS<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">No todas las propiedades CSS se animan igual de bien. Algunas obligan al navegador a recalcular el layout de la p\u00e1gina, mientras que otras son m\u00e1s eficientes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para conseguir animaciones suaves, normalmente conviene priorizar:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><code>transform<\/code><\/li>\n\n\n\n<li><code>opacity<\/code><\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Con <code>transform<\/code> podemos mover, escalar, rotar o inclinar un elemento sin modificar directamente el flujo del documento.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.card:hover {\n  transform: scale(1.03);\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Con <code>opacity<\/code> podemos crear efectos de aparici\u00f3n y desaparici\u00f3n:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.tooltip {\n  opacity: 0;\n  transition: opacity 0.2s ease;\n}\n\n.tooltip.is-visible {\n  opacity: 1;\n}\n<\/code><\/pre>\n\n\n\n<h3 id=\"h-mejor-transform-que-top-left-o-margin\" class=\"wp-block-heading\">Mejor <code>transform<\/code> que <code>top<\/code>, <code>left<\/code> o <code>margin<\/code><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Aunque se pueden animar propiedades como <code>width<\/code>, <code>height<\/code>, <code>margin<\/code>, <code>padding<\/code>, <code>top<\/code> o <code>left<\/code>, no siempre es recomendable. Estos cambios pueden afectar al layout y hacer que la animaci\u00f3n sea menos fluida.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por ejemplo, en lugar de mover un elemento con <code>top<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.box:hover {\n  top: -10px;\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">es preferible usar <code>transform<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.box:hover {\n  transform: translateY(-10px);\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">El resultado visual puede ser parecido, pero la segunda opci\u00f3n suele ser m\u00e1s estable y eficiente.<\/p>\n\n\n\n<h2 id=\"h-ejemplos-practicos-de-css-transitions\" class=\"wp-block-heading\">Ejemplos pr\u00e1cticos de CSS transitions<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A continuaci\u00f3n tienes varios ejemplos que puedes adaptar a tus propios proyectos.<\/p>\n\n\n\n<h3 id=\"h-enlace-con-cambio-de-color-suave\" class=\"wp-block-heading\">Enlace con cambio de color suave<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>.link {\n  color: #cc2b5e;\n  text-decoration: none;\n  transition: color 0.2s ease;\n}\n\n.link:hover,\n.link:focus-visible {\n  color: #753a88;\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Este patr\u00f3n funciona muy bien en enlaces dentro de art\u00edculos, men\u00fas o llamadas a la acci\u00f3n secundarias.<\/p>\n\n\n\n<h3 id=\"h-tarjeta-que-se-eleva-al-pasar-el-cursor\" class=\"wp-block-heading\">Tarjeta que se eleva al pasar el cursor<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>.card {\n  padding: 1.5rem;\n  border-radius: 1rem;\n  background-color: #ffffff;\n  box-shadow: 0 8px 24px rgba(0, 0, 0, 0.08);\n  transform: translateY(0);\n  transition: transform 0.25s ease, box-shadow 0.25s ease;\n}\n\n.card:hover {\n  transform: translateY(-6px);\n  box-shadow: 0 14px 36px rgba(0, 0, 0, 0.14);\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Este efecto es muy \u00fatil en tarjetas de servicios, entradas destacadas del blog o proyectos de portfolio. La clave est\u00e1 en que el movimiento sea sutil. No hace falta desplazar mucho el elemento para que se entienda que es interactivo.<\/p>\n\n\n\n<h3 id=\"h-imagen-con-zoom-suave\" class=\"wp-block-heading\">Imagen con zoom suave<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>.image-wrapper {\n  overflow: hidden;\n  border-radius: 1rem;\n}\n\n.image-wrapper img {\n  display: block;\n  width: 100%;\n  transition: transform 0.4s ease;\n}\n\n.image-wrapper:hover img {\n  transform: scale(1.06);\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">El contenedor tiene <code>overflow: hidden<\/code> para evitar que la imagen se salga visualmente al escalar. Es un recurso muy usado en galer\u00edas, cards de blog y proyectos visuales.<\/p>\n\n\n\n<h3 id=\"h-menu-desplegable-con-opacidad-y-desplazamiento\" class=\"wp-block-heading\">Men\u00fa desplegable con opacidad y desplazamiento<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>.dropdown {\n  opacity: 0;\n  transform: translateY(8px);\n  pointer-events: none;\n  transition: opacity 0.2s ease, transform 0.2s ease;\n}\n\n.dropdown.is-open {\n  opacity: 1;\n  transform: translateY(0);\n  pointer-events: auto;\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Este ejemplo es \u00fatil cuando el estado del men\u00fa se controla con una clase, por ejemplo mediante JavaScript.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si est\u00e1s trabajando con rutas, navegaci\u00f3n o enlaces internos en proyectos React, tambi\u00e9n puede interesarte esta gu\u00eda sobre React Router Hash Link y enlaces ancla en React, donde el comportamiento de navegaci\u00f3n puede combinarse con detalles visuales como el desplazamiento suave.<\/p>\n\n\n\n<h2 id=\"h-buenas-practicas-para-usar-transition\" class=\"wp-block-heading\">Buenas pr\u00e1cticas para usar <code>transition<\/code><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Una transici\u00f3n bien aplicada puede mejorar mucho la experiencia de usuario. Pero si se usa sin intenci\u00f3n, tambi\u00e9n puede generar ruido o distracci\u00f3n.<\/p>\n\n\n\n<h3 id=\"h-usa-transiciones-con-un-proposito\" class=\"wp-block-heading\">Usa transiciones con un prop\u00f3sito<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">No todos los elementos necesitan moverse. La animaci\u00f3n debe ayudar a entender mejor una acci\u00f3n, no convertirse en un adorno constante.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Antes de a\u00f1adir una transici\u00f3n, preg\u00fantate:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>\u00bfAyuda a comprender mejor la interacci\u00f3n?<\/li>\n\n\n\n<li>\u00bfHace que el cambio de estado sea m\u00e1s claro?<\/li>\n\n\n\n<li>\u00bfRefuerza la acci\u00f3n de la persona usuaria?<\/li>\n\n\n\n<li>\u00bfPuede resultar molesta si se repite muchas veces?<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Una buena transici\u00f3n suele sentirse natural. Est\u00e1 ah\u00ed, mejora la experiencia, pero no roba protagonismo.<\/p>\n\n\n\n<h3 id=\"h-manten-duraciones-cortas\" class=\"wp-block-heading\">Mant\u00e9n duraciones cortas<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Para botones, enlaces e iconos, normalmente basta con una duraci\u00f3n entre <code>150ms<\/code> y <code>300ms<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Para elementos m\u00e1s grandes, como modales, paneles o men\u00fas desplegables, puedes usar valores algo mayores, como <code>300ms<\/code> o <code>400ms<\/code>.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.modal {\n  transition: opacity 0.3s ease, transform 0.3s ease;\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">La transici\u00f3n debe acompa\u00f1ar la experiencia, no ralentizarla.<\/p>\n\n\n\n<h3 id=\"h-evita-abusar-de-transition-all\" class=\"wp-block-heading\">Evita abusar de <code>transition: all<\/code><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Aunque <code>transition: all<\/code> parece una soluci\u00f3n r\u00e1pida, puede generar efectos inesperados.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>transition: all 0.3s ease;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Es mejor indicar las propiedades concretas:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>transition: background-color 0.3s ease, transform 0.3s ease;\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">As\u00ed el c\u00f3digo es m\u00e1s expl\u00edcito y f\u00e1cil de mantener.<\/p>\n\n\n\n<h3 id=\"h-respeta-la-preferencia-de-movimiento-reducido\" class=\"wp-block-heading\">Respeta la preferencia de movimiento reducido<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">No todas las personas viven el movimiento en pantalla de la misma forma. Algunas pueden sentirse inc\u00f3modas con animaciones excesivas.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por eso conviene tener en cuenta <code>prefers-reduced-motion<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>@media (prefers-reduced-motion: reduce) {\n  * {\n    transition-duration: 0.01ms !important;\n    animation-duration: 0.01ms !important;\n    animation-iteration-count: 1 !important;\n    scroll-behavior: auto !important;\n  }\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Esto reduce al m\u00ednimo las animaciones para quienes han indicado en su sistema que prefieren menos movimiento.<\/p>\n\n\n\n<h2 id=\"h-errores-comunes-al-usar-transition\" class=\"wp-block-heading\">Errores comunes al usar <code>transition<\/code><\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Aunque <code>transition<\/code> es sencilla, hay varios errores habituales que pueden hacer que no funcione como esperas.<\/p>\n\n\n\n<h3 id=\"h-poner-la-transicion-solo-en-hover\" class=\"wp-block-heading\">Poner la transici\u00f3n solo en <code>:hover<\/code><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Este es uno de los errores m\u00e1s comunes:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.button:hover {\n  background-color: #753a88;\n  transition: background-color 0.3s ease;\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">El problema es que la transici\u00f3n solo se declara en el estado <code>hover<\/code>. Lo recomendable es definirla en el estado base:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.button {\n  background-color: #cc2b5e;\n  transition: background-color 0.3s ease;\n}\n\n.button:hover {\n  background-color: #753a88;\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">As\u00ed el navegador puede animar tanto la entrada como la salida del estado.<\/p>\n\n\n\n<h3 id=\"h-intentar-animar-display\" class=\"wp-block-heading\">Intentar animar <code>display<\/code><\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">No se puede animar de forma fluida un cambio de <code>display: none<\/code> a <code>display: block<\/code>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Esto no generar\u00e1 una transici\u00f3n suave:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.menu {\n  display: none;\n  transition: display 0.3s ease;\n}\n\n.menu.is-open {\n  display: block;\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Una alternativa m\u00e1s adecuada es combinar <code>opacity<\/code>, <code>transform<\/code>, <code>visibility<\/code> y <code>pointer-events<\/code>:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.menu {\n  opacity: 0;\n  transform: translateY(10px);\n  visibility: hidden;\n  pointer-events: none;\n  transition: opacity 0.25s ease, transform 0.25s ease, visibility 0.25s ease;\n}\n\n.menu.is-open {\n  opacity: 1;\n  transform: translateY(0);\n  visibility: visible;\n  pointer-events: auto;\n}\n<\/code><\/pre>\n\n\n\n<h3 id=\"h-crear-movimientos-demasiado-exagerados\" class=\"wp-block-heading\">Crear movimientos demasiado exagerados<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Una transici\u00f3n no tiene que ser espectacular para funcionar. De hecho, muchas veces cuanto m\u00e1s sutil, mejor.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por ejemplo, una tarjeta que se desplaza <code>40px<\/code> puede sentirse exagerada. En cambio, un desplazamiento de <code>4px<\/code>, <code>6px<\/code> u <code>8px<\/code> suele ser suficiente.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.card:hover {\n  transform: translateY(-6px);\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">La suavidad no depende solo de la duraci\u00f3n. Tambi\u00e9n depende de la distancia, la curva de movimiento y el contexto.<\/p>\n\n\n\n<h2 id=\"h-como-combinar-varias-transiciones\" class=\"wp-block-heading\">C\u00f3mo combinar varias transiciones<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Puedes aplicar varias transiciones a un mismo elemento separ\u00e1ndolas con comas.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.button {\n  background-color: #cc2b5e;\n  color: #ffffff;\n  transform: translateY(0);\n  transition:\n    background-color 0.25s ease,\n    color 0.25s ease,\n    transform 0.25s ease;\n}\n\n.button:hover {\n  background-color: #753a88;\n  color: #ffffff;\n  transform: translateY(-2px);\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Tambi\u00e9n puedes usar duraciones diferentes para cada propiedad:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.card {\n  transition:\n    transform 0.25s ease-out,\n    box-shadow 0.35s ease;\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">En este caso, el movimiento de la tarjeta es un poco m\u00e1s r\u00e1pido que el cambio de sombra. Son detalles peque\u00f1os, pero ayudan a que la interfaz se sienta m\u00e1s cuidada.<\/p>\n\n\n\n<h2 id=\"h-como-organizar-tus-transiciones-en-proyectos-reales\" class=\"wp-block-heading\">C\u00f3mo organizar tus transiciones en proyectos reales<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Cuando una web crece, no conviene escribir duraciones y curvas distintas en cada componente sin ning\u00fan criterio. Lo ideal es crear cierta coherencia visual.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Una buena pr\u00e1ctica es definir variables CSS:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>:root {\n  --transition-fast: 150ms ease;\n  --transition-base: 250ms ease;\n  --transition-slow: 400ms ease;\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Despu\u00e9s puedes reutilizarlas:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.button {\n  transition: background-color var(--transition-base), transform var(--transition-base);\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Esto ayuda a mantener una experiencia consistente en toda la interfaz.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Tambi\u00e9n puedes crear utilidades reutilizables:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>.u-transition {\n  transition: transform 0.25s ease, opacity 0.25s ease;\n}\n<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Eso s\u00ed, conviene no abusar de clases gen\u00e9ricas si est\u00e1s trabajando con componentes muy espec\u00edficos. Lo importante es que el sistema sea claro y f\u00e1cil de mantener.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si adem\u00e1s est\u00e1s guardando preferencias visuales en el navegador, como modo claro, modo oscuro o estados personalizados, puedes complementar este tema con el art\u00edculo sobre c\u00f3mo usar localStorage y sessionStorage en proyectos JavaScript.<\/p>\n\n\n\n<h2 id=\"h-preguntas-frecuentes-sobre-transition-css\" class=\"wp-block-heading\">Preguntas frecuentes sobre <code>transition CSS<\/code><\/h2>\n\n\n\n<h3 id=\"h-que-es-transition-en-css-0\" class=\"wp-block-heading\">\u00bfQu\u00e9 es <code>transition<\/code> en CSS?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><code>transition<\/code> es una propiedad de CSS que permite suavizar el cambio entre dos estados de un elemento. Por ejemplo, puede hacer que un bot\u00f3n cambie de color de forma progresiva al pasar el cursor por encima.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Se utiliza mucho para crear animaciones suaves en botones, enlaces, tarjetas, men\u00fas, im\u00e1genes y otros elementos interactivos.<\/p>\n\n\n\n<h3 id=\"h-cual-es-la-diferencia-entre-transition-y-animation\" class=\"wp-block-heading\">\u00bfCu\u00e1l es la diferencia entre <code>transition<\/code> y <code>animation<\/code>?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\"><code>transition<\/code> sirve para animar el cambio entre dos estados, como normal y <code>hover<\/code>. <code>animation<\/code>, en cambio, permite crear secuencias m\u00e1s complejas mediante <code>@keyframes<\/code>, repeticiones o varios pasos intermedios.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Si necesitas suavizar un cambio simple, usa <code>transition<\/code>. Si necesitas una secuencia, usa <code>animation<\/code>.<\/p>\n\n\n\n<h3 id=\"h-que-propiedades-conviene-animar-para-conseguir-transiciones-suaves\" class=\"wp-block-heading\">\u00bfQu\u00e9 propiedades conviene animar para conseguir transiciones suaves?<\/h3>\n\n\n\n<p class=\"wp-block-paragraph\">Las propiedades m\u00e1s recomendadas suelen ser <code>transform<\/code> y <code>opacity<\/code>, porque permiten crear efectos visuales fluidos sin modificar directamente el layout.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Por ejemplo, para mover un elemento es mejor usar <code>transform: translateY()<\/code> que cambiar <code>top<\/code> o <code>margin<\/code>. Para mostrar u ocultar algo suavemente, suele ser mejor usar <code>opacity<\/code> que intentar animar <code>display<\/code>.<\/p>\n\n\n\n<h2 id=\"h-cuando-una-pequena-transicion-mejora-toda-la-experiencia\" class=\"wp-block-heading\">Cuando una peque\u00f1a transici\u00f3n mejora toda la experiencia<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Crear animaciones suaves con <code>transition<\/code> no consiste en llenar una web de efectos. Consiste en dise\u00f1ar cambios de estado que ayuden a entender mejor lo que ocurre en la interfaz.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un bot\u00f3n que responde con suavidad confirma una acci\u00f3n. Una tarjeta que se eleva ligeramente indica que puede interactuarse con ella. Un men\u00fa que aparece de forma gradual evita una sensaci\u00f3n brusca. Un enlace que cambia de color de manera fluida hace que la navegaci\u00f3n se sienta m\u00e1s cuidada.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">La clave est\u00e1 en usar <code>transition CSS<\/code> con intenci\u00f3n: elegir bien qu\u00e9 propiedad animar, cu\u00e1nto debe durar, qu\u00e9 curva de movimiento encaja mejor y c\u00f3mo afecta esa decisi\u00f3n a la accesibilidad y al rendimiento.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En definitiva, las <code>CSS transitions<\/code> son una herramienta sencilla, potente y muy \u00fatil para mejorar la calidad percibida de una web. No necesitas crear grandes efectos para que una interfaz se sienta m\u00e1s profesional. A veces, una transici\u00f3n de <code>200ms<\/code>, aplicada en el lugar adecuado, marca la diferencia entre una experiencia r\u00edgida y una experiencia fluida, clara y agradable.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Aprende a crear animaciones suaves con transition en CSS, controlar su duraci\u00f3n y aplicar efectos hover fluidos, accesibles y f\u00e1ciles de mantener.<\/p>\n","protected":false},"author":1,"featured_media":19431,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"mg_rating_sum":5,"mg_rating_count":1,"mg_rating_average":5,"footnotes":""},"categories":[82],"tags":[373,374,372,342],"class_list":["post-19401","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog","tag-animaciones-suaves-css","tag-css-transitions","tag-hover-transition-css","tag-transition-css"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.6 (Yoast SEO v27.8) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>C\u00f3mo crear animaciones suaves con transition en CSS<\/title>\n<meta name=\"description\" content=\"C\u00f3mo crear animaciones suaves con transition en CSS y aplica efectos hover fluidos, accesibles y optimizados en botones, tarjetas y men\u00fas.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/martagonzalez.dev\/wp\/blog\/como-crear-animaciones-suaves-con-transition\/\" \/>\n<meta property=\"og:locale\" content=\"es_ES\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"C\u00f3mo crear animaciones suaves con transition\" \/>\n<meta property=\"og:description\" content=\"C\u00f3mo crear animaciones suaves con transition en CSS y aplica efectos hover fluidos, accesibles y optimizados en botones, tarjetas y men\u00fas.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/martagonzalez.dev\/wp\/blog\/como-crear-animaciones-suaves-con-transition\/\" \/>\n<meta property=\"og:site_name\" content=\"Marta Gonz\u00e1lez - Desarrollo Front-end\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/profile.php?id=100031998110346\" \/>\n<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/profile.php?id=100031998110346\" \/>\n<meta property=\"article:published_time\" content=\"2026-06-14T04:46:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-14T09:26:29+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/martagonzalez.dev\/wp\/wp-content\/uploads\/2026\/06\/como-crear-animaciones-suaves-con-transition-css.avif\" \/>\n\t<meta property=\"og:image:width\" content=\"1536\" \/>\n\t<meta property=\"og:image:height\" content=\"1024\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"marta\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Escrito por\" \/>\n\t<meta name=\"twitter:data1\" content=\"marta\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tiempo de lectura\" \/>\n\t<meta name=\"twitter:data2\" content=\"11 minutos\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/blog\\\/como-crear-animaciones-suaves-con-transition\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/blog\\\/como-crear-animaciones-suaves-con-transition\\\/\"},\"author\":{\"name\":\"marta\",\"@id\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/#\\\/schema\\\/person\\\/3df598b4756cd72fec6126546267c738\"},\"headline\":\"C\u00f3mo crear animaciones suaves con transition\",\"datePublished\":\"2026-06-14T04:46:00+00:00\",\"dateModified\":\"2026-06-14T09:26:29+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/blog\\\/como-crear-animaciones-suaves-con-transition\\\/\"},\"wordCount\":2391,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/#\\\/schema\\\/person\\\/3df598b4756cd72fec6126546267c738\"},\"image\":{\"@id\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/blog\\\/como-crear-animaciones-suaves-con-transition\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/como-crear-animaciones-suaves-con-transition-css.avif\",\"keywords\":[\"animaciones suaves CSS\",\"CSS transitions\",\"hover transition CSS\",\"transition CSS\"],\"articleSection\":[\"Blog\"],\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/blog\\\/como-crear-animaciones-suaves-con-transition\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/blog\\\/como-crear-animaciones-suaves-con-transition\\\/\",\"url\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/blog\\\/como-crear-animaciones-suaves-con-transition\\\/\",\"name\":\"C\u00f3mo crear animaciones suaves con transition en CSS\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/blog\\\/como-crear-animaciones-suaves-con-transition\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/blog\\\/como-crear-animaciones-suaves-con-transition\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/como-crear-animaciones-suaves-con-transition-css.avif\",\"datePublished\":\"2026-06-14T04:46:00+00:00\",\"dateModified\":\"2026-06-14T09:26:29+00:00\",\"description\":\"C\u00f3mo crear animaciones suaves con transition en CSS y aplica efectos hover fluidos, accesibles y optimizados en botones, tarjetas y men\u00fas.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/blog\\\/como-crear-animaciones-suaves-con-transition\\\/#breadcrumb\"},\"inLanguage\":\"es\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/blog\\\/como-crear-animaciones-suaves-con-transition\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/blog\\\/como-crear-animaciones-suaves-con-transition\\\/#primaryimage\",\"url\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/como-crear-animaciones-suaves-con-transition-css.avif\",\"contentUrl\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/wp-content\\\/uploads\\\/2026\\\/06\\\/como-crear-animaciones-suaves-con-transition-css.avif\",\"width\":1536,\"height\":1024,\"caption\":\"Ejemplo visual de animaciones suaves con CSS transition aplicadas a botones, tarjetas y microinteracciones.\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/blog\\\/como-crear-animaciones-suaves-con-transition\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"C\u00f3mo crear animaciones suaves con transition\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/#website\",\"url\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/\",\"name\":\"Marta Gonz\u00e1lez\",\"description\":\"Desarrollo Front-end\",\"publisher\":{\"@id\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/#\\\/schema\\\/person\\\/3df598b4756cd72fec6126546267c738\"},\"alternateName\":\"Marta Gonz\u00e1lez Desarrollo Frontend\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"es\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/#\\\/schema\\\/person\\\/3df598b4756cd72fec6126546267c738\",\"name\":\"marta\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"es\",\"@id\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/cropped-logo-martagonzalez.avif\",\"url\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/cropped-logo-martagonzalez.avif\",\"contentUrl\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/cropped-logo-martagonzalez.avif\",\"width\":575,\"height\":575,\"caption\":\"marta\"},\"logo\":{\"@id\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/wp-content\\\/uploads\\\/2025\\\/05\\\/cropped-logo-martagonzalez.avif\"},\"description\":\"Me dedico al desarrollo front-end. Tengo estudios de multimedia, administraci\u00f3n de sistemas y desarrollo de aplicaciones inform\u00e1ticas. Trabajo con lenguajes HTML5, CSS3 y JavaScript. Me gustan los retos, soy autodidacta, creativa y proactiva. Aprendo con facilidad y me adapto a nuevos entornos r\u00e1pidamente.\",\"sameAs\":[\"https:\\\/\\\/martagonzalez.dev\\\/wp\",\"https:\\\/\\\/www.facebook.com\\\/profile.php?id=100031998110346\",\"https:\\\/\\\/www.instagram.com\\\/mcgweb\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/martacg\\\/\",\"marta\"],\"birthDate\":\"1986-01-07\",\"gender\":\"mujer\",\"knowsAbout\":[\"HTML5\",\"CSS3\",\"Javascript\"],\"jobTitle\":\"Desarrollo Frontend\",\"url\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/author\\\/marta\\\/\",\"publishingPrinciples\":\"https:\\\/\\\/martagonzalez.dev\\\/wp\\\/politica-de-privacidad\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"C\u00f3mo crear animaciones suaves con transition en CSS","description":"C\u00f3mo crear animaciones suaves con transition en CSS y aplica efectos hover fluidos, accesibles y optimizados en botones, tarjetas y men\u00fas.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/martagonzalez.dev\/wp\/blog\/como-crear-animaciones-suaves-con-transition\/","og_locale":"es_ES","og_type":"article","og_title":"C\u00f3mo crear animaciones suaves con transition","og_description":"C\u00f3mo crear animaciones suaves con transition en CSS y aplica efectos hover fluidos, accesibles y optimizados en botones, tarjetas y men\u00fas.","og_url":"https:\/\/martagonzalez.dev\/wp\/blog\/como-crear-animaciones-suaves-con-transition\/","og_site_name":"Marta Gonz\u00e1lez - Desarrollo Front-end","article_publisher":"https:\/\/www.facebook.com\/profile.php?id=100031998110346","article_author":"https:\/\/www.facebook.com\/profile.php?id=100031998110346","article_published_time":"2026-06-14T04:46:00+00:00","article_modified_time":"2026-06-14T09:26:29+00:00","og_image":[{"width":1536,"height":1024,"url":"https:\/\/martagonzalez.dev\/wp\/wp-content\/uploads\/2026\/06\/como-crear-animaciones-suaves-con-transition-css.avif","type":"image\/jpeg"}],"author":"marta","twitter_card":"summary_large_image","twitter_misc":{"Escrito por":"marta","Tiempo de lectura":"11 minutos"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/martagonzalez.dev\/wp\/blog\/como-crear-animaciones-suaves-con-transition\/#article","isPartOf":{"@id":"https:\/\/martagonzalez.dev\/wp\/blog\/como-crear-animaciones-suaves-con-transition\/"},"author":{"name":"marta","@id":"https:\/\/martagonzalez.dev\/wp\/#\/schema\/person\/3df598b4756cd72fec6126546267c738"},"headline":"C\u00f3mo crear animaciones suaves con transition","datePublished":"2026-06-14T04:46:00+00:00","dateModified":"2026-06-14T09:26:29+00:00","mainEntityOfPage":{"@id":"https:\/\/martagonzalez.dev\/wp\/blog\/como-crear-animaciones-suaves-con-transition\/"},"wordCount":2391,"commentCount":0,"publisher":{"@id":"https:\/\/martagonzalez.dev\/wp\/#\/schema\/person\/3df598b4756cd72fec6126546267c738"},"image":{"@id":"https:\/\/martagonzalez.dev\/wp\/blog\/como-crear-animaciones-suaves-con-transition\/#primaryimage"},"thumbnailUrl":"https:\/\/martagonzalez.dev\/wp\/wp-content\/uploads\/2026\/06\/como-crear-animaciones-suaves-con-transition-css.avif","keywords":["animaciones suaves CSS","CSS transitions","hover transition CSS","transition CSS"],"articleSection":["Blog"],"inLanguage":"es","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/martagonzalez.dev\/wp\/blog\/como-crear-animaciones-suaves-con-transition\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/martagonzalez.dev\/wp\/blog\/como-crear-animaciones-suaves-con-transition\/","url":"https:\/\/martagonzalez.dev\/wp\/blog\/como-crear-animaciones-suaves-con-transition\/","name":"C\u00f3mo crear animaciones suaves con transition en CSS","isPartOf":{"@id":"https:\/\/martagonzalez.dev\/wp\/#website"},"primaryImageOfPage":{"@id":"https:\/\/martagonzalez.dev\/wp\/blog\/como-crear-animaciones-suaves-con-transition\/#primaryimage"},"image":{"@id":"https:\/\/martagonzalez.dev\/wp\/blog\/como-crear-animaciones-suaves-con-transition\/#primaryimage"},"thumbnailUrl":"https:\/\/martagonzalez.dev\/wp\/wp-content\/uploads\/2026\/06\/como-crear-animaciones-suaves-con-transition-css.avif","datePublished":"2026-06-14T04:46:00+00:00","dateModified":"2026-06-14T09:26:29+00:00","description":"C\u00f3mo crear animaciones suaves con transition en CSS y aplica efectos hover fluidos, accesibles y optimizados en botones, tarjetas y men\u00fas.","breadcrumb":{"@id":"https:\/\/martagonzalez.dev\/wp\/blog\/como-crear-animaciones-suaves-con-transition\/#breadcrumb"},"inLanguage":"es","potentialAction":[{"@type":"ReadAction","target":["https:\/\/martagonzalez.dev\/wp\/blog\/como-crear-animaciones-suaves-con-transition\/"]}]},{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/martagonzalez.dev\/wp\/blog\/como-crear-animaciones-suaves-con-transition\/#primaryimage","url":"https:\/\/martagonzalez.dev\/wp\/wp-content\/uploads\/2026\/06\/como-crear-animaciones-suaves-con-transition-css.avif","contentUrl":"https:\/\/martagonzalez.dev\/wp\/wp-content\/uploads\/2026\/06\/como-crear-animaciones-suaves-con-transition-css.avif","width":1536,"height":1024,"caption":"Ejemplo visual de animaciones suaves con CSS transition aplicadas a botones, tarjetas y microinteracciones."},{"@type":"BreadcrumbList","@id":"https:\/\/martagonzalez.dev\/wp\/blog\/como-crear-animaciones-suaves-con-transition\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/martagonzalez.dev\/wp\/"},{"@type":"ListItem","position":2,"name":"C\u00f3mo crear animaciones suaves con transition"}]},{"@type":"WebSite","@id":"https:\/\/martagonzalez.dev\/wp\/#website","url":"https:\/\/martagonzalez.dev\/wp\/","name":"Marta Gonz\u00e1lez","description":"Desarrollo Front-end","publisher":{"@id":"https:\/\/martagonzalez.dev\/wp\/#\/schema\/person\/3df598b4756cd72fec6126546267c738"},"alternateName":"Marta Gonz\u00e1lez Desarrollo Frontend","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/martagonzalez.dev\/wp\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"es"},{"@type":["Person","Organization"],"@id":"https:\/\/martagonzalez.dev\/wp\/#\/schema\/person\/3df598b4756cd72fec6126546267c738","name":"marta","image":{"@type":"ImageObject","inLanguage":"es","@id":"https:\/\/martagonzalez.dev\/wp\/wp-content\/uploads\/2025\/05\/cropped-logo-martagonzalez.avif","url":"https:\/\/martagonzalez.dev\/wp\/wp-content\/uploads\/2025\/05\/cropped-logo-martagonzalez.avif","contentUrl":"https:\/\/martagonzalez.dev\/wp\/wp-content\/uploads\/2025\/05\/cropped-logo-martagonzalez.avif","width":575,"height":575,"caption":"marta"},"logo":{"@id":"https:\/\/martagonzalez.dev\/wp\/wp-content\/uploads\/2025\/05\/cropped-logo-martagonzalez.avif"},"description":"Me dedico al desarrollo front-end. Tengo estudios de multimedia, administraci\u00f3n de sistemas y desarrollo de aplicaciones inform\u00e1ticas. Trabajo con lenguajes HTML5, CSS3 y JavaScript. Me gustan los retos, soy autodidacta, creativa y proactiva. Aprendo con facilidad y me adapto a nuevos entornos r\u00e1pidamente.","sameAs":["https:\/\/martagonzalez.dev\/wp","https:\/\/www.facebook.com\/profile.php?id=100031998110346","https:\/\/www.instagram.com\/mcgweb","https:\/\/www.linkedin.com\/in\/martacg\/","marta"],"birthDate":"1986-01-07","gender":"mujer","knowsAbout":["HTML5","CSS3","Javascript"],"jobTitle":"Desarrollo Frontend","url":"https:\/\/martagonzalez.dev\/wp\/author\/marta\/","publishingPrinciples":"https:\/\/martagonzalez.dev\/wp\/politica-de-privacidad\/"}]}},"_links":{"self":[{"href":"https:\/\/martagonzalez.dev\/wp\/wp-json\/wp\/v2\/posts\/19401","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/martagonzalez.dev\/wp\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/martagonzalez.dev\/wp\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/martagonzalez.dev\/wp\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/martagonzalez.dev\/wp\/wp-json\/wp\/v2\/comments?post=19401"}],"version-history":[{"count":2,"href":"https:\/\/martagonzalez.dev\/wp\/wp-json\/wp\/v2\/posts\/19401\/revisions"}],"predecessor-version":[{"id":19435,"href":"https:\/\/martagonzalez.dev\/wp\/wp-json\/wp\/v2\/posts\/19401\/revisions\/19435"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/martagonzalez.dev\/wp\/wp-json\/wp\/v2\/media\/19431"}],"wp:attachment":[{"href":"https:\/\/martagonzalez.dev\/wp\/wp-json\/wp\/v2\/media?parent=19401"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/martagonzalez.dev\/wp\/wp-json\/wp\/v2\/categories?post=19401"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/martagonzalez.dev\/wp\/wp-json\/wp\/v2\/tags?post=19401"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}