Estructura base: Selectores en CSS3
Selectores Básicos
elemento { propiedad: valor; }
Selector básico que aplica estilos a todas las etiquetas de ese tipo. Ejemplo: p, h1, div.
.clase { propiedad: valor; }
Selector de ID. Aplica estilos a un único elemento con ese identificador. Se recomienda no abusar de IDs en CSS.
#id { propiedad: valor; }
Selector de ID. Aplica estilos a un único elemento con ese identificador. Se recomienda no abusar de IDs en CSS.
elemento elemento { propiedad: valor; }
Selector descendiente. Aplica estilos a un elemento dentro de otro. Ejemplo: todos los span dentro de un p.
Selectores Combinados
elemento > hijo { propiedad: valor; }
Selector de hijo directo. Aplica estilos solo a los elementos que son hijos directos, no a los nietos.
elemento + hermano { propiedad: valor; }
Selector de hermano adyacente. Aplica estilos al elemento que está justo después del primero.
elemento ~ hermanos { propiedad: valor; }
Selector de hermanos generales. Aplica estilos a todos los hermanos que vienen después del elemento inicial.
Selectores avanzados
elemento:first-child { propiedad: valor; }
Selecciona el primer hijo de un elemento padre. Ejemplo: el primer li dentro de una lista.
elemento:last-child { propiedad: valor; }
Selecciona el último hijo de un elemento padre. Ejemplo: el último li dentro de una lista.
elemento:nth-child(n) { propiedad: valor; }
Selecciona el hijo en la posición indicada (1, 2, 3...). También acepta fórmulas como 2n (pares), 2n+1 (impares).
elemento[atributo] { propiedad: valor; }
Selecciona elementos que tengan un atributo específico, sin importar el valor. Ejemplo: todos los input que tengan atributo required.
elemento[atributo="valor"] { propiedad: valor; }
Selecciona elementos cuyo atributo sea igual al valor indicado. Ejemplo: input[type="text"].
elemento[atributo^="valor"] { propiedad: valor; }
Selecciona elementos cuyo atributo comience con un valor específico. Ejemplo: a[href^="https"] (enlaces que empiezan por https).
elemento[atributo$="valor"] { propiedad: valor; }
Selecciona elementos cuyo atributo termine en un valor específico. Ejemplo: img[src$=".png"] (imágenes que terminan en .png).
elemento[atributo*="valor"] { propiedad: valor; }
Selecciona elementos cuyo atributo contenga el valor indicado en cualquier parte. Ejemplo: a[href*="google"].
Pseudo-clases de estado
elemento:hover { propiedad: valor; }
Pseudo-clase de estado. Aplica estilos cuando el ratón pasa por encima del elemento.
elemento:active { propiedad: valor; }
Se activa cuando el elemento está siendo clicado. Muy usado en botones y enlaces.
elemento:focus { propiedad: valor; }
Se aplica cuando un elemento (ejemplo: input o enlace) recibe foco, ya sea con el ratón o el teclado (tabulador).
elemento:checked { propiedad: valor; }
Aplica estilos a un checkbox o radio button cuando están seleccionados.
elemento:disabled { propiedad: valor; }
Selecciona inputs, botones o elementos de formulario que estén deshabilitados.
elemento:enabled { propiedad: valor; }
Contrario a disabled. Aplica estilos a campos de formulario que están habilitados.
elemento:valid { propiedad: valor; }
Selecciona inputs cuyo valor cumple con la validación (ejemplo: email válido).
elemento:invalid { propiedad: valor; }
Selecciona inputs cuyo valor NO cumple con la validación.
Pseudo-elementos
elemento::before { contenido }
Pseudo-elemento. Inserta contenido antes del elemento seleccionado. Requiere la propiedad content.
elemento::after { contenido }
Pseudo-elemento. Inserta contenido después del elemento seleccionado. Muy usado en decoración y trucos de CSS.
elemento::first-letter { propiedad: valor; }
Aplica estilos a la primera letra del texto de un elemento. Ejemplo: capital inicial en párrafos.
elemento::first-line { propiedad: valor; }
Aplica estilos a la primera línea de texto de un párrafo. El efecto depende del ancho del contenedor.
Otras pseudo-clases avanzadas
elemento:not(selección) { propiedad: valor; }
Excluye elementos que coincidan con el selector indicado. Ejemplo: p:not(.especial) aplica estilos a todos los párrafos excepto los que tengan clase "especial".
elemento:empty { propiedad: valor; }
Selecciona elementos que no tienen contenido (ni texto ni hijos). Ejemplo: div:empty.
elemento:only-child { propiedad: valor; }
Selecciona un elemento que es el único hijo de su padre. Ejemplo: un p dentro de un div que solo contiene ese párrafo.
elemento:first-of-type { propiedad: valor; }
Selecciona el primer elemento de un tipo dentro del padre. Ejemplo: el primer p dentro de un div con varios elementos.
elemento:last-of-type { propiedad: valor; }
Selecciona el último elemento de un tipo dentro del padre.
elemento:nth-of-type(n) { propiedad: valor; }
Selecciona el elemento en la posición indicada, contando solo los de ese tipo. Ejemplo: el segundo li dentro de una lista, ignorando otros elementos diferentes.
elemento:only-of-type { propiedad: valor; }
Selecciona un elemento que es el único de su tipo dentro del padre. Ejemplo: un único h1 dentro de un div con otros elementos.
:root { propiedad: valor; }
Selecciona el elemento raíz del documento (normalmente <html>). Muy útil para definir variables CSS globales.
elemento:lang(codigo) { propiedad: valor; }
Selecciona elementos según el idioma definido en el atributo lang. Ejemplo: p:lang(es) aplica estilos a párrafos en español.
Pseudo-clases extras curiosas
elemento:target { propiedad: valor; }
Selecciona el elemento que coincide con el ancla de la URL. Ejemplo: #seccion cuando visitas pagina.html#seccion.
input:placeholder-shown { propiedad: valor; }
Estiliza un campo de formulario solo cuando se está mostrando el placeholder.
input:in-range { propiedad: valor; }
Selecciona inputs de tipo numérico cuyo valor está dentro de los límites min y max.
input:out-of-range { propiedad: valor; }
Selecciona inputs de tipo numérico cuyo valor está fuera de los límites min y max.
input:required { propiedad: valor; }
Selecciona campos de formulario que son obligatorios (atributo required).
input:optional { propiedad: valor; }
Selecciona campos de formulario que son opcionales, es decir, que no tienen atributo required.
Propiedades principales de texto y tipografía en CSS3
Texto y tipografía en CSS3
font-family: Define la tipografía del texto. Se recomienda usar varias separadas por coma (ejemplo: font-family: Arial, sans-serif;).
font-size Controla el tamaño de la fuente (16px, 1.2em, 120%).
font-style: Estilo de la fuente: normal, italic, oblique.
font-weight: Grosor de la fuente: normal, bold, lighter o valores de 100 a 900.
line-height: Espaciado vertical entre líneas de texto.
letter-spacing: Espaciado entre letras (positivo o negativo).
word-spacing: Espaciado entre palabras.
text-align: Alineación: left, right, center, justify.
text-decoration: Decoraciones del texto: underline, overline, line-through, none.
text-transform: Cambia el formato del texto: uppercase, lowercase, capitalize.
color: Define el color del texto (nombre, HEX, RGB, RGBA, HSL, HSLA).
overflow-wrap: (antes word-wrap) → Controla si las palabras largas se cortan o se van fuera del contenedor (normal, break-word).
text-indent: Sangría en la primera línea del párrafo.
white-space: Controla cómo se gestionan los espacios y saltos de línea (normal, nowrap, pre, pre-wrap, pre-line).
text-shadow: Aplica sombra al texto (desplazamiento-x desplazamiento-y blur color).
direction: Dirección del texto (ltr izquierda a derecha, rtl derecha a izquierda).
unicode-bidi: Usado junto con direction para manejar texto en distintos idiomas (más avanzado).
COLORES EN CSS3
Colores y backgrounds
COLORES | |
color → Define el color del texto. Valores: nombre,
HEX,
RGB, RGBA, HSL, HSLA.
Ejemplo: p { color: red; }
|
|
opacity → Define la opacidad completa del elemento
(0 =
transparente, 1 =
opaco).
Ejemplo: div { opacity: 0.5; }
|
|
BACKGROUNDS | |
background-color: | Color de fondo del elemento.
Ejemplo: div { background-color: yellow; }
|
background-image: | Imagen de fondo.
Ejemplo: div { background-image: url("imagen.jpg"); }
|
background-repeat: | Repetición del fondo.
Ejemplo: div { background-repeat: no-repeat; }
|
background-size: | Tamaño de la imagen.
Ejemplo: div { background-size: cover; }
|
background-position: | Posición de la imagen.
Ejemplo: div { background-position: center top; }
|
background-attachment: | Fija el fondo.
Ejemplo: div { background-attachment: fixed; }
|
background: | Shorthand que agrupa varias propiedades.
Ejemplo: div { background: url("imagen.jpg") no-repeat center/cover; }
|
BORDER | |
border-width | Grosor del borde.
Ejemplo: div { border-width: 5px; }
|
border-style | Estilo del borde.
Ejemplo: div { border-style: dashed; }
|
border-color | Color del borde.
Ejemplo: div { border-color: blue; }
|
border | Shorthand para width, style y color.
Ejemplo: div { border: 2px solid red; }
|
border-radius | Bordes redondeados.
Ejemplo: div { border-radius: 50%; }
|
Colores y fondos avanzados
COLORES AVANZADOS | |
currentColor | Usa el mismo color que tenga definido color. Muy útil para
bordes,
sombras, etc.
Ejemplo: div { color: blue; border: 2px solid currentColor; }
|
transparent | Fondo o borde transparente sin afectar al resto.
Ejemplo: div { background-color: transparent; }
|
FONDOS AVANZADOS | |
background-clip | Define hasta dónde llega el fondo (border-box ,
padding-box , content-box , text ).
Ejemplo: p { background-clip: text; }
|
background-origin | Punto de referencia del fondo (border-box ,
padding-box , content-box ).
Ejemplo: div { background-origin: content-box; }
|
Múltiples fondos | Se pueden poner varias imágenes separadas por comas.
Ejemplo: div { background-image: url("estrella.png"), url("cielo.jpg"); }
|
Gradientes (CSS3) y Bordes avanzados
GRADIENTES (CSS3) | |
linear-gradient() | Fondo con degradado lineal.
Ejemplo: div { background: linear-gradient(to right, red, blue); }
|
radial-gradient() | Fondo con degradado radial.
Ejemplo: div { background: radial-gradient(circle, red, yellow, green); }
|
conic-gradient() | Fondo con degradado cónico (tipo pastel de colores).
Ejemplo: div { background: conic-gradient(red, yellow, green, blue); }
|
BORDES AVANZADOS | |
border-top, border-right, border-bottom, border-left | Permiten personalizar cada borde de forma independiente.
Ejemplo: div { border-top: 5px solid red; border-right: 5px dashed blue; }
|
border-image | Usa una imagen como borde.
Ejemplo: div { border: 10px solid transparent; border-image: url("marco.png") 30 round; }
|
outline | Similar al borde, pero no ocupa espacio en el layout. Muy usado en
accesibilidad (enlaces, inputs).
Ejemplo: input:focus { outline: 2px solid blue; }
|
border-radius | Redondea esquinas. Ejemplo: div { border-radius: 15px; }
|
box-shadow | Sombra para cajas. Ejemplo: div { box-shadow: 4px 4px 10px gray; }
|
text-shadow | Sombra para textos. Ejemplo: h1 { text-shadow: 2px 2px 5px black; }
|
Modelo de caja en CSS3
width / height → ancho y alto del contenido.
Ejemplo: div { width: 200px; height: 100px; }
padding → espacio entre el contenido y el borde.
Ejemplo: div { padding: 20px; }
padding-top / right / bottom / left → control individual del relleno.
Ejemplo: div { padding-top: 10px; }
margin → espacio hacia afuera, separa del resto de elementos.
Ejemplo: div { margin: 15px; }
margin-top / right / bottom / left → control individual de márgenes.
Ejemplo: div { margin-left: 20px; }
border → el borde del elemento.
Ejemplo: div { border: 2px solid black; }
box-sizing → define cómo se calculan los tamaños.
Ejemplo: div { box-sizing: border-box; }
content-box (por defecto): el width solo cuenta el contenido.
border-box: el width incluye contenido + padding + border.
overflow → qué hacer si el contenido se desborda.
Ejemplo: div { overflow: auto; }
Valores: visible | hidden | scroll | auto
display → cómo se comporta la caja.
Ejemplo: div { display: inline-block; }
Valores: block | inline | inline-block | none
visibility → oculta o muestra el elemento pero mantiene el espacio.
Ejemplo: div { visibility: hidden; }
Diseño y posicionamiento
position → define el tipo de posicionamiento.
Ejemplo: div { position: absolute; }
Valores: static | relative | absolute | fixed | sticky
top / right / bottom / left → mueven el elemento según su posición.
Ejemplo: div { top: 10px; left: 20px; }
z-index → controla el orden de apilamiento (qué elemento queda encima).
Ejemplo: div { z-index: 10; }
float → coloca el elemento a la izquierda o derecha.
Ejemplo: div { float: right; }
clear → controla cómo se comportan los elementos tras un float.
Ejemplo: div { clear: both; }
display → define cómo se muestra el elemento.
Ejemplo: div { display: inline-block; }
Valores: block | inline | inline-block | flex | grid | none
overflow → qué pasa si el contenido se desborda.
Ejemplo: div { overflow: hidden; }
Valores: visible | hidden | scroll | auto
visibility → oculta o muestra el elemento, pero mantiene el espacio.
Ejemplo: div { visibility: hidden; }
opacity → nivel de transparencia de un elemento.
Ejemplo: div { opacity: 0.5; }
clip / clip-path → recorta el área visible con formas.
Ejemplo: div { clip-path: circle(50%); }
object-fit → cómo se ajusta una imagen o vídeo dentro de su caja.
Ejemplo: img { object-fit: cover; }
object-position → posición de la imagen/vídeo dentro de su caja.
Ejemplo: img { object-position: top center; }
transform → mueve, rota o escala elementos.
Ejemplo: div { transform: rotate(45deg); }
Flexbox (básico para maquetar)
display: flex → activa el modo Flexbox en un contenedor.
Ejemplo: div { display: flex; }
flex-direction → dirección principal de los elementos.
Ejemplo: div { flex-direction: row; }
Valores: row | row-reverse | column | column-reverse
justify-content → alinea los elementos en el eje principal.
Ejemplo: div { justify-content: space-between; }
Valores: flex-start | flex-end | center | space-between | space-around | space-evenly
align-items → alinea los elementos en el eje secundario.
Ejemplo: div { align-items: center; }
Valores: flex-start | flex-end | center | baseline | stretch
flex-wrap → permite que los elementos salten de línea.
Ejemplo: div { flex-wrap: wrap; }
Valores: nowrap | wrap | wrap-reverse
align-content → alinea varias líneas de elementos (cuando hay wrap).
Ejemplo: div { align-content: space-around; }
Valores: flex-start | flex-end | center | space-between | space-around | stretch
gap → espacio entre los elementos del flex.
Ejemplo: div { gap: 20px; }
flex-grow → define cuánto puede crecer un elemento dentro del contenedor.
Ejemplo: div { flex-grow: 1; }
flex-shrink → define cuánto puede encogerse un elemento si no hay espacio.
Ejemplo: div { flex-shrink: 0; }
flex-basis → tamaño inicial del elemento antes de aplicar grow/shrink.
Ejemplo: div { flex-basis: 200px; }
flex → shorthand de grow, shrink y basis.
Ejemplo: div { flex: 1 0 150px; }
order → cambia el orden visual de los elementos.
Ejemplo: div { order: 2; }
align-self → alinea un solo elemento de manera independiente.
Ejemplo: div { align-self: flex-end; }
Grid (nivel básico)
display: grid → activa el modo Grid en un contenedor.
Ejemplo: div { display: grid; }
grid-template-columns → define las columnas.
Ejemplo: div { grid-template-columns: 200px 1fr 2fr; }
grid-template-rows → define las filas.
Ejemplo: div { grid-template-rows: 100px auto; }
gap → espacio entre filas y columnas.
Ejemplo: div { gap: 20px; }
row-gap / column-gap → espacio separado para filas o columnas.
Ejemplo: div { row-gap: 10px; column-gap: 20px; }
grid-column → controla cuántas columnas ocupa un elemento.
Ejemplo: div { grid-column: 1 / 3; }
grid-row → controla cuántas filas ocupa un elemento.
Ejemplo: div { grid-row: 2 / 4; }
justify-items → alinea el contenido de las celdas en el eje horizontal.
Ejemplo: div { justify-items: center; }
Valores: start | end | center | stretch
align-items → alinea el contenido de las celdas en el eje vertical.
Ejemplo: div { align-items: stretch; }
Valores: start | end | center | stretch
justify-content → alinea todo el grid en horizontal dentro del contenedor.
Ejemplo: div { justify-content: space-between; }
align-content → alinea todo el grid en vertical dentro del contenedor.
Ejemplo: div { align-content: center; }
place-items → shorthand de justify-items y align-items.
Ejemplo: div { place-items: center; }
place-content → shorthand de justify-content y align-content.
Ejemplo: div { place-content: center space-between; }
grid-area → define la posición de un ítem en filas y columnas.
Ejemplo: div { grid-area: 1 / 1 / 3 / 3; }
Grid nivel básico-avanzado
repeat() → repite columnas o filas fácilmente.
Ejemplo: div { grid-template-columns: repeat(3, 1fr); }
minmax() → define un tamaño mínimo y máximo.
Ejemplo: div { grid-template-columns: minmax(200px, 1fr); }
auto-fill → llena el espacio con el máximo número de columnas posibles.
Ejemplo:
div { grid-template-columns: repeat(auto-fill, 200px); }
auto-fit → parecido a auto-fill, pero ajusta las columnas al espacio disponible.
Ejemplo:
div { grid-template-columns: repeat(auto-fit, minmax(150px, 1fr)); }
fr → unidad fraccional, reparte el espacio disponible proporcionalmente.
Ejemplo: div { grid-template-columns: 1fr 2fr; }
Transiciones y Animaciones
Animaciones
@keyframes → define los fotogramas de la animación.
Ejemplo:
@keyframes mover {
from { left: 0; }
to { left: 100px; }
}
animation-name → nombre de la animación definida con @keyframes.
Ejemplo:
div {
animation-name: mover;
}
animation-duration → duración de la animación.
Ejemplo:
div {
animation-duration: 2s;
}
animation-timing-function → curva de aceleración.
Ejemplo:
div {
animation-timing-function: ease-in-out;
}
animation-delay → tiempo de espera antes de iniciar.
Ejemplo:
div {
animation-delay: 1s;
}
animation-iteration-count → número de repeticiones.
Ejemplo:
div {
animation-iteration-count: infinite;
}
animation-direction → dirección de la animación.
Ejemplo: div {
animation-direction: alternate;
}
Valores: normal | reverse | alternate | alternate-reverse
animation-fill-mode → estado del elemento antes y después de la animación.
Ejemplo:
div {
animation-fill-mode: forwards;
}
animation-play-state → controla si la animación está corriendo o pausada.
Ejemplo:
div {
animation-play-state: paused;
}
animation → shorthand con todas las propiedades en una sola.
Ejemplo:
div {
animation: mover 2s ease-in-out 1s infinite alternate;
}
Transiciones
transition → propiedad abreviada para animar cambios.
Ejemplo:
div {
transition: all 0.5s ease;
}
transition-property → define qué propiedad se anima.
Ejemplo:
div {
transition-property: background-color;
}
transition-duration → tiempo que dura la transición.
Ejemplo:
div {
transition-duration: 0.3s;
}
transition-timing-function → curva de aceleración.
Ejemplo:
div {
transition-timing-function: ease-in-out;
}
Valores: linear | ease | ease-in | ease-out | ease-in-out | cubic-bezier()
transition-delay → retardo antes de empezar.
Ejemplo:
div {
transition-delay: 0.2s;
}
transition: none → desactiva todas las transiciones.
Ejemplo:
div {
transition: none;
}
transition multiple → varias propiedades a la vez.
Ejemplo:
div {
transition: background-color 0.3s, transform 0.5s;
}
cubic-bezier() → curva de animación personalizada.
Ejemplo:
div {
transition-timing-function: cubic-bezier(0.68,-0.55,0.27,1.55);
}
steps() → transición por pasos (frame a frame).
Ejemplo:
div {
transition-timing-function: steps(5);
}
RESPONSIVE
@media → regla para aplicar estilos según el tamaño de pantalla o dispositivo.
Ejemplo:
@media (max-width: 768px) {
body {
font-size: 14px;
}
}
max-width / min-width → aplican estilos cuando la pantalla es menor o mayor a un ancho específico.
Ejemplo:
@media (min-width: 1024px) {
div {
padding: 20px;
}
}
orientation → detecta la orientación de la pantalla.
Ejemplo:
@media (orientation: landscape) {
body {
background: lightblue;
}
}
aspect-ratio → aplica estilos según la relación de aspecto.
Ejemplo:
@media (aspect-ratio: 16/9) {
video {
max-width: 100%;
}
}
unidades relativas → se adaptan mejor que px fijos.
Ejemplo:
div {
width: 50%;
font-size: 2em;
}
Unidades: % | em | rem | vw | vh | vmin | vmax
clamp() → define un valor adaptable con mínimo, ideal y máximo.
Ejemplo:
h1 {
font-size: clamp(16px, 5vw, 32px);
}
container queries (CSS más moderno) → aplican estilos según el tamaño del contenedor, no del viewport.
Ejemplo:
@container (min-width: 400px) {
div {
font-size: 18px;
}
}
EXTRAS
cursor → cambia el estilo del cursor.
Ejemplo: div {
cursor: pointer;
}
overflow-x / overflow-y → controlan el scroll en ejes separados.
Ejemplo:
div {
overflow-x: scroll;
overflow-y: hidden;
}
object-fit → ajuste de imágenes/vídeos.
Ejemplo: img {
object-fit: cover;
}
object-position → posición de imagen/vídeo dentro de su caja.
Ejemplo: img {
object-position: top center;
}
clip-path → recorta elementos con formas.
Ejemplo: div {
clip-path: circle(50%);
}
filter → efectos visuales (blur, brillo, contraste, etc.).
Ejemplo: img {
filter: grayscale(100%);
}
backdrop-filter → efectos de fondo (vidrio esmerilado, blur detrás).
Ejemplo: div {
backdrop-filter: blur(5px);
}
box-shadow → sombra para cajas.
Ejemplo: div {
box-shadow: 4px 4px 10px gray;
}
text-shadow → sombra para textos.
Ejemplo: h1 {
text-shadow: 2px 2px 5px black;
}
resize → permite redimensionar elementos (ej. textareas).
Ejemplo: textarea {
resize: none;
}
pointer-events → controla la interacción con el puntero.
Ejemplo: div {
pointer-events: none;
}
will-change → avisa al navegador qué propiedades van a cambiar (optimización).
Ejemplo: div {
will-change: transform;
}