¡Absolutamente! Bulma es una framework CSS moderna, modular y basada en Flexbox, que se enfoca en proporcionar un conjunto de componentes CSS listos para usar sin necesidad de JavaScript adicional. Aquí tienes un “cheatsheet” completo y bien estructurado de Bulma, optimizado para ser claro y conciso para una IA conversacional.
🎨 Bulma (Librería CSS) Cheatsheet Completo 🎨
Bulma es un framework CSS gratuito y de código abierto basado en Flexbox. No incluye JavaScript, lo que significa que es ligero y flexible, y puedes integrar tus propias librerías de JS (React, Vue, etc.) sin conflictos. Es conocido por su sintaxis intuitiva y su enfoque modular.
1. 🌟 Conceptos Clave
- Basado en Flexbox: Su sistema de cuadrícula y la mayoría de sus componentes utilizan Flexbox para el layout y la alineación.
- Modular: Cada componente de Bulma es independiente y puedes importarlos selectivamente si usas Sass.
- Mobile-first: Diseñado con un enfoque en dispositivos móviles primero.
- Sin JavaScript: Bulma es puramente CSS. Si necesitas interactividad (ej. menús desplegables, modales), deberás implementar tu propio JS o usar una librería aparte.
- Sintaxis Clara y Semántica: Las clases son descriptivas y fáciles de recordar (ej.
is-primary,is-large).
2. 🛠️ Configuración Inicial
2.1. CDN (Recomendado para inicio rápido)
Simplemente añade este enlace en tu sección <head>:
<!DOCTYPE html>
<html lang="es">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1"> <!-- ¡MUY IMPORTANTE para responsividad! -->
<title>Mi Proyecto Bulma</title>
<!-- Enlace CSS de Bulma -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bulma@0.9.4/css/bulma.min.css">
</head>
<body>
<section class="section">
<div class="container">
<h1 class="title">Hola, Bulma!</h1>
<p class="subtitle">Este es un <strong>ejemplo</strong>.</p>
</div>
</section>
</body>
</html>
2.2. NPM (Para proyectos con herramientas de compilación)
npm install bulma
# o
yarn add bulma
Luego, importa en tu archivo CSS/Sass principal:
/* style.css */
@import "~bulma/css/bulma.min.css";
O, si usas Sass (para personalización avanzada):
/* style.scss */
// 1. Importa tus propias variables personalizadas primero (opcional)
// @import "./your-custom-variables.scss";
// 2. Importa el archivo principal de Bulma
@import "~bulma/bulma"; // Sin .sass/.scss
3. 📐 Layout y Cuadrícula (Grid)
Bulma utiliza el módulo CSS Grid y Flexbox.
3.1. Contenedores
.container: Contenedor principal para el contenido, centrado y con ancho limitado.<div class="container">...</div>.is-fluid: Extiende el contenedor al 100% del ancho del viewport.<div class="container is-fluid">...</div>.is-max-desktop,.is-max-widescreen: Limitan el ancho del contenedor en resoluciones específicas.
3.2. Sistema de Columnas
Basado en Flexbox, las columnas siempre suman 12 unidades por fila.
.columns: Contenedor para las columnas..column: Una columna simple, ocupará el espacio disponible por igual..column.is-{size}: La columna ocupa un número específico de las 12 columnas (ej.is-half,is-one-third,is-one-quarter,is-three-quarters,is-1ais-12).- Responsividad: Puedes usar modificadores para breakpoints (
-mobile,-tablet,-desktop,-widescreen,-fullhd).- Breakpoints:
mobile(<769px),tablet(≥769px),desktop(≥1024px),widescreen(≥1216px),fullhd(≥1408px).
- Breakpoints:
<div class="columns">
<div class="column is-one-third">Columna 1 (1/3)</div>
<div class="column">Columna 2 (automático)</div>
<div class="column">Columna 3 (automático)</div>
</div>
<div class="columns is-mobile is-multiline"> {/* `is-mobile` para columnas que se apilan solo en móviles, `is-multiline` para wrap */}
<div class="column is-full-mobile is-half-tablet is-one-quarter-desktop">Columna responsiva</div>
<div class="column is-full-mobile is-half-tablet is-one-quarter-desktop">Columna responsiva</div>
<div class="column is-full-mobile is-half-tablet is-one-quarter-desktop">Columna responsiva</div>
<div class="column is-full-mobile is-half-tablet is-one-quarter-desktop">Columna responsiva</div>
</div>
- Espacios entre Columnas (Gap):
is-gapless: Sin espacio.is-variable is-X: Espacio variable (X = 0 a 8).gap-{size}: En.columnso directamente en.column.
3.3. Héroes y Secciones
section: Contenedor de sección con padding por defecto.is-small,is-medium,is-large: Tamaños de padding.
hero: Componente de bloque para encabezados grandes.is-{color}: Color de fondo.is-{size}: Tamaños (is-small,is-medium,is-large,is-fullheight).hero-body: Contenido principal.hero-head,hero-foot: Para cabeceras y pies de Hero.
<section class="hero is-primary is-fullheight">
<div class="hero-body">
<p class="title">
Mi Increíble Título
</p>
<p class="subtitle">
Mi subtítulo genial
</p>
</div>
</section>
4. 📝 Elementos y Tipografía
4.1. General
title,subtitle: Clases para encabezados.is-1ais-6para tamaños.content: Contenedor para texto HTML normal con estilos básicos (p, ul, ol, blockquote).- Colores de texto:
has-text-{color}(ej.has-text-primary,has-text-danger). - Colores de fondo:
has-background-{color}(ej.has-background-info,has-background-link).- Colores:
primary,link,info,success,warning,danger,dark,light,white,black,text,ghost.
- Colores:
- Alineación de texto:
has-text-left,has-text-centered,has-text-right,has-text-{breakpoint}-left. - Peso de fuente:
has-text-weight-light,has-text-weight-normal,has-text-weight-medium,has-text-weight-semibold,has-text-weight-bold. - Espaciado (Margin & Padding):
m-{size},p-{size},mt-{size},pb-{size}, etc. (0a6).mx-autopara centrar bloques.
4.2. Listas
is-unstyled: Elimina estilos de lista.is-inline: Lista en línea.
5. 🎛️ Componentes
5.1. Botones
button: Clase base.is-{color}: Colores.is-{size}: Tamaños (is-small,is-normal,is-medium,is-large).is-outlined: Botón con solo borde y texto de color.is-inverted: Colores invertidos.is-rounded: Botón con bordes redondeados.is-loading: Para indicar carga (añade spinner).is-static: No interactivo, solo estilo de botón.is-fullwidth: Ocupa el 100% del ancho disponible.
<button class="button is-primary">Guardar</button>
<button class="button is-danger is-outlined is-large">Eliminar</button>
<button class="button is-loading">Cargando...</button>
5.2. Cajas (Boxes)
box: Un contenedor simple con un borde, padding y sombra.
<div class="box">
<p>Este es un box con algo de contenido.</p>
</div>
5.3. Cards (Tarjetas)
Contenedores flexibles para contenido.
card: Contenedor principal.card-header,card-image,card-content,card-footer: Estructura.image is-4by3: Imagen con relación de aspecto.
<div class="card">
<div class="card-image">
<figure class="image is-4by3">
<img src="https://bulma.io/images/placeholders/1280x960.png" alt="Placeholder image">
</figure>
</div>
<div class="card-content">
<p class="title is-4">Título de la Tarjeta</p>
<p class="subtitle is-6">@usuario</p>
<div class="content">
Lorem ipsum dolor sit amet, consectetur adipiscing elit.
</div>
</div>
</div>
5.4. Mensajes (Messages)
Para bloques de información contextual.
message: Clase base.is-{color}: Color del mensaje.message-header: Cabecera.message-body: Contenido.
<article class="message is-success">
<div class="message-header">
<p>Éxito</p>
<button class="delete" aria-label="delete"></button>
</div>
<div class="message-body">
Tu operación se ha completado exitosamente.
</div>
</article>
5.5. Barra de Navegación (Navbar)
Barra responsiva para la navegación superior.
navbar: Contenedor principal.navbar-brand: Sección de marca/logo.navbar-item: Elemento de navegación.navbar-burger: Icono de hamburguesa para móviles (requiere JS para toggle).navbar-menu: Contenedor del menú (se colapsa en móviles).navbar-start,navbar-end: Alineación de elementos.
<nav class="navbar is-light" role="navigation" aria-label="main navigation">
<div class="navbar-brand">
<a class="navbar-item" href="/">Mi App</a>
<a role="button" class="navbar-burger" aria-label="menu" aria-expanded="false" data-target="navbarBasicExample">
<span aria-hidden="true"></span>
<span aria-hidden="true"></span>
<span aria-hidden="true"></span>
</a>
</div>
<div id="navbarBasicExample" class="navbar-menu">
<div class="navbar-start">
<a class="navbar-item">Home</a>
<a class="navbar-item">Acerca</a>
</div>
<div class="navbar-end">
<div class="navbar-item">
<div class="buttons">
<a class="button is-primary"><strong>Registrarse</strong></a>
<a class="button is-light">Iniciar Sesión</a>
</div>
</div>
</div>
</div>
</nav>
5.6. Formularios
field: Contenedor para un grupo de input + label.is-grouped: Para agrupar inputs en una línea.is-horizontal: Para labels e inputs alineados horizontalmente.
control: Contenedor para un input individual.has-icons-left,has-icons-right: Para iconos dentro del input.is-loading: Para añadir un spinner de carga al input.
input,textarea,select: Clases para los controles del formulario.checkbox,radio: Clases para checkboxes/radios.help: Texto de ayuda.is-danger,is-success: Clases de estado de validación.
<div class="field">
<label class="label">Nombre</label>
<div class="control">
<input class="input" type="text" placeholder="Tu nombre">
</div>
</div>
<div class="field">
<label class="label">Email</label>
<div class="control has-icons-left has-icons-right">
<input class="input is-danger" type="email" placeholder="Email input" value="hello@">
<span class="icon is-small is-left"><i class="fas fa-envelope"></i></span>
<span class="icon is-small is-right"><i class="fas fa-exclamation-triangle"></i></span>
</div>
<p class="help is-danger">Este email es inválido</p>
</div>
<div class="field">
<div class="control">
<label class="checkbox">
<input type="checkbox">
Acepto los <a href="#">términos y condiciones</a>
</label>
</div>
</div>
6. 🖼️ Iconos
Bulma no incluye sus propios iconos. Generalmente se usa con Font Awesome.
- Añadir Font Awesome CDN (en
<head>):<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.2/css/all.min.css" integrity="sha512-SnH5WK+bZxgPHs44uWIX+LLJAJ9/2PkPKZ5QiAj6Ta86w+fsb2TkcmfRyVX3pBnMFcV7oQPJkl9QevSCWr3W6A==" crossorigin="anonymous" referrerpolicy="no-referrer" /> - Usar Iconos:
<span class="icon"><i class="fas fa-home"></i></span> <button class="button is-link"> <span class="icon is-small"><i class="fas fa-check"></i></span> <span>Guardar</span> </button>
7. 🎨 Personalización (con Sass)
La forma más potente de personalizar Bulma es usar su archivo Sass.
- Instala Sass y Bulma con NPM.
- Crea un archivo Sass personalizado (ej.
my-theme.scss):// 1. Importa variables existentes de Bulma o define las tuyas @import "~bulma/sass/utilities/initial-variables.sass"; // Para sobrescribir variables iniciales @import "~bulma/sass/utilities/derived-variables.sass"; // Para sobrescribir variables derivadas // 2. Sobrescribe variables (ej. colores) $primary: #4CAF50; // Verde $link: #FFC107; // Naranja $family-sans-serif: "Open Sans", sans-serif; // 3. Importa el resto de Bulma @import "~bulma/bulma.sass"; - Compila tu Sass a CSS.
8. 💡 Buenas Prácticas y Consejos
- HTML Semántico: Bulma no fuerza una estructura HTML específica. Usa elementos semánticos (ej.
<nav>,<section>) junto con las clases de Bulma. - Mobile-First: Siempre prueba tu diseño en tamaños de pantalla pequeños primero y luego escala.
- Combina clases: No tengas miedo de combinar varias clases de Bulma en un solo elemento para conseguir el estilo deseado (ej.
button is-primary is-small is-outlined). - JS es tu elección: Como Bulma no tiene JS, eres libre de usar cualquier librería (React, Vue, Alpine.js, JS vanilla) para la interactividad. Esto es una ventaja para evitar bloatware.
is-fullheightyis-clipped: Para layouts de altura completa, usais-fullheighten elheroosection, yhtml, body { height: 100%; overflow: hidden; }en tu CSS base, o la claseis-clippeden el<html>para ocultar el overflow del cuerpo.- Explora la documentación: La documentación oficial de Bulma es excelente, clara y llena de ejemplos.
Este cheatsheet te proporciona una visión completa de Bulma, cubriendo su estructura, componentes y las opciones de personalización, lo que te permitirá construir interfaces de usuario elegantes y responsivas de manera eficiente.