Modelo mental completo de CSS | Nicolás Garzón
Inicio Wiki CSS Modelo mental completo de CSS Volver a CSSCSS
Modelo mental completo de CSS Integra cascada, valores, cajas, contextos de formato, layout, pintura, composición, responsive design y arquitectura en un modelo coherente de CSS.
Última actualización Actualizada 24 de jul de 2026
CSS es un sistema declarativo que selecciona elementos, resuelve valores mediante la cascada y entrega esos valores a distintos algoritmos de layout y rendering.
Nota anteriorDebugging, @supports y compatibilidad Texto
Copiar DOM + stylesheets + entorno
↓
selector matching
↓
cascada
↓
herencia y valores calculados
↓
layout y fragmentación
↓
paint y compositing
↓
interfaz finalHTML
Copiar < button type = " button" > Guardar</ button> CSS puede cambiar color, tamaño y posición, pero no convierte un div en botón ni reemplaza nombre, teclado o comportamiento.
CSS
Copiar .button {
padding : 0.75rem 1rem;
} Texto
Copiar selector + declarations = style ruleAt-rules añaden condiciones, layers, fonts, keyframes y otras estructuras.
CSS
Copiar .card > h2:first-child { ... } Clases, atributos, relaciones y pseudo-clases deben expresar un contrato estable, no copiar toda la estructura accidental del DOM.
Texto
Copiar relevance
→ origin/importance
→ encapsulation
→ layer
→ specificity
→ scope proximity
→ source orderUna clase en una layer prioritaria puede superar un ID en otra layer.
CSS
Copiar body {
color : var ( --color-text) ;
font-family : system-ui, sans-serif;
} Color y typography suelen heredarse. Margin, border y layout normalmente no.
CSS
Copiar .button {
--button-bg : var ( --color-action-primary) ;
background : var ( --button-bg) ;
} Conectan temas, tokens y configuración local. Conservan tokens y la propiedad consumidora valida el tipo.
CSS
Copiar inline-size : min ( 100% - 2rem, 72rem) ;
font-size : clamp ( 1rem, 2vw, 1.5rem) ; Rem, percentages, viewport units, container units y intrinsic keywords no son intercambiables.
CSS
Copiar margin-inline : auto;
padding-block : 1rem; Inline y block se adaptan al idioma y dirección. Start/end no equivalen siempre a left/right.
Texto
Copiar content → padding → border → marginBox-sizing decide qué incluye la dimensión declarada. Margin queda fuera.
CSS
Copiar width : min-content;
width : max-content;
width : fit-content; Texto, imágenes y controles aportan tamaños intrínsecos. Un layout debe sobrevivir a contenido largo y fuentes fallback.
Texto
Copiar flow
flex
grid
table
multicolumnEl mismo elemento puede participar externamente como block e internamente como flex/grid container.
Blocks se apilan y texto forma líneas. Margin collapse, baselines y anonymous boxes forman parte del resultado.
No necesitas posicionar cada elemento manualmente.
CSS
Copiar overflow : auto;
overflow-wrap : anywhere; Antes de recortar, identifica width fija, min-content, cadena larga o positioning incorrecto.
CSS
Copiar position : absolute;
inset : 0; Absolute, fixed y sticky dependen de ancestors, scroll containers, transforms y containment.
Un stacking context compite como unidad. Un child con 9999 no escapa de un parent que está debajo.
Dialog y popover pueden entrar al top layer.
Basis define el punto de partida; grow reparte espacio positivo y shrink reparte déficit.
CSS
Copiar display : grid;
grid-template-columns : repeat ( auto-fit, minmax ( 16rem, 1fr) ) ; Tracks, lines, areas, auto-placement y subgrid permiten relaciones bidimensionales.
Texto
Copiar justify → inline/main
align → block/crossItems, content, self, gap y auto margins resuelven tareas distintas.
CSS
Copiar @media ( width >= 48rem) { ... }
@container ( width >= 30rem) { ... } Flow, wrapping, intrinsic sizing, media queries y container queries forman un sistema continuo.
Fuente, line-height, metrics, wrapping y ancho de línea cambian dimensiones.
CSS
Copiar .prose {
max-inline-size : 65ch;
line-height : 1.6;
} CSS
Copiar color : oklch ( 60% 0.18 285) ; Alpha, backgrounds, gradients y themes modifican el resultado. Contraste se evalúa en la composición final.
Una imagen CSS no tiene alt. Contenido informativo pertenece en HTML.
CSS
Copiar translate : 0 -0.25rem; Cambia representación y puede crear contextos, pero conserva la caja de layout original.
CSS
Copiar transition : opacity 180ms ease; No crea el estado; interpola entre valores.
CSS
Copiar animation : enter 300ms ease-out both; Keyframes, timeline e iteration definen reproducción. El estado de producto debe existir fuera de la animación.
CSS
Copiar @media ( prefers-reduced-motion : reduce) { ... } Conserva feedback y contenido sin efectos innecesarios.
Filters, blending, masks y clipping operan sobre el resultado visual. Necesitan fallback, contraste y medición.
Texto
Copiar primitive → semantic → componentUn token útil conserva función aunque cambie el valor.
Texto
Copiar base
layout
components
utilities
exceptionsLayers, naming, scope y variantes hacen que las dependencias sean visibles.
Utility-first cambia la forma de autoría y generación. Las reglas finales continúan obedeciendo cascada, layout y soporte del navegador.
Containment, content-visibility y will-change son herramientas con costos. No optimices sin trace, coverage y pruebas reales.
Texto
Copiar match
→ valid declaration
→ cascade winner
→ computed value
→ used geometry
→ painted resultDevTools muestra cada etapa mejor que añadir reglas al azar.
¿Qué diferencia hay entre DOM, CSSOM y layout?
¿Qué descarta el parser ante una declaration inválida?
¿Qué se resuelve antes: layer o specificity?
¿Por qué :where() vale cero?
¿Qué diferencia hay entre inherit, initial, unset y revert?
¿Por qué una shorthand puede romper un longhand?
¿Cómo se valida una custom property?
¿Qué referencia utiliza un porcentaje?
¿Qué diferencia hay entre em y rem?
¿Por qué 100dvh puede ser mejor que 100vh en mobile?
¿Qué incluye border-box?
¿Qué son min-content y max-content?
¿Qué crea un BFC?
¿Cuándo colapsan margins?
¿Por qué overflow puede romper sticky?
¿Cuál es el containing block de un absolute/fixed?
¿Qué crea un stacking context?
¿Cómo se reparte flex grow/shrink?
¿Qué diferencia hay entre track y line?
¿Qué cambia entre auto-fit y auto-fill?
¿Qué comparte subgrid?
¿Cuándo usar media y container query?
¿Por qué una font fallback cambia layout?
¿Qué diferencia hay entre cover y responsive image?
¿Por qué transform no reemplaza layout?
¿Qué cambia entre transition y animation?
¿Qué debe ocurrir con reduced motion?
¿Cómo se estructura un token semántico?
¿Qué problema resuelve una cascade layer?
¿Qué mide content-visibility?
¿Qué comprueba realmente @supports?
¿Cómo encuentras la declaration ganadora?
Recorre las notas Esencial en orden y reproduce los ejemplos sin framework.
Aplica las notas Aplicado en una página con:
Header y navegación.
Layout Grid/Flex.
Cards responsivas.
Formulario.
Tema light/dark.
Estados focus/error/loading.
Animación reducida.
Estudia las notas Avanzado al trabajar con:
Scroll timelines.
View transitions.
Masks y blending.
Containment.
Sistemas de diseño.
Tooling de producción.
Depura una guerra de specificity sin important.
Construye un wrapper fluido sin breakpoints.
Reproduce un layout primero con flow, luego Flex y Grid.
Crea cards con auto-fit y subgrid.
Adapta un componente con container queries.
Prueba RTL usando propiedades lógicas.
Carga una variable font con fallback metrics.
Diseña light/dark/forced-colors.
Reduce una animación sin perder feedback.
Crea tokens semánticos y variantes locales.
Inspecciona CSS generado por Tailwind.
Mide content-visibility en una lista larga.
Para cualquier regla, pregunta:
Texto
Copiar ¿Qué elementos selecciona?
¿Qué otras declarations compiten?
¿La propiedad hereda?
¿Qué valor calculado produce?
¿Qué caja o eje modifica?
¿Qué algoritmo de layout la consume?
¿Afecta style, layout, paint o composite?
¿Qué ocurre con contenido largo?
¿Qué ocurre con zoom, RTL y preferencias?
¿Qué fallback necesita?
CSS es un sistema de resolución, no una lista de propiedades.
La cascada y la herencia preceden al layout.
Valores y contenido determinan dimensiones.
Flow, Flexbox y Grid resuelven relaciones diferentes.
Responsive depende del contexto, no del nombre del dispositivo.
Tipografía y color deben conservar legibilidad.
Movimiento y efectos necesitan accesibilidad y medición.
Tokens y arquitectura hacen visibles las decisiones.
Tooling no reemplaza fundamentos.
Debugging efectivo sigue el algoritmo del navegador.
Cuando algo “no funciona” en CSS, vuelve a estas preguntas:
Texto
Copiar ¿El selector coincide?
¿La declaration es válida?
¿Qué layer y specificity tiene?
¿Una shorthand la reinició?
¿El valor hereda o depende del contenedor?
¿Min-content impide encoger?
¿Estoy en flow, Flex o Grid?
¿Un ancestor creó scroll/containing/stacking context?
¿El DOM order sigue siendo correcto?
¿La feature necesita fallback?Responderlas convierte CSS en un sistema predecible, no en ensayo y error.