Colores y fondos

Quieres que un botón sea un tono específico de azul. Encuentras el color en un archivo de diseño, pegas #1b2130 en tu hoja de estilos y funciona, pero no tienes idea de qué significan esos caracteres ni cómo ajustarías el tono un poco más claro. El color en CSS parece un montón de códigos crípticos hasta que aprendes los pocos sistemas subyacentes. Una vez que puedas leer un color y pintarlo en un fondo, la mayoría del carácter visual de una página está en tus manos.
Nombrar un color
CSS te permite escribir el mismo color de varias formas diferentes. La más simple es una palabra clave: un nombre en español simple que el navegador ya conoce.
.tag {
color: rebeccapurple; /* un color nombrado, sin códigos necesarios */
}Hay alrededor de 140 de estos nombres, lo cual es útil para trabajos rápidos pero demasiado pocos para diseños reales. Las otras formas te permiten describir cualquier color. Un código hex es un # seguido de seis caracteres, y rgb() mezcla rojo, verde y azul por cantidad. Todos apuntan a colores exactos; las palabras clave son el atajo para los comunes.
.tag {
color: #1b2130; /* el mismo azul marino oscuro, escrito como código hex */
}rebeccapurple, código hex como #1b2130 o con rgb(). Las palabras clave son rápidas pero hay solo alrededor de 140 de ellas, así que la mayoría del trabajo real usa los códigos. No intentes leer un código hex a simple vista todavía; copiar valores exactos es completamente normal en esta etapa. Transparencia
A veces quieres un color que puedas ver parcialmente a través de él, así que lo que está detrás se muestra un poco. Esta es la transparencia, y la añades con un cuarto valor llamado alpha: 0 es completamente transparente, 1 es completamente sólido.
.overlay {
background-color: rgb(27 33 48 / 0.5); /* el azul marino, pero medio transparente */
}El / 0.5 al final significa "opacidad media". También hay una propiedad llamada opacity que desvanece todo un elemento, texto incluido, a la vez:
.faded {
opacity: 0.5; /* desvanece todo el elemento, no un solo color */
}La diferencia importa: alpha afecta solo ese color, mientras que opacity desvanece todo acerca del elemento.
0 es invisible, 1 es sólido, y algo como / 0.5 es a mitad de camino. Ese alpha solo toca el color único. La propiedad opacity separada desvanece todo el elemento, texto incluido, así que elige alpha cuando solo quieras un fondo más suave. Color de fondo e imágenes
La propiedad background-color rellena el área detrás de un elemento, hasta su borde. Puedes usar cualquier color que puedas nombrar.
.hero {
background-color: hsl(219 28% 15%); /* un azul marino sólido detrás del contenido */
}También puedes poner una imagen detrás de un elemento con background-image, señalando el archivo con url(...):
.hero {
background-image: url("mountains.jpg");
background-size: cover; /* escala la imagen para llenar el área completa */
}background-size: cover escala la imagen para que llene la caja completamente, recortando cualquier desbordamiento. Es la configuración que quieres la mayoría de las veces para que no haya espacios vacíos.
background-color rellena el espacio detrás de un elemento, e background-image: url(...) pone una imagen ahí en su lugar. Empareja una imagen con background-size: cover para que llene toda la caja sin dejar espacios. Esa combinación cubre la mayoría de lo que alcanzarás al inicio. Gradientes
Un gradiente es una mezcla suave de un color a otro. CSS lo trata como una especie de imagen, así que va en background-image en lugar de background-color.
.banner {
background-image: linear-gradient(hsl(219 28% 15%), hsl(219 40% 35%));
}Eso mezcla el primer color en la parte superior al segundo en la parte inferior. Puedes enumerar más de dos colores y cambiar la dirección:
.banner {
background-image: linear-gradient(to right, hsl(340 80% 55%), hsl(30 90% 60%));
/* mezcla de izquierda a derecha en lugar de arriba a abajo */
}No se necesita archivo de imagen; el navegador dibuja la mezcla por ti.
background-image. linear-gradient() mezcla en línea recta, de arriba a abajo por defecto, o añade to right para cambiar la dirección. Sin archivo necesario, el navegador dibuja la mezcla por sí mismo. Color que se adapta y permanece legible
Una palabra clave útil es currentColor. Representa cualquier que sea el color del texto del elemento, así que un borde o icono puede coincidir con el texto automáticamente:
.chip {
color: hsl(219 28% 15%);
border: 2px solid currentColor; /* el borde coincide con el color del texto */
}Cambia el color del texto más tarde y el borde lo sigue por su cuenta, sin una segunda edición.
Una cosa más a tener en mente: asegúrate de que el texto se destaque de su fondo. Texto oscuro sobre un fondo oscuro es difícil de leer, y gris pálido sobre blanco fatiga los ojos. Apunta a una diferencia clara en el brillo entre los dos.
currentColor es una palabra clave que copia el color del texto del elemento, así que un borde puede coincidir con el texto y seguirlo si lo cambias más tarde. Más allá de eso, mantén el texto legible: asegúrate de que es claramente más brillante u oscuro que lo que está detrás. El contraste bajo es la razón más común por la que una página es difícil de leer. 
