M.CSS Framework

Documentación técnica y guía de uso

Introducción

M.CSS es un framework CSS minimalista diseñado para cubrir el 80% de casos de uso en desarrollo web con solo 10KB minificado. Se enfoca en proporcionar utilidades esenciales sin sacrificar funcionalidad ni rendimiento.

Características principales

Filosofía

El framework sigue una filosofía de utilidad-primero (utility-first) combinada con estilos base semánticos. Los elementos HTML tienen estilos predeterminados sensatos, mientras que las clases utilitarias permiten personalización granular cuando se necesita.

Principios de diseño aplicados

1. Espaciado vertical consistente

Todos los elementos de bloque (h1–h6, p, ul, ol) tienen márgenes inferiores predefinidos que establecen un ritmo vertical coherente. Los valores siguen una escala lógica:

2. Jerarquía visual clara

La escala tipográfica está diseñada para establecer una jerarquía visual inmediata:

3. Sistema de espaciado modular

El espaciado sigue una escala de 8 puntos base (0.25rem = 4px):

4. Mobile-first responsive

El framework usa un enfoque mobile-first donde los estilos base son para móviles y los breakpoints amplían funcionalidad:

5. Accesibilidad como fundamento

Todos los elementos interactivos incluyen estados de foco visibles, los formularios están correctamente etiquetados, y se proporcionan utilidades para contenido exclusivo de lectores de pantalla (.sr-only).

Instalación

Uso básico

Incluye el archivo CSS en el head de tu HTML:

<link rel="stylesheet" href="m.css">

Estructura HTML recomendada

<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width,initial-scale=1.0"> <link rel="stylesheet" href="m.css"> <title>Mi Proyecto</title> </head> <body> <div class="container"> <!-- Tu contenido aquí --> </div> </body> </html>

Variables CSS

M.CSS utiliza variables CSS nativas que puedes personalizar según tus necesidades.

Colores

VariableValor por defectoUso
--color-primaryrgb(6, 78, 59)Color primario del tema
--color-primary-lightrgb(209, 250, 229)Variante clara del primario
--color-primary-darkrgb(2, 44, 34)Variante oscura del primario
--color-gray-50 a 900Escala de grisesColores neutrales
--color-white#ffffffBlanco puro

Espaciado

VariableValorPíxeles
--space-000px
--space-10.25rem4px
--space-20.5rem8px
--space-30.75rem12px
--space-41rem16px
--space-61.5rem24px
--space-82rem32px

Personalización

Para personalizar las variables, sobrescríbelas en tu propio CSS:

