Inspirado en RailsDesigner – Modern CSS Overview
Permiten establecer valores dinámicos según el entorno, como tamaños de pantalla.
/* Elige el menor valor: */
width: min(90%, 500px);
/* Elige el mayor valor: */
font-size: max(1rem, 2vw);
/* Limita entre mínimo y máximo, adaptándose al espacio: */
font-size: clamp(1rem, 3vw, 2rem);Los estilos se adaptan al tamaño del contenedor, no del viewport.
.card-group {
container-type: inline-size;
}
@container (width > 600px) {
.card {
flex-direction: row;
}
}Mejora la legibilidad del texto en encabezados y párrafos.
h1 {
text-wrap: balance; /* Divide el título en líneas equilibradas */
}
p {
text-wrap: pretty; /* Evita líneas con una sola palabra */
}Permite modificar tonos o saturación de un color existente.
/* Toma un azul y le aplica un tinte más cálido: */
background-color: hsl(from #0000FF calc(h + 40) s l);Compatibles con idiomas LTR y RTL sin reescribir estilos.
section {
padding-inline: 1rem; /* padding izquierda + derecha */
margin-block: 2rem; /* margen arriba + abajo */
}Define el estado inicial antes de la animación.
@starting-style {
.modal.appear {
transform: scale(0.9);
opacity: 0;
}
}
.modal.appear {
transition: transform 0.3s, opacity 0.3s;
transform: scale(1);
opacity: 1;
}Estilo condicional basado en hijos o descendientes.
.card:has(.error) {
border-color: red;
}
form:has(input:invalid) {
background-color: #fff0f0;
}Nueva sintaxis que permite rangos encadenados.
@media (480px <= width < 768px) {
.grid {
grid-template-columns: repeat(2, 1fr);
}
}Diseño adaptado automáticamente a tema claro/oscuro del navegador.
:root {
color-scheme: light dark;
}
.card {
background: light-dark(#ffffff, #1a1a1a);
color: light-dark(#000000, #ffffff);
}Anidar selectores (como en Sass) y organizar el orden de estilos.
@layer base, components, utilities;
.card {
padding: 1rem;
&:hover {
background-color: #f0f0f0;
}
h2 {
font-size: 1.25rem;
}
}| Característica | Ideal para... |
|---|---|
min() / max() |
Ajuste de tamaños según pantalla o contenedor |
clamp() |
Tipografía fluida |
@container |
Comportamiento responsivo de componentes |
text-wrap |
Mejorar estética de texto |
:has() |
Estilos reactivos según el contenido |
@starting-style |
Animaciones suaves desde un estado inicial |
light-dark() |
Soporte automático de tema claro/oscuro |
| Propiedades lógicas | Soporte internacionalizado (LTR / RTL) |
@layer |
Control del orden y especificidad en CSS modular |
| Nesting | Código más limpio y estructurado |
🧰 Consejo: Estas características están siendo adoptadas ampliamente por navegadores modernos. Verifica compatibilidad en caniuse.com.