
Pseudoclases CSS
Domina las pseudoclases CSS para crear interfaces interactivas. Controla estados como hover, excluye elementos y selecciona por posición para un código más limpio y eficiente.
Aprende a manejar el espacio visual con ejes, aplicar gradientes, transformar y animar elementos. Crea interfaces modernas y dinámicas con efectos visuales profesionales en CSS.
Antes de aplicar gradientes o transformaciones, es fundamental entender cómo se posicionan los elementos en pantalla. El sistema de ejes define direcciones horizontales, verticales y de profundidad dentro del navegador.

CSS trabaja principalmente en dos dimensiones, pero incorpora el eje Z para simular profundidad. Comprender estas direcciones permite aplicar gradientes, transformaciones y animaciones de forma controlada.
/* Estilo base del elemento visible */
.box {
width: 300px; /* Ancho del elemento en el eje X */
height: 120px; /* Alto del elemento en el eje Y */
background-color: #eaeaea; /* Color neutro para visualizar el área */
transform: translateZ(0); /* Posición inicial sobre el eje Z */
}
Los gradientes se aplican sobre fondos de elementos. Para entender su comportamiento, primero se define una estructura HTML simple que servirá como superficie visual del degradado.
<!-- Contenedor que recibirá el gradiente de fondo -->
<div class="gradient-box">
Texto de ejemplo dentro del contenedor
</div>Un gradiente lineal en CSS genera una transición progresiva entre colores. Si no se indica una dirección, el degradado avanza automáticamente desde la parte superior hacia la inferior del elemento.
/* Estilo del contenedor con gradiente lineal */
.gradient-box {
width: 100%; /* Ocupa todo el ancho disponible */
height: 120px; /* Altura visible del gradiente */
background-image: linear-gradient(red, yellow);
/* Al no indicar dirección, el gradiente va de arriba hacia abajo */
}
CSS permite controlar hacia dónde avanza un gradiente. Al definir una dirección horizontal, los colores se distribuyen de un lado al otro del elemento siguiendo el eje X.
<!-- Elemento visual para un gradiente horizontal -->
<div class="gradient-horizontal"></div>Indicando explícitamente la dirección, el gradiente se orienta según el eje seleccionado. En este caso, la transición de color avanza de izquierda a derecha.
/* Gradiente orientado hacia la derecha */
.gradient-horizontal {
width: 100%;
height: 120px;
background-image: linear-gradient(to right, red, yellow);
/* 'to right' indica avance sobre el eje X positivo */
}
A diferencia de los gradientes lineales, los gradientes radiales distribuyen los colores desde un punto central hacia afuera, formando círculos o elipses concéntricas.
<!-- Contenedor para visualizar un gradiente radial -->
<div class="gradient-radial"></div>HTML, estilos modernos con CSS y diseño rápido con Tailwind para lanzar tus primeros sitios responsivos y profesionales.10 clases en vivo con profesores expertosVer próximas fechasEl gradiente radial puede adoptar forma circular o elíptica. Al indicar circle, la transición de color se expande de manera uniforme desde el centro del elemento.
/* Gradiente radial con forma circular */
.gradient-radial {
width: 200px;
height: 200px;
background-image: radial-gradient(circle, red, gold);
/* El color rojo nace en el centro y se expande hacia afuera */
}
Cuando el contenedor no es cuadrado o se define un tamaño específico, el gradiente radial adopta forma elíptica, permitiendo composiciones visuales más flexibles.
<!-- Elemento rectangular para gradiente elíptico -->
<div class="gradient-ellipse"></div>CSS permite definir el tamaño exacto del gradiente radial. Esto brinda mayor control visual sobre cómo se distribuyen los colores dentro del elemento.
/* Gradiente radial elíptico con tamaño definido */
.gradient-ellipse {
width: 300px;
height: 180px;
background-image: radial-gradient(ellipse 250px 100px, lightgreen, darkslateblue);
/* Se especifica el ancho y alto de la elipse del gradiente */
}
Las transformaciones permiten modificar visualmente un elemento sin alterar el espacio que ocupa en el layout. Se utilizan para mover, escalar, rotar o simular profundidad, manteniendo intacto el flujo del documento.
<!-- Elemento base que será transformado con CSS -->
<div class="box">
Elemento transformable
</div>transformCSS aplica las transformaciones mediante la propiedad transform. Esta propiedad acepta distintas funciones que modifican el elemento visualmente sin reordenar los elementos vecinos.
/* Estilo base del elemento */
.box {
width: 150px; /* Ancho visible */
height: 150px; /* Alto visible */
background-color: red; /* Color para identificar el elemento */
transform: none; /* Estado inicial sin transformación */
}
Para entender cómo se desplazan los elementos, primero se define una estructura HTML simple. El movimiento se realizará únicamente a nivel visual mediante transformaciones.
<!-- Caja que se moverá visualmente con translate -->
<div class="move-box"></div>HTML, estilos modernos con CSS y diseño rápido con Tailwind para lanzar tus primeros sitios responsivos y profesionales.10 clases en vivo con profesores expertosVer próximas fechastranslate(): mover elementosLa función translate() desplaza un elemento según los ejes X e Y. Recibe dos valores con unidades y permite mover visualmente el elemento sin modificar su posición original.
/* Desplazamiento visual del elemento */
.move-box {
width: 120px;
height: 120px;
background-color: red;
transform: translate(10px, 20px);
/* Primer valor: eje X (derecha/izquierda) */
/* Segundo valor: eje Y (abajo/arriba) */
}
Antes de rotar un elemento, se define una caja visible que permita apreciar claramente el giro. La rotación se realiza alrededor de su propio centro.
<!-- Elemento que será rotado -->
<div class="rotate-box"></div>rotate(): girar elementosLa función rotate() permite girar un elemento según un ángulo en grados. Los valores positivos rotan en sentido horario y los negativos en sentido antihorario.
/* Rotación del elemento */
.rotate-box {
width: 120px;
height: 120px;
background-color: red;
transform: rotate(360deg);
/* deg representa grados de rotación */
}
Las transformaciones 3D permiten rotar elementos sobre ejes espaciales. rotateX() genera una rotación vertical que simula profundidad.
<!-- Caja para rotación sobre eje X -->
<div class="rotate-x"></div>rotateX(): rotar en XrotateX() gira el elemento sobre el eje horizontal. Este tipo de transformación se usa frecuentemente junto a perspectiva para reforzar el efecto tridimensional.
/* Rotación tridimensional en eje X */
.rotate-x {
width: 120px;
height: 120px;
background-color: red;
transform: rotateX(70deg);
/* El ángulo define la intensidad del giro */
}
rotateY() permite girar un elemento sobre el eje vertical. Este efecto genera una sensación de giro lateral, común en tarjetas o carruseles.
<!-- Elemento para rotación en eje Y -->
<div class="rotate-y"></div>rotateY(): rotar en YCon rotateY() el elemento rota sobre el eje vertical. Es una transformación tridimensional que suele combinarse con animaciones para mejorar la experiencia visual.
/* Rotación en eje Y */
.rotate-y {
width: 120px;
height: 120px;
background-color: red;
transform: rotateY(70deg);
}
rotateZ() rota el elemento sobre el eje perpendicular a la pantalla. Visualmente equivale a una rotación 2D tradicional.
<!-- Elemento para rotación en eje Z -->
<div class="rotate-z"></div>rotateZ(): rotar en ZrotateZ() permite girar un elemento como si se tratara de un plano. Es equivalente a rotate(), pero mantiene coherencia con transformaciones 3D.
/* Rotación en eje Z */
.rotate-z {
width: 120px;
height: 120px;
background-color: red;
transform: rotateZ(90deg);
}
Para analizar cómo funciona el escalado en CSS, primero definimos un elemento simple con dimensiones visibles. El cambio de tamaño se realizará únicamente a nivel visual, sin alterar el flujo del documento.
<!-- Caja base que será escalada -->
<div class="scale-box"></div>scale(): escalar elementosLa función scale() permite aumentar o reducir el tamaño de un elemento. Puede recibir uno o dos valores que representan el factor de escala horizontal y vertical respectivamente.
/* Escalado del elemento */
.scale-box {
width: 100px;
height: 100px;
background-color: red;
transform: scale(2, 1);
/* Primer valor: escala en eje X (ancho) */
/* Segundo valor: escala en eje Y (alto) */
}
El sesgado permite deformar visualmente un elemento inclinando sus lados. Esta transformación se utiliza para generar efectos dinámicos o estilizados sin modificar la estructura del layout.
<!-- Elemento base para aplicar skew -->
<div class="skew-box"></div>skew(): deformar en ambos ejesLa función skew() inclina el elemento sobre los ejes X e Y. Recibe hasta dos valores en grados que determinan el nivel de deformación en cada eje.
/* Sesgado del elemento en ambos ejes */
.skew-box {
width: 100px;
height: 100px;
background-color: red;
transform: skew(20deg, 10deg);
/* Primer valor: deformación en eje X */
/* Segundo valor: deformación en eje Y */
}
CSS permite aplicar el sesgado de forma individual sobre cada eje. Esto brinda mayor control cuando se necesita una deformación direccional específica.
<!-- Elemento para sesgado individual -->
<div class="skew-x-box"></div>
<div class="skew-y-box"></div>skewX() y skewY()Las funciones skewX() y skewY() deforman el elemento en un solo eje. Se utilizan cuando se busca un efecto controlado sin alterar ambos sentidos.
/* Sesgado horizontal */
.skew-x-box {
width: 100px;
height: 100px;
background-color: red;
transform: skewX(20deg);
}
/* Sesgado vertical */
.skew-y-box {
width: 100px;
height: 100px;
background-color: red;
transform: skewY(20deg);
}
Para cerrar el concepto, retomamos un ejemplo simple que combina tamaño, color y sesgado. Esto permite visualizar claramente cómo actúa skewY sobre un elemento básico.
<!-- Caja roja para ejemplo final -->
<div class="final-box"></div>skew en un caso realEn este ejemplo final se observa cómo un elemento rectangular puede deformarse verticalmente usando skewY, manteniendo su posición original dentro del layout.
/* Estilo del ejemplo final */
.final-box {
width: 100px;
height: 100px;
background-color: rgba(255, 0, 0, 0.9);
transform: skewY(25deg);
/* El sesgado vertical inclina los laterales del elemento */
}
Las transiciones permiten suavizar los cambios de estilo en CSS. En lugar de aplicar un cambio inmediato, el navegador interpola los valores creando una animación simple y controlada.
<!-- Elemento base para aplicar transición -->
<div class="transition-box">
Contenido
</div>transitionLa propiedad transition indica qué estilo debe animarse y durante cuánto tiempo. Se activa cuando una propiedad cambia, por ejemplo al interactuar con el elemento mediante hover.
/* Estado inicial del elemento */
.transition-box {
height: 100px;
background-color: yellow;
transition: height 2s;
/* Se anima la propiedad height durante 2 segundos */
}
/* Estado al pasar el mouse */
.transition-box:hover {
height: 200px;
}
CSS permite animar más de una propiedad al mismo tiempo. Cada una puede tener su propia duración, lo que brinda mayor control sobre el comportamiento visual.
<!-- Elemento con cambios múltiples -->
<div class="multi-transition">
Contenido
</div>Al separar propiedades por coma, se definen distintas transiciones. Esto permite que cada cambio tenga una duración diferente según el efecto deseado.
/* Estado base */
.multi-transition {
width: 100px;
height: 100px;
background-color: yellow;
transition: height 2s, width 1s;
}
/* Estado hover */
.multi-transition:hover {
width: 200px;
height: 200px;
}
Cuando no se especifica una propiedad concreta, la transición se aplica a cualquier estilo que varíe. Esto simplifica el código, pero debe usarse con criterio.
<!-- Elemento con transición global -->
<div class="all-transition">
Contenido
</div>Usando solo un valor de tiempo, CSS interpreta que todas las propiedades animables deben transicionar con la misma duración.
/* Estado inicial */
.all-transition {
width: 100px;
height: 100px;
background-color: yellow;
transition: 2s;
}
/* Estado hover */
.all-transition:hover {
width: 200px;
height: 200px;
padding: 20px;
background-color: cyan;
}
hoverLas transiciones no dependen exclusivamente de hover. Cualquier pseudoclase que genere un cambio de estilo puede activar una transición, como focus en campos de formulario.
<!-- Campo de entrada para ejemplo con focus -->
<input type="text" placeholder="Escribí acá" />:focusCuando un input recibe foco, sus estilos cambian. Si existe una transición definida, el navegador anima esos cambios de forma automática.
/* Estado base del input */
input {
width: 100px;
height: 40px;
transition: all 2s;
}
/* Estado al recibir foco */
input:focus {
width: 200px;
font-size: 24px;
}
transformLas transiciones suelen combinarse con transformaciones. Esto permite animar rotaciones, escalados o sesgados de forma fluida al interactuar con el elemento.
<!-- Caja base para ejemplo final -->
<div class="combo-box"></div>transformEn este ejemplo se observa cómo una transformación puede animarse suavemente gracias a transition. El elemento se deforma progresivamente al pasar el mouse.
/* Estado inicial */
.combo-box {
width: 100px;
height: 100px;
background-color: rgba(255, 0, 0, 0.9);
border: solid 1px;
transition: transform 1s;
}
/* Estado hover */
.combo-box:hover {
padding: 20px;
transform: skewY(25deg);
}
Las animaciones en CSS permiten crear efectos que se ejecutan automáticamente y pueden repetirse en bucle. A diferencia de las transiciones, no dependen de un evento de interacción como hover.
Una animación está compuesta por dos partes fundamentales: una línea de tiempo que define los cambios y un elemento al cual se le aplica esa animación mediante propiedades CSS.
@keyframesLa línea de tiempo se define con la regla @keyframes. Dentro de ella se especifican los momentos en los que el CSS cambia, usando porcentajes que representan el progreso de la animación.
Dentro de @keyframes se indican los estilos que el elemento tendrá en distintos momentos. El navegador interpola los valores para generar un cambio progresivo.
/* Definición de la línea de tiempo */
@keyframes un_efecto {
0% { width: 100px; }
10% { width: 50px; }
25% { width: 300px; }
50% {
width: 200px;
background-color: red;
}
75% { width: 300px; }
100% {
width: 100px;
background-color: green;
}
}
Una vez definida la línea de tiempo, se aplica al elemento usando propiedades animation. Allí se controla duración, repetición, retraso y función de aceleración.
/* Elemento animado */
section {
width: 100px;
height: 100px;
background-color: green;
animation-name: un_efecto;
animation-duration: 2s;
animation-delay: 10s;
animation-iteration-count: infinite;
animation-timing-function: ease-in;
}
En este ejemplo visual se observa un elemento que cambia sus propiedades de manera continua, demostrando cómo una animación se ejecuta en bucle sin interacción del usuario.
<!-- Elemento que se animará -->
<div class="animate"></div>transformLas animaciones pueden modificar transformaciones como skew, rotate o scale. Esto permite crear efectos visuales complejos de forma fluida y controlada.
/* Definición de animación */
@keyframes animacion {
from { }
to {
transform: skewY(25deg);
}
}
/* Configuración inicial */
.animame {
animation: animacion 1s linear 3s infinite alternate;
}
El HTML para una animación suele ser simple. El comportamiento dinámico se controla completamente desde CSS mediante keyframes y propiedades animation.
<!-- Caja base -->
<div></div>
<!-- Caja animada -->
<div class="animame"></div>Las animaciones no se limitan a contenedores. También pueden aplicarse a texto, permitiendo efectos como aparición gradual, parpadeo o cambios de opacidad.
/* Texto animado */
h1 {
animation-name: aparecer;
animation-duration: 2s;
animation-iteration-count: infinite;
}
@keyframes aparecer {
0% { opacity: 0; }
100% { opacity: 1; }
}

CSSDomina las pseudoclases CSS para crear interfaces interactivas. Controla estados como hover, excluye elementos y selecciona por posición para un código más limpio y eficiente.

Aprende a manejar el espacio visual con ejes, aplicar gradientes, transformar y animar elementos. Crea interfaces modernas y dinámicas con efectos visuales profesionales en CSS.

HTML y CSSCrea un menú de navegación responsive profesional con HTML y CSS. Aprende Flexbox, Media Queries y el truco del Checkbox Hack para móviles, sin una sola línea de JavaScript.