:root { --color-primary: #007bff; --color-primary-light: #cce5ff; --color-primary-dark: #004085; }

Tipografía

Tamaños de texto

ClaseTamañoUso recomendado
.text-xs0.75rem (12px)Metadatos, notas al pie
.text-sm0.875rem (14px)Texto secundario, labels
.text-base1rem (16px)Texto principal
.text-lg1.125rem (18px)Texto destacado
.text-xl1.25rem (20px)Subtítulos
.text-2xl1.5rem (24px)Títulos secundarios
.text-3xl1.875rem (30px)Títulos principales
.text-4xl2.25rem (36px)Heroes, encabezados grandes

Pesos de fuente

ClasePesoUso
.font-normal400Texto regular
.font-medium500Énfasis medio
.font-semibold600Subtítulos, énfasis fuerte
.font-bold700Títulos, elementos destacados

Alineación de texto

.text-left

Alineado a la izquierda

.text-center

Centrado

.text-right

Alineado a la derecha

Ejemplo de uso

<h1 class="text-4xl font-bold text-primary">Título Principal</h1> <p class="text-lg text-gray-700">Párrafo destacado</p> <small class="text-sm text-gray-500">Texto pequeño</small>

Sistema de colores

Colores de texto

ClaseDescripción
.text-primaryColor primario del tema
.text-gray-500Gris medio para texto secundario
.text-gray-700Gris oscuro para labels
.text-gray-900Casi negro para texto principal
.text-whiteBlanco para texto sobre fondos oscuros

Colores de fondo

ClaseDescripción
.bg-primaryFondo con color primario
.bg-primary-lightFondo con variante clara del primario
.bg-gray-50Fondo gris muy claro
.bg-gray-100Fondo gris claro para secciones
.bg-whiteFondo blanco

Ejemplos visuales

.bg-primary
.bg-primary-light
.bg-gray-100
.bg-white
.bg-gray-50

Sistema de espaciado

El espaciado utiliza una escala consistente basada en múltiplos de 0.25rem (4px). Este sistema garantiza alineación precisa y coherencia visual.

Padding

ClaseDescripciónValor
.p-0 a .p-8Padding en todos los lados0 a 2rem
.px-1 a .px-6Padding horizontal0.25rem a 1.5rem
.py-1 a .py-8Padding vertical0.25rem a 2rem

Margin

ClaseDescripciónValor
.m-0 a .m-4Margin en todos los lados0 a 1rem
.mx-autoMargin horizontal automático (centrar)auto
.my-2 a .my-6Margin vertical0.5rem a 1.5rem
.mt-2 a .mt-6Margin superior0.5rem a 1.5rem
.mb-0 a .mb-6Margin inferior0 a 1.5rem

Gap (espaciado en Grid y Flex)

ClaseValorUso
.gap-10.25remEspaciado mínimo
.gap-20.5remEspaciado pequeño
.gap-30.75remEspaciado medio
.gap-41remEspaciado estándar
.gap-61.5remEspaciado amplio

Principios de uso

Ejemplo práctico

<section class="bg-white p-6 rounded-lg mb-6"> <h2 class="mb-4">Título de sección</h2> <p class="mb-3">Párrafo con espaciado</p> <p class="mb-0">Último párrafo sin margen</p> </section>

Sistema de Layout

Flexbox

Flexbox es ideal para layouts unidimensionales (filas o columnas).

Dirección

ClaseDescripción
.flexActiva display flex
.flex-rowDirección horizontal (default)
.flex-colDirección vertical
.flex-wrapPermite salto de línea

Justify Content

ClaseEfecto
.justify-startAlinea al inicio
.justify-centerCentra elementos
.justify-betweenEspacio entre elementos

Align Items

ClaseEfecto
.items-startAlinea al inicio
.items-centerCentra verticalmente
.items-stretchEstira elementos

Ejemplo Flexbox

<div class="flex justify-between items-center gap-4"> <span>Elemento 1</span> <span>Elemento 2</span> </div>

Grid

Grid es perfecto para layouts bidimensionales complejos.

Columnas

ClaseColumnasResponsive
.grid-cols-11 columnaBase (móvil)
.grid-cols-22 columnasBase
.grid-cols-33 columnasBase
.grid-cols-44 columnasBase
.sm:grid-cols-22 columnas640px+
.md:grid-cols-33 columnas768px+

Ejemplo Grid responsive

<div class="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 gap-4"> <div>Tarjeta 1</div> <div>Tarjeta 2</div> <div>Tarjeta 3</div> </div>

Container

La clase .container centra el contenido y limita el ancho máximo:

PropiedadValor
max-width1200px
margin0 auto (centrado)
padding0 1rem (lateral)
<div class="container"> <!-- Contenido centrado y limitado --> </div>

Dimensiones

Anchos

ClaseValorUso
.w-autoautoAncho automático
.w-full100%Ancho completo
.w-1-250%Mitad del contenedor
.w-1-333.33%Un tercio
.w-2-366.67%Dos tercios
.w-1-425%Un cuarto
.w-3-475%Tres cuartos

Alturas

ClaseValor
.h-autoauto
.h-full100%

Anchos máximos

ClaseValorUso recomendado
.max-w-md28rem (448px)Formularios pequeños
.max-w-lg32rem (512px)Contenido medio
.max-w-xl36rem (576px)Artículos
.max-w-2xl42rem (672px)Contenido extenso
.max-w-4xl56rem (896px)Secciones amplias
.max-w-full100%Sin restricción

Ejemplo de uso

<div class="container"> <article class="max-w-2xl mx-auto"> <!-- Artículo centrado con ancho máximo --> </article> </div>

Bordes y esquinas

Bordes

ClaseEfecto
.borderBorde de 1px en todos los lados
.border-0Sin borde

Border Radius

ClaseValorUso
.rounded-sm0.125rem (2px)Esquinas sutiles
.rounded-md0.375rem (6px)Estándar
.rounded-lg0.5rem (8px)Esquinas pronunciadas

Ejemplos visuales

.rounded-sm
.rounded-md
.rounded-lg

Display y visibilidad

Display

ClaseValor CSSUso
.blockdisplay: blockElemento de bloque
.inlinedisplay: inlineElemento en línea
.inline-blockdisplay: inline-blockHíbrido
.hiddendisplay: noneOculta elemento

Overflow

ClaseEfecto
.overflow-hiddenOculta contenido que sobresale
.overflow-autoMuestra scrollbars si es necesario

Position

ClaseValor CSS
.relativeposition: relative

Accesibilidad

La accesibilidad está integrada en todos los elementos del framework. Aquí las utilidades específicas:

Screen Reader Only

La clase .sr-only oculta elementos visualmente pero los mantiene accesibles para lectores de pantalla:

ClaseUso
.sr-onlyOculta visualmente, accesible para lectores
.not-sr-onlyRevierte .sr-only
<button> <span class="sr-only">Cerrar menú</span> <span aria-hidden="true">×</span> </button>

Focus visible

Todos los elementos interactivos tienen indicadores de foco automáticos:

Formularios accesibles

Los formularios incluyen estructura semántica automática:

<fieldset> <legend>Preferencias</legend> <div> <input type="radio" id="opt1" name="pref"> <label for="opt1">Opción 1</label> </div> </fieldset>

Mejores prácticas

Diseño Responsive

M.CSS usa un enfoque mobile-first con dos breakpoints principales:

Breakpoints

PrefijoAncho mínimoDispositivo
(ninguno)0pxMóvil (base)
sm:640pxTablet
md:768pxDesktop

Clases responsive disponibles

Grid

Flexbox

Texto

Patrón mobile-first

<!-- 1 columna en móvil, 2 en tablet, 3 en desktop --> <div class="grid grid-cols-1 sm:grid-cols-2 md:grid-cols-3 gap-4"> <div>Item</div> <div>Item</div> <div>Item</div> </div>

Estrategia de diseño

  1. Diseña primero para móvil (320–639px)
  2. Usa clases base sin prefijo para estilos móviles
  3. Agrega clases sm: para mejorar en tablet
  4. Agrega clases md: para optimizar en desktop
  5. Prueba en múltiples tamaños de pantalla

Buenas prácticas

1. Estructura semántica

Usa elementos HTML5 semánticos siempre que sea posible:

<header></header> <nav></nav> <main> <article></article> <section></section> <aside></aside> </main> <footer></footer>

2. Consistencia en espaciado

3. Jerarquía visual

4. Componentes reutilizables

Crea patrones consistentes para elementos comunes:

<!-- Tarjeta estándar --> <article class="bg-white border rounded-lg p-6 mb-6"> <h3>Título</h3> <p class="mb-4">Contenido</p> <button class="w-full">Acción</button> </article>

5. Responsive por defecto

6. Accesibilidad siempre

7. Optimización de rendimiento

Ejemplo completo

<main class="container my-8"> <section class="bg-white p-6 rounded-lg mb-6"> <h2 class="text-primary mb-4">Título de sección</h2> <div class="grid grid-cols-1 md:grid-cols-2 gap-4"> <div> <label for="nombre">Nombre</label> <input type="text" id="nombre"> </div> <div> <label for="email">Email</label> <input type="email" id="email"> </div> </div> <button class="mt-4">Enviar</button> </section> </main>

Resumen

M.CSS es un framework minimalista pero completo que proporciona todas las herramientas esenciales para construir interfaces web modernas y accesibles.

Ventajas principales

Para empezar, incluye el archivo CSS en tu proyecto y comienza a usar las clases utilitarias. M.CSS está diseñado para ser intuitivo y fácil de aprender, permitiéndote construir interfaces rápido sin sacrificar calidad.