Documentación de Bootstrap 5

Guía completa de Bootstrap 5 con ejemplos y explicaciones detalladas de cada componente y utilidad.

¿Qué es Bootstrap?

Bootstrap es un framework CSS de código abierto que facilita el desarrollo de sitios web responsivos y adaptables a dispositivos móviles. Creado por Twitter, Bootstrap proporciona una colección de componentes, estilos y utilidades que aceleran el desarrollo web.

Características principales:

  • Responsivo: Se adapta automáticamente a diferentes tamaños de pantalla.
  • Mobile-first: Diseñado pensando primero en dispositivos móviles.
  • Componentes prediseñados: Incluye botones, formularios, navegación, etc.
  • Sistema de grid: Facilita la creación de layouts complejos.
  • Utilidades CSS: Clases para espaciado, colores, flexbox, etc.
  • JavaScript incluido: Para componentes interactivos.

Instalación

Hay varias formas de incluir Bootstrap en tu proyecto:

1. Usando CDN (más fácil)

Agrega estos enlaces en el <head> de tu HTML:

<!-- CSS de Bootstrap -->
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">

<!-- JavaScript de Bootstrap (colócalo antes del cierre del body) -->
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>

2. Usando npm

Instala Bootstrap usando npm:

npm install bootstrap

3. Descargando los archivos

Puedes descargar los archivos compilados desde la página oficial de Bootstrap.

Breakpoints

Los breakpoints son puntos de quiebre que definen cuándo cambia el layout en diferentes tamaños de pantalla. Bootstrap 5 define estos breakpoints:

Breakpoint Prefijo de clase Dimensión Descripción
Extra pequeño xs (sin prefijo) < 576px Smartphones en vertical
Pequeño sm ≥ 576px Smartphones en horizontal, tablets pequeñas
Mediano md ≥ 768px Tablets
Grande lg ≥ 992px Laptops, desktops pequeños
Extra grande xl ≥ 1200px Desktops
Extra extra grande xxl ≥ 1400px Monitores grandes

Estos breakpoints se usan en clases como col-md-6, d-lg-none, etc.

Contenedores

Los contenedores son el elemento de layout más básico en Bootstrap y son necesarios para usar el sistema de grid.

Tipos de contenedores:

Clase Descripción Ancho máximo
.container Contenedor con ancho máximo que cambia en cada breakpoint Varía según el breakpoint
.container-fluid Contenedor que ocupa el 100% del ancho en todos los breakpoints 100%
.container-{breakpoint} 100% de ancho hasta el breakpoint especificado, luego se comporta como .container 100% hasta el breakpoint

Ejemplo de uso de contenedores:

<!-- Contenedor responsive con ancho máximo -->
<div class="container">
  <!-- Contenido -->
</div>

<!-- Contenedor fluido (ancho completo) -->
<div class="container-fluid">
  <!-- Contenido -->
</div>

<!-- Contenedor responsivo a partir de md -->
<div class="container-md">
  <!-- Contenido -->
</div>

Sistema Grid

El sistema de grid de Bootstrap se basa en un layout de 12 columnas que se adapta a diferentes tamaños de pantalla.

Estructura básica:

  1. Contenedor (.container o .container-fluid)
  2. Filas (.row)
  3. Columnas (.col-*)
Columna 1
Columna 2
Columna 3
<div class="container">
  <div class="row">
    <div class="col-sm-4">
      <div class="p-3 bg-primary text-white">Columna 1</div>
    </div>
    <div class="col-sm-4">
      <div class="p-3 bg-primary text-white">Columna 2</div>
    </div>
    <div class="col-sm-4">
      <div class="p-3 bg-primary text-white">Columna 3</div>
    </div>
  </div>
</div>

Columnas

Las columnas son el componente principal del sistema de grid. Bootstrap divide el ancho disponible en 12 columnas que puedes combinar.

Clases de columnas:

  • .col: Columna de ancho automático (comparte el espacio disponible)
  • .col-{número}: Columna que ocupa un número específico de las 12 columnas
  • .col-{breakpoint}-{número}: Columna que ocupa un número específico a partir del breakpoint indicado
col-12 col-md-8
col-6 col-md-4
<div class="container">
  <div class="row">
    <div class="col-12 col-md-8">
      <div class="p-3 bg-primary text-white">col-12 col-md-8</div>
    </div>
    <div class="col-6 col-md-4">
      <div class="p-3 bg-primary text-white">col-6 col-md-4</div>
    </div>
  </div>
</div>

Columnas de ancho automático:

1 de 3
2 de 3
3 de 3
<div class="container">
  <div class="row">
    <div class="col">
      <div class="p-3 bg-primary text-white">1 de 3</div>
    </div>
    <div class="col">
      <div class="p-3 bg-primary text-white">2 de 3</div>
    </div>
    <div class="col">
      <div class="p-3 bg-primary text-white">3 de 3</div>
    </div>
  </div>
</div>

Alineación vertical de columnas:

Arriba
Arriba
Centro
Centro
Abajo
Abajo
<div class="row align-items-start" style="height: 100px;">
  <div class="col">Arriba</div>
  <div class="col">Arriba</div>
</div>

<div class="row align-items-center" style="height: 100px;">
  <div class="col">Centro</div>
  <div class="col">Centro</div>
</div>

<div class="row align-items-end" style="height: 100px;">
  <div class="col">Abajo</div>
  <div class="col">Abajo</div>
</div>

Gutters

Los gutters son los espacios entre columnas. Bootstrap 5 usa la clase g-* para controlar estos espacios.

Columna con gutter
Columna con gutter
Columna con gutter
Columna con gutter
<div class="container">
  <div class="row g-3">
    <div class="col-6">
      <div class="p-3 bg-primary text-white">Columna con gutter</div>
    </div>
    <div class="col-6">
      <div class="p-3 bg-primary text-white">Columna con gutter</div>
    </div>
    <div class="col-6">
      <div class="p-3 bg-primary text-white">Columna con gutter</div>
    </div>
    <div class="col-6">
      <div class="p-3 bg-primary text-white">Columna con gutter</div>
    </div>
  </div>
</div>

También puedes usar gx-* para gutters horizontales y gy-* para gutters verticales.

Componentes

Alertas

Las alertas son mensajes informativos, de éxito, advertencia o error.

<div class="alert alert-primary" role="alert">
  Esta es una alerta primaria
</div>
<div class="alert alert-success" role="alert">
  Esta es una alerta de éxito
</div>
<div class="alert alert-danger" role="alert">
  Esta es una alerta de peligro
</div>
<div class="alert alert-warning" role="alert">
  Esta es una alerta de advertencia
</div>
<div class="alert alert-info" role="alert">
  Esta es una alerta informativa
</div>

Alertas con contenido adicional

<div class="alert alert-success" role="alert">
  <h4 class="alert-heading">¡Bien hecho!</h4>
  <p>Has completado correctamente esta tarea.</p>
  <hr>
  <p class="mb-0">Asegúrate de revisar las instrucciones para la siguiente tarea.</p>
</div>

Alertas descartables

<div class="alert alert-warning alert-dismissible fade show" role="alert">
  <strong>¡Atención!</strong> Esta alerta puede ser cerrada.
  <button type="button" class="btn-close" data-bs-dismiss="alert" aria-label="Close"></button>
</div>

Botones

Bootstrap ofrece varios estilos de botones para diferentes acciones y contextos.

Estilos de botones

<button type="button" class="btn btn-primary">Primary</button>
<button type="button" class="btn btn-secondary">Secondary</button>
<button type="button" class="btn btn-success">Success</button>
<button type="button" class="btn btn-danger">Danger</button>
<button type="button" class="btn btn-warning">Warning</button>
<button type="button" class="btn btn-info">Info</button>
<button type="button" class="btn btn-light">Light</button>
<button type="button" class="btn btn-dark">Dark</button>
<button type="button" class="btn btn-link">Link</button>

Botones outline

<button type="button" class="btn btn-outline-primary">Primary</button>
<button type="button" class="btn btn-outline-secondary">Secondary</button>
<button type="button" class="btn btn-outline-success">Success</button>
<button type="button" class="btn btn-outline-danger">Danger</button>

Tamaños de botones

<button type="button" class="btn btn-primary btn-lg">Botón grande</button>
<button type="button" class="btn btn-primary">Botón normal</button>
<button type="button" class="btn btn-primary btn-sm">Botón pequeño</button>

Estados de botones

<button type="button" class="btn btn-primary" disabled>Botón desactivado</button>
<button type="button" class="btn btn-primary active">Botón activo</button>

Grupo de botones

<div class="btn-group" role="group" aria-label="Grupo de botones básico">
  <button type="button" class="btn btn-primary">Izquierda</button>
  <button type="button" class="btn btn-primary">Centro</button>
  <button type="button" class="btn btn-primary">Derecha</button>
</div>

Cards

Las cards son contenedores flexibles con múltiples variantes y opciones.

Card básica

Imagen de ejemplo
Título de la card

Un ejemplo de texto rápido para colocar en la card y hacer de su título.

Ir a algún lado
<div class="card" style="width: 18rem;">
  <img src="imagen.jpg" class="card-img-top" alt="Imagen de ejemplo">
  <div class="card-body">
    <h5 class="card-title">Título de la card</h5>
    <p class="card-text">Un ejemplo de texto rápido para colocar en la card y hacer de su título.</p>
    <a href="#" class="btn btn-primary">Ir a algún lado</a>
  </div>
</div>

Card con cabecera y pie

Cabecera
Título especial

Con texto de apoyo a continuación como introducción natural a contenido adicional.

Ir a algún lado
<div class="card">
  <div class="card-header">
    Cabecera
  </div>
  <div class="card-body">
    <h5 class="card-title">Título especial</h5>
    <p class="card-text">Con texto de apoyo a continuación como introducción natural a contenido adicional.</p>
    <a href="#" class="btn btn-primary">Ir a algún lado</a>
  </div>
  <div class="card-footer text-muted">
    Hace 2 días
  </div>
</div>

Grupo de cards

...
Título de la card 1

Contenido de la card 1.

...
Título de la card 2

Contenido de la card 2.

...
Título de la card 3

Contenido de la card 3.

<div class="card-group">
  <div class="card">
    <img src="imagen1.jpg" class="card-img-top" alt="...">
    <div class="card-body">
      <h5 class="card-title">Título de la card 1</h5>
      <p class="card-text">Contenido de la card 1.</p>
    </div>
  </div>
  <div class="card">
    <img src="imagen2.jpg" class="card-img-top" alt="...">
    <div class="card-body">
      <h5 class="card-title">Título de la card 2</h5>
      <p class="card-text">Contenido de la card 2.</p>
    </div>
  </div>
  <div class="card">
    <img src="imagen3.jpg" class="card-img-top" alt="...">
    <div class="card-body">
      <h5 class="card-title">Título de la card 3</h5>
      <p class="card-text">Contenido de la card 3.</p>
    </div>
  </div>
</div>

La navbar es un componente de navegación principal que puede adaptarse a diferentes tamaños de pantalla.

Navbar básica

<nav class="navbar navbar-expand-lg navbar-dark bg-dark">
  <div class="container-fluid">
    <a class="navbar-brand" href="#">Navbar</a>
    <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
      <span class="navbar-toggler-icon"></span>
    </button>
    <div class="collapse navbar-collapse" id="navbarSupportedContent">
      <ul class="navbar-nav me-auto mb-2 mb-lg-0">
        <li class="nav-item">
          <a class="nav-link active" aria-current="page" href="#">Inicio</a>
        </li>
        <li class="nav-item">
          <a class="nav-link" href="#">Enlace</a>
        </li>
        <li class="nav-item dropdown">
          <a class="nav-link dropdown-toggle" href="#" id="navbarDropdown" role="button" data-bs-toggle="dropdown" aria-expanded="false">
            Dropdown
          </a>
          <ul class="dropdown-menu" aria-labelledby="navbarDropdown">
            <li><a class="dropdown-item" href="#">Acción</a></li>
            <li><a class="dropdown-item" href="#">Otra acción</a></li>
            <li><hr class="dropdown-divider"></li>
            <li><a class="dropdown-item" href="#">Algo más aquí</a></li>
          </ul>
        </li>
      </ul>
      <form class="d-flex">
        <input class="form-control me-2" type="search" placeholder="Buscar" aria-label="Search">
        <button class="btn btn-outline-success" type="submit">Buscar</button>
      </form>
    </div>
  </div>
</nav>

Explicación detallada de la Navbar

Vamos a analizar cada parte de la navbar:

  • navbar: Clase base para la barra de navegación.
  • navbar-expand-lg: Hace que la navbar se expanda en pantallas grandes (≥992px). En pantallas más pequeñas, se colapsa en un botón hamburguesa.
  • navbar-dark: Establece el tema oscuro para la navbar (texto claro sobre fondo oscuro).
  • bg-dark: Establece el fondo oscuro para la navbar.
  • container-fluid: Contenedor que ocupa el 100% del ancho.
  • navbar-brand: Estilo para el logo o nombre del sitio.
  • navbar-toggler: El botón que aparece en pantallas pequeñas para mostrar/ocultar el menú.
  • data-bs-toggle="collapse": Indica que este botón controla un elemento colapsable.
  • data-bs-target="#navbarSupportedContent": Especifica qué elemento colapsará/expandirá.
  • navbar-toggler-icon: El icono de hamburguesa dentro del botón.
  • collapse navbar-collapse: El contenedor que se colapsa en pantallas pequeñas.
  • navbar-nav: Lista no ordenada con estilo de navegación.
  • me-auto: Margin-end auto, empuja los elementos a la izquierda.
  • nav-item: Elemento de lista para cada ítem de navegación.
  • nav-link: Estilo para los enlaces dentro de la navegación.
  • active: Indica el ítem actualmente seleccionado.
  • dropdown: Clase para elementos desplegables.
  • dropdown-toggle: Estilo para el botón que abre el menú desplegable.
  • dropdown-menu: El menú desplegable.
  • dropdown-item: Elementos dentro del menú desplegable.
  • dropdown-divider: Línea divisoria dentro del menú desplegable.
  • d-flex: Display flex para el formulario de búsqueda.

Modals

Los modals son diálogos o ventanas emergentes que aparecen sobre el contenido actual.

Modal básico

<!-- Botón para abrir el modal -->
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#exampleModal">
  Abrir modal
</button>

<!-- Modal -->
<div class="modal fade" id="exampleModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">
  <div class="modal-dialog">
    <div class="modal-content">
      <div class="modal-header">
        <h5 class="modal-title" id="exampleModalLabel">Título del modal</h5>
        <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
      </div>
      <div class="modal-body">
        Contenido del modal...
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Cerrar</button>
        <button type="button" class="btn btn-primary">Guardar cambios</button>
      </div>
    </div>
  </div>
</div>

Explicación detallada del Modal

Vamos a analizar cada parte del modal:

  • data-bs-toggle="modal": Indica que este botón controla un modal.
  • data-bs-target="#exampleModal": Especifica qué modal abrirá.
  • modal fade: Clase base para modales con animación de desvanecimiento.
  • modal-dialog: Contenedor que posiciona el modal en la pantalla.
  • modal-content: Contenedor del contenido del modal.
  • modal-header: Encabezado del modal.
  • modal-title: Título del modal.
  • btn-close: Botón para cerrar el modal (X).
  • data-bs-dismiss="modal": Indica que este botón cierra el modal.
  • modal-body: Cuerpo del modal donde va el contenido principal.
  • modal-footer: Pie del modal donde van los botones de acción.

Utilidades

Bootstrap proporciona numerosas clases utilitarias para aplicar estilos comunes sin necesidad de escribir CSS personalizado.

Espaciado (Margin y Padding)

Bootstrap incluye un sistema de espaciado consistente para márgenes y padding.

Formato de clases de espaciado

{propiedad}{lados}-{tamaño}

Propiedad:

  • m - para clases que establecen margin
  • p - para clases que establecen padding

Lados:

  • t - para clases que establecen margin-top o padding-top
  • b - para clases que establecen margin-bottom o padding-bottom
  • s - para clases que establecen margin-left o
  • s - para clases que establecen margin-left o padding-left en LTR, margin-right o padding-right en RTL
  • e - para clases que establecen margin-right o padding-right en LTR, margin-left o padding-left en RTL
  • x - para clases que establecen tanto *-left como *-right
  • y - para clases que establecen tanto *-top como *-bottom
  • en blanco - para clases que establecen un margin o padding en los 4 lados del elemento

Tamaños:

  • 0 - para clases que eliminan el margin o padding estableciendo a 0
  • 1 - para clases que establecen margin o padding a $spacer * .25 (0.25rem = 4px)
  • 2 - para clases que establecen margin o padding a $spacer * .5 (0.5rem = 8px)
  • 3 - para clases que establecen margin o padding a $spacer (1rem = 16px)
  • 4 - para clases que establecen margin o padding a $spacer * 1.5 (1.5rem = 24px)
  • 5 - para clases que establecen margin o padding a $spacer * 3 (3rem = 48px)
  • auto - para clases que establecen margin a auto
p-3: Padding de 1rem (16px) en todos los lados
pt-3: Padding-top de 1rem
pb-3: Padding-bottom de 1rem
ps-3: Padding-left de 1rem
pe-3: Padding-right de 1rem
px-3: Padding horizontal de 1rem
py-3: Padding vertical de 1rem
m-3: Margin de 1rem en todos los lados
Elemento izquierdo
Elemento derecho
me-auto: Empuja a la izquierda
Elemento derecho
<div class="p-3">Padding de 1rem (16px) en todos los lados</div>
    <div class="pt-3">Padding-top de 1rem</div>
    <div class="pb-3">Padding-bottom de 1rem</div>
    <div class="ps-3">Padding-left de 1rem</div>
    <div class="pe-3">Padding-right de 1rem</div>
    <div class="px-3">Padding horizontal de 1rem</div>
    <div class="py-3">Padding vertical de 1rem</div>
    <div class="m-3">Margin de 1rem en todos los lados</div>
    
    <!-- Ejemplo de me-auto -->
    <div class="d-flex justify-content-between">
      <div class="me-auto">me-auto: Empuja a la izquierda</div>
      <div>Elemento derecho</div>
    </div>

Colores

Bootstrap incluye un conjunto de colores predefinidos para texto y fondos.

Colores de texto

.text-primary

.text-secondary

.text-success

.text-danger

.text-warning

.text-info

.text-light

.text-dark

.text-muted

.text-white

<p class="text-primary">.text-primary</p>
    <p class="text-secondary">.text-secondary</p>
    <p class="text-success">.text-success</p>
    <p class="text-danger">.text-danger</p>
    <p class="text-warning">.text-warning</p>
    <p class="text-info">.text-info</p>
    <p class="text-light bg-dark">.text-light</p>
    <p class="text-dark">.text-dark</p>
    <p class="text-muted">.text-muted</p>
    <p class="text-white bg-dark">.text-white</p>

Colores de fondo

.bg-primary
.bg-secondary
.bg-success
.bg-danger
.bg-warning
.bg-info
.bg-light
.bg-dark
.bg-white
<div class="p-3 mb-2 bg-primary text-white">.bg-primary</div>
    <div class="p-3 mb-2 bg-secondary text-white">.bg-secondary</div>
    <div class="p-3 mb-2 bg-success text-white">.bg-success</div>
    <div class="p-3 mb-2 bg-danger text-white">.bg-danger</div>
    <div class="p-3 mb-2 bg-warning text-dark">.bg-warning</div>
    <div class="p-3 mb-2 bg-info text-dark">.bg-info</div>
    <div class="p-3 mb-2 bg-light text-dark">.bg-light</div>
    <div class="p-3 mb-2 bg-dark text-white">.bg-dark</div>
    <div class="p-3 mb-2 bg-white text-dark">.bg-white</div>

Flex

Bootstrap proporciona un conjunto completo de utilidades flexbox para crear layouts flexibles.

Contenedor flex

Soy un contenedor flexbox
Soy un contenedor flexbox inline
<div class="d-flex p-2">Soy un contenedor flexbox</div>
    <div class="d-inline-flex p-2">Soy un contenedor flexbox inline</div>

Dirección

Flex item 1
Flex item 2
Flex item 3
Flex item 1
Flex item 2
Flex item 3
Flex item 1
Flex item 2
Flex item 3
<div class="d-flex flex-row">
      <div class="p-2">Flex item 1</div>
      <div class="p-2">Flex item 2</div>
      <div class="p-2">Flex item 3</div>
    </div>
    
    <div class="d-flex flex-row-reverse">
      <div class="p-2">Flex item 1</div>
      <div class="p-2">Flex item 2</div>
      <div class="p-2">Flex item 3</div>
    </div>
    
    <div class="d-flex flex-column">
      <div class="p-2">Flex item 1</div>
      <div class="p-2">Flex item 2</div>
      <div class="p-2">Flex item 3</div>
    </div>

Justificación de contenido

Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
<div class="d-flex justify-content-start">...</div>
    <div class="d-flex justify-content-end">...</div>
    <div class="d-flex justify-content-center">...</div>
    <div class="d-flex justify-content-between">...</div>
    <div class="d-flex justify-content-around">...</div>

Alineación de elementos

Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
Flex item
<div class="d-flex align-items-start" style="height: 100px;">
      <div class="p-2">Flex item</div>
      <div class="p-2">Flex item</div>
      <div class="p-2">Flex item</div>
    </div>
    
    <div class="d-flex align-items-center" style="height: 100px;">
      <div class="p-2">Flex item</div>
      <div class="p-2">Flex item</div>
      <div class="p-2">Flex item</div>
    </div>
    
    <div class="d-flex align-items-end" style="height: 100px;">
      <div class="p-2">Flex item</div>
      <div class="p-2">Flex item</div>
      <div class="p-2">Flex item</div>
    </div>

Display

Las utilidades de display controlan cómo se muestra un elemento.

Clases de display

d-inline
d-inline
d-block d-block
d-flex
d-none (este elemento está oculto)
<div class="d-inline p-2 bg-primary text-white">d-inline</div>
    <div class="d-inline p-2 bg-dark text-white">d-inline</div>
    
    <span class="d-block p-2 bg-primary text-white">d-block</span>
    <span class="d-block p-2 bg-dark text-white">d-block</span>
    
    <div class="d-flex p-2 bg-primary text-white">d-flex</div>
    
    <div class="d-none p-2 bg-dark text-white">d-none (este elemento está oculto)</div>

Display responsive

Las clases de display también se pueden aplicar a breakpoints específicos.

Oculto en xs, visible en sm y superiores
Visible en xs y sm, oculto en md y superiores
<div class="d-none d-sm-block">Oculto en xs, visible en sm y superiores</div>
    <div class="d-block d-md-none">Visible en xs y sm, oculto en md y superiores</div>

Posicionamiento

Bootstrap proporciona clases para controlar la posición de elementos.

Clases de posición

Posición estática
Posición relativa
Posición absoluta (centrado)
Posición sticky
<div class="position-static">Posición estática</div>
    <div class="position-relative">Posición relativa</div>
    <div class="position-absolute" style="top: 50%; left: 50%; transform: translate(-50%, -50%);">Posición absoluta (centrado)</div>
    <div class="position-sticky" style="top: 0;">Posición sticky</div>

Clases de posición fija

top-0 start-0
top-0 end-0
top-50 start-50
bottom-0 start-0
bottom-0 end-0
<div class="position-relative">
      <div class="position-absolute top-0 start-0">top-0 start-0</div>
      <div class="position-absolute top-0 end-0">top-0 end-0</div>
      <div class="position-absolute top-50 start-50">top-50 start-50</div>
      <div class="position-absolute bottom-0 start-0">bottom-0 start-0</div>
      <div class="position-absolute bottom-0 end-0">bottom-0 end-0</div>
    </div>

Texto

Bootstrap proporciona varias clases para controlar la apariencia del texto.

Alineación de texto

Texto alineado a la izquierda.

Texto centrado.

Texto alineado a la derecha.

<p class="text-start">Texto alineado a la izquierda.</p>
    <p class="text-center">Texto centrado.</p>
    <p class="text-end">Texto alineado a la derecha.</p>

Transformación de texto

TEXTO EN MINÚSCULAS.

texto en mayúsculas.

texto capitalizado.

<p class="text-lowercase">TEXTO EN MINÚSCULAS.</p>
    <p class="text-uppercase">texto en mayúsculas.</p>
    <p class="text-capitalize">texto capitalizado.</p>

Peso de fuente y estilo

Texto en negrita.

Texto más negrita.

Texto normal.

Texto ligero.

Texto más ligero.

Texto en cursiva.

Texto con estilo normal.

<p class="fw-bold">Texto en negrita.</p>
    <p class="fw-bolder">Texto más negrita.</p>
    <p class="fw-normal">Texto normal.</p>
    <p class="fw-light">Texto ligero.</p>
    <p class="fw-lighter">Texto más ligero.<
    <p class="fw-lighter">Texto más ligero.</p>
<p class="fst-italic">Texto en cursiva.</p>
<p class="fst-normal">Texto con estilo normal.</p>

Bordes

Bootstrap proporciona clases para agregar o quitar bordes.

Agregar bordes

<span class="border"></span>
<span class="border-top"></span>
<span class="border-end"></span>
<span class="border-bottom"></span>
<span class="border-start"></span>

Colores de borde

<span class="border border-primary"></span>
<span class="border border-secondary"></span>
<span class="border border-success"></span>
<span class="border border-danger"></span>
<span class="border border-warning"></span>
<span class="border border-info"></span>
<span class="border border-light"></span>
<span class="border border-dark"></span>
<span class="border border-white"></span>

Radios de borde

<span class="border rounded"></span>
<span class="border rounded-top"></span>
<span class="border rounded-end"></span>
<span class="border rounded-bottom"></span>
<span class="border rounded-start"></span>
<span class="border rounded-circle"></span>
<span class="border rounded-pill"></span>

Sombras

Bootstrap proporciona clases para agregar sombras a elementos.

Sin sombra
Sombra pequeña
Sombra regular
Sombra grande
<div class="shadow-none p-3 mb-3 bg-light rounded">Sin sombra</div>
<div class="shadow-sm p-3 mb-3 bg-white rounded">Sombra pequeña</div>
<div class="shadow p-3 mb-3 bg-white rounded">Sombra regular</div>
<div class="shadow-lg p-3 mb-3 bg-white rounded">Sombra grande</div>

Sizing

Bootstrap proporciona clases para controlar el ancho y la altura de elementos.

Ancho

Ancho 25%
Ancho 50%
Ancho 75%
Ancho 100%
Ancho auto
<div class="w-25">Ancho 25%</div>
<div class="w-50">Ancho 50%</div>
<div class="w-75">Ancho 75%</div>
<div class="w-100">Ancho 100%</div>
<div class="w-auto">Ancho auto</div>

Altura

Altura 25%
Altura 50%
Altura 75%
Altura 100%
Altura auto
<div class="h-25">Altura 25%</div>
<div class="h-50">Altura 50%</div>
<div class="h-75">Altura 75%</div>
<div class="h-100">Altura 100%</div>
<div class="h-auto">Altura auto</div>

Formularios

Bootstrap proporciona estilos y componentes para crear formularios atractivos y funcionales.

Controles básicos

Nunca compartiremos tu email con nadie más.
<form>
  <div class="mb-3">
    <label for="exampleInput1" class="form-label">Dirección de email</label>
    <input type="email" class="form-control" id="exampleInput1" placeholder="name@example.com">
    <div class="form-text text-muted">Nunca compartiremos tu email con nadie más.</div>
  </div>
  <div class="mb-3">
    <label for="exampleInput2" class="form-label">Contraseña</label>
    <input type="password" class="form-control" id="exampleInput2">
  </div>
  <div class="mb-3">
    <label for="exampleSelect" class="form-label">Ejemplo de select</label>
    <select class="form-select" id="exampleSelect">
      <option selected>Selecciona una opción</option>
      <option value="1">Uno</option>
      <option value="2">Dos</option>
      <option value="3">Tres</option>
    </select>
  </div>
  <div class="mb-3">
    <label for="exampleTextarea" class="form-label">Ejemplo de textarea</label>
    <textarea class="form-control" id="exampleTextarea" rows="3"></textarea>
  </div>
  <button type="submit" class="btn btn-primary">Enviar</button>
</form>

Checks y radios

<div class="form-check">
  <input class="form-check-input" type="checkbox" value="" id="flexCheckDefault">
  <label class="form-check-label" for="flexCheckDefault">
    Checkbox por defecto
  </label>
</div>
<div class="form-check">
  <input class="form-check-input" type="checkbox" value="" id="flexCheckChecked" checked>
  <label class="form-check-label" for="flexCheckChecked">
    Checkbox marcado
  </label>
</div>

<div class="form-check">
  <input class="form-check-input" type="radio" name="flexRadioDefault" id="flexRadioDefault1">
  <label class="form-check-label" for="flexRadioDefault1">
    Radio por defecto
  </label>
</div>
<div class="form-check">
  <input class="form-check-input" type="radio" name="flexRadioDefault" id="flexRadioDefault2" checked>
  <label class="form-check-label" for="flexRadioDefault2">
    Radio seleccionado por defecto
  </label>
</div>

Switches

<div class="form-check form-switch">
  <input class="form-check-input" type="checkbox" id="flexSwitchCheckDefault">
  <label class="form-check-label" for="flexSwitchCheckDefault">Switch por defecto</label>
</div>
<div class="form-check form-switch">
  <input class="form-check-input" type="checkbox" id="flexSwitchCheckChecked" checked>
  <label class="form-check-label" for="flexSwitchCheckChecked">Switch marcado</label>
</div>

Tamaños de controles

<input class="form-control form-control-lg" type="text" placeholder="Input grande">
<input class="form-control" type="text" placeholder="Input normal">
<input class="form-control form-control-sm" type="text" placeholder="Input pequeño">

Validación de formularios

¡Se ve bien!
¡Se ve bien!
@
Por favor, elige un nombre de usuario.
Debes estar de acuerdo antes de enviar.
<form class="needs-validation" novalidate>
  <div class="mb-3">
    <label for="validationCustom01" class="form-label">Nombre</label>
    <input type="text" class="form-control" id="validationCustom01" value="Mark" required>
    <div class="valid-feedback">
      ¡Se ve bien!
    </div>
  </div>
  <div class="mb-3">
    <label for="validationCustom02" class="form-label">Apellido</label>
    <input type="text" class="form-control" id="validationCustom02" value="Otto" required>
    <div class="valid-feedback">
      ¡Se ve bien!
    </div>
  </div>
  <div class="mb-3">
    <label for="validationCustomUsername" class="form-label">Usuario</label>
    <div class="input-group has-validation">
      <span class="input-group-text" id="inputGroupPrepend">@</span>
      <input type="text" class="form-control" id="validationCustomUsername" aria-describedby="inputGroupPrepend" required>
      <div class="invalid-feedback">
        Por favor, elige un nombre de usuario.
      </div>
    </div>
  </div>
  <div class="mb-3">
    <div class="form-check">
      <input class="form-check-input" type="checkbox" value="" id="invalidCheck" required>
      <label class="form-check-label" for="invalidCheck">
        Acepto los términos y condiciones
      </label>
      <div class="invalid-feedback">
        Debes estar de acuerdo antes de enviar.
      </div>
    </div>
  </div>
  <button class="btn btn-primary" type="submit">Enviar formulario</button>
</form>

<script>
// Ejemplo de JavaScript para deshabilitar el envío del formulario si hay campos inválidos
(function () {
  'use strict'

  // Obtener todos los formularios a los que queremos aplicar estilos de validación de Bootstrap personalizados
  var forms = document.querySelectorAll('.needs-validation')

  // Bucle sobre ellos y prevenir el envío
  Array.prototype.slice.call(forms)
    .forEach(function (form) {
      form.addEventListener('submit', function (event) {
        if (!form.checkValidity()) {
          event.preventDefault()
          event.stopPropagation()
        }

        form.classList.add('was-validated')
      }, false)
    })
})()
</script>

Tablas

Bootstrap ofrece estilos para tablas que mejoran su apariencia y legibilidad.

Tabla básica

# Nombre Apellido Usuario
1 Mark Otto @mdo
2 Jacob Thornton @fat
3 Larry the Bird @twitter
<table class="table">
  <thead>
    <tr>
      <th scope="col">#</th>
      <th scope="col">Nombre</th>
      <th scope="col">Apellido</th>
      <th scope="col">Usuario</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <th scope="row">1</th>
      <td>Mark</td>
      <td>Otto</td>
      <td>@mdo</td>
    </tr>
    <tr>
      <th scope="row">2</th>
      <td>Jacob</td>
      <td>Thornton</td>
      <td>@fat</td>
    </tr>
    <tr>
      <th scope="row">3</th>
      <td>Larry</td>
      <td>the Bird</td>
      <td>@twitter</td>
    </tr>
  </tbody>
</table>

Variantes de tablas

# Nombre Apellido Usuario
1 Mark Otto @mdo
2 Jacob Thornton @fat
# Nombre Apellido Usuario
1 Mark Otto @mdo
2 Jacob Thornton @fat
3 Larry the Bird @twitter
<!-- Tabla oscura -->
<table class="table table-dark">
  <!-- Contenido de la tabla -->
</table>

<!-- Tabla con filas alternas -->
<table class="table table-striped">
  <!-- Contenido de la tabla -->
</table>

Tabla con bordes

# Nombre Apellido Usuario
1 Mark Otto @mdo
2 Jacob Thornton @fat
<table class="table table-bordered">
  <!-- Contenido de la tabla -->
</table>

Tabla responsive

# Encabezado 1 Encabezado 2 Encabezado 3 Encabezado 4 Encabezado 5
1 Celda Celda Celda Celda Celda
2 Celda Celda Celda Celda Celda
<div class="table-responsive">
  <table class="table">
    <!-- Contenido de la tabla -->
  </table>
</div>

Los breadcrumbs o "migas de pan" indican la ubicación actual de la página dentro de una jerarquía de navegación.

<nav aria-label="breadcrumb">
  <ol class="breadcrumb">
    <li class="breadcrumb-item"><a href="#">Inicio</a></li>
    <li class="breadcrumb-item"><a href="#">Biblioteca</a></li>
    <li class="breadcrumb-item active" aria-current="page">Datos</li>
  </ol>
</nav>

Paginación

La paginación permite navegar a través de múltiples páginas de contenido.

<nav aria-label="Ejemplo de paginación">
  <ul class="pagination">
    <li class="page-item disabled">
      <a class="page-link" href="#" tabindex="-1" aria-disabled="true">Anterior</a>
    </li>
    <li class="page-item"><a class="page-link" href="#">1</a></li>
    <li class="page-item active" aria-current="page">
      <a class="page-link" href="#">2</a>
    </li>
    <li class="page-item"><a class="page-link" href="#">3</a></li>
    <li class="page-item">
      <a class="page-link" href="#">Siguiente</a>
    </li>
  </ul>
</nav>

Tabs y Pills

Las pestañas y pills permiten organizar el contenido en diferentes secciones.

<!-- Tabs -->
<ul class="nav nav-tabs">
  <li class="nav-item">
    <a class="nav-link active" aria-current="page" href="#">Activo</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="#">Enlace</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="#">Enlace</a>
  </li>
  <li class="nav-item">
    <a class="nav-link disabled" href="#" tabindex="-1" aria-disabled="true">Desactivado</a>
  </li>
</ul>

<!-- Pills -->
<ul class="nav nav-pills">
<ul class="nav nav-pills">
  <li class="nav-item">
    <a class="nav-link active" aria-current="page" href="#">Activo</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="#">Enlace</a>
  </li>
  <li class="nav-item">
    <a class="nav-link" href="#">Enlace</a>
  </li>
  <li class="nav-item">
    <a class="nav-link disabled" href="#" tabindex="-1" aria-disabled="true">Desactivado</a>
  </li>
</ul>

Componentes Interactivos

Accordion

El acordeón muestra u oculta contenido en paneles colapsables.

Este es el cuerpo del primer elemento de acordeón. Está mostrado por defecto, gracias a la clase .show añadida a la clase de colapso del acordeón.

Este es el cuerpo del segundo elemento de acordeón. Está oculto por defecto, hasta que la clase de colapso lo muestra.
<div class="accordion" id="accordionExample">
  <div class="accordion-item">
    <h2 class="accordion-header" id="headingOne">
      <button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne">
        Elemento de acordeón #1
      </button>
    </h2>
    <div id="collapseOne" class="accordion-collapse collapse show" aria-labelledby="headingOne" data-bs-parent="#accordionExample">
      <div class="accordion-body">
        Este es el cuerpo del primer elemento de acordeón.
      </div>
    </div>
  </div>
  <div class="accordion-item">
    <h2 class="accordion-header" id="headingTwo">
      <button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">
        Elemento de acordeón #2
      </button>
    </h2>
    <div id="collapseTwo" class="accordion-collapse collapse" aria-labelledby="headingTwo" data-bs-parent="#accordionExample">
      <div class="accordion-body">
        Este es el cuerpo del segundo elemento de acordeón.
      </div>
    </div>
  </div>
</div>

El carrusel es un componente de presentación de diapositivas para recorrer elementos.

<div id="carouselExampleControls" class="carousel slide" data-bs-ride="carousel">
  <div class="carousel-inner">
    <div class="carousel-item active">
      <img src="..." class="d-block w-100" alt="...">
    </div>
    <div class="carousel-item">
      <img src="..." class="d-block w-100" alt="...">
    </div>
    <div class="carousel-item">
      <img src="..." class="d-block w-100" alt="...">
    </div>
  </div>
  <button class="carousel-control-prev" type="button" data-bs-target="#carouselExampleControls" data-bs-slide="prev">
    <span class="carousel-control-prev-icon" aria-hidden="true"></span>
    <span class="visually-hidden">Anterior</span>
  </button>
  <button class="carousel-control-next" type="button" data-bs-target="#carouselExampleControls" data-bs-slide="next">
    <span class="carousel-control-next-icon" aria-hidden="true"></span>
    <span class="visually-hidden">Siguiente</span>
  </button>
</div>

Collapse

El componente collapse permite mostrar y ocultar contenido.

Algún contenido de marcador de posición para el componente de colapso. Este panel está oculto por defecto pero se revela cuando el usuario activa el disparador.
<p>
  <a class="btn btn-primary" data-bs-toggle="collapse" href="#collapseExample" role="button" aria-expanded="false" aria-controls="collapseExample">
    Enlace con data-bs-target
  </a>
  <button class="btn btn-primary" type="button" data-bs-toggle="collapse" data-bs-target="#collapseExample" aria-expanded="false" aria-controls="collapseExample">
    Botón con data-bs-target
  </button>
</p>
<div class="collapse" id="collapseExample">
  <div class="card card-body">
    Algún contenido de marcador de posición para el componente de colapso.
  </div>
</div>

Los dropdowns son menús contextuales para mostrar enlaces u otras opciones.

<div class="dropdown">
  <button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton1" data-bs-toggle="dropdown" aria-expanded="false">
    Botón Dropdown
  </button>
  <ul class="dropdown-menu" aria-labelledby="dropdownMenuButton1">
    <li><a class="dropdown-item" href="#">Acción</a></li>
    <li><a class="dropdown-item" href="#">Otra acción</a></li>
    <li><a class="dropdown-item" href="#">Algo más aquí</a></li>
  </ul>
</div>

Tooltips

Los tooltips muestran información adicional cuando el usuario pasa el cursor sobre un elemento.

<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="top" title="Tooltip en la parte superior">
  Tooltip en top
</button>
<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="right" title="Tooltip en la derecha">
  Tooltip en right
</button>
<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="bottom" title="Tooltip en la parte inferior">
  Tooltip en bottom
</button>
<button type="button" class="btn btn-secondary" data-bs-toggle="tooltip" data-bs-placement="left" title="Tooltip en la izquierda">
  Tooltip en left
</button>

<script>
// Inicializar todos los tooltips
var tooltipTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]'))
var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) {
  return new bootstrap.Tooltip(tooltipTriggerEl)
})
</script>

Popovers

Los popovers son pequeñas ventanas emergentes que muestran contenido adicional.

<button type="button" class="btn btn-lg btn-danger" data-bs-toggle="popover" title="Título del Popover" data-bs-content="Y aquí hay contenido sorprendente. Es muy atractivo.">Haz clic para activar</button>

<script>
// Inicializar todos los popovers
var popoverTriggerList = [].slice.call(document.querySelectorAll('[data-bs-toggle="popover"]'))
var popoverList = popoverTriggerList.map(function (popoverTriggerEl) {
  return new bootstrap.Popover(popoverTriggerEl)
})
</script>

Toasts

Los toasts son notificaciones ligeras similares a las que se ven en aplicaciones móviles y de escritorio.

<button type="button" class="btn btn-primary" id="liveToastBtn">Mostrar toast en vivo</button>

<div class="position-fixed bottom-0 end-0 p-3" style="z-index: 11">
  <div id="liveToast" class="toast" role="alert" aria-live="assertive" aria-atomic="true">
    <div class="toast-header">
      <div class="rounded me-2 bg-primary" style="width: 20px; height: 20px;"></div>
      <strong class="me-auto">Bootstrap</strong>
      <small>Hace 11 minutos</small>
      <button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Close"></button>
    </div>
    <div class="toast-body">
      ¡Hola, mundo! Este es un mensaje de toast.
    </div>
  </div>
</div>

<script>
var toastTrigger = document.getElementById('liveToastBtn')
var toastLiveExample = document.getElementById('liveToast')
if (toastTrigger) {
  toastTrigger.addEventListener('click', function () {
    var toast = new bootstrap.Toast(toastLiveExample)
    toast.show()
  })
}
</script>

Bootstrap Icons

Bootstrap Icons es una biblioteca de iconos SVG gratuita y de código abierto con más de 1,300 iconos.

Cómo usar Bootstrap Icons

<!-- Incluir la biblioteca de Bootstrap Icons -->
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css">

<!-- Usar iconos como elementos i -->
<i class="bi bi-alarm"></i>
<i class="bi bi-cloud-download"></i>
<i class="bi bi-calendar-date"></i>
<i class="bi bi-camera"></i>
<i class="bi bi-envelope"></i>
<i class="bi bi-geo-alt"></i>
<i class="bi bi-heart"></i>
<i class="bi bi-house"></i>
<i class="bi bi-pencil"></i>
<i class="bi bi-person"></i>
<i class="bi bi-search"></i>
<i class="bi bi-star"></i>

Tamaños de iconos

<i class="bi bi-alarm fs-1"></i> <!-- Extra grande -->
<i class="bi bi-alarm fs-2"></i> <!-- Grande -->
<i class="bi bi-alarm fs-3"></i> <!-- Mediano -->
<i class="bi bi-alarm fs-4"></i> <!-- Pequeño -->
<i class="bi bi-alarm fs-5"></i> <!-- Extra pequeño -->

Helpers

Los helpers son utilidades que ayudan con tareas comunes de estilo.

Clearfix

Clearfix es un helper que asegura que un elemento contenedor se expanda para incluir elementos flotantes.

<div class="clearfix">
  <button type="button" class="btn btn-secondary float-start">Botón flotante a la izquierda</button>
  <button type="button" class="btn btn-secondary float-end">Botón flotante a la derecha</button>
</div>

Ratio

El helper ratio mantiene un aspecto de relación constante para elementos como videos e iframes.

Contenedor 16:9
<div class="ratio ratio-16x9">
  <iframe src="https://www.youtube.com/embed/zpOULjyy-n8?rel=0" title="YouTube video" allowfullscreen></iframe>
</div>

Visually Hidden

El helper visually-hidden oculta elementos visualmente pero los mantiene accesibles para tecnologías de asistencia.

Título oculto (solo visible para lectores de pantalla)

El título anterior está oculto visualmente pero es accesible para lectores de pantalla.

<h2 class="visually-hidden">Título oculto (solo visible para lectores de pantalla)</h2>

El helper stretched-link hace que un enlace cubra todo su elemento contenedor.

Card con stretched link

Un ejemplo de cómo usar la clase stretched-link en un enlace dentro de una card.

Ir a algún lado
<div class="card" style="width: 18rem;">
  <div class="card-body">
    <h5 class="card-title">Card con stretched link</h5>
    <p class="card-text">Un ejemplo de cómo usar la clase stretched-link en un enlace dentro de una card.</p>
    <a href="#" class="btn btn-primary stretched-link">Ir a algún lado</a>
  </div>
</div>

Utilities Adicionales

Overflow

Las utilidades de overflow controlan cómo se maneja el contenido que desborda su contenedor.

Este es un ejemplo de texto que se desborda de su contenedor. El contenedor tiene una altura y anchura máxima, y la clase overflow-auto añade barras de desplazamiento cuando es necesario.
<div class="overflow-auto">...</div>
<div class="overflow-hidden">...</div>
<div class="overflow-visible">...</div>
<div class="overflow-scroll">...</div>

Opacity

Las utilidades de opacidad controlan la transparencia de los elementos.

Opacidad 100%
Opacidad 75%
Opacidad 50%
Opacidad 25%
<div class="opacity-100">Opacidad 100%</div>
<div class="opacity-75">Opacidad 75%</div>
<div class="opacity-50">Opacidad 50%</div>
<div class="opacity-25">Opacidad 25%</div>

Float

Float

Las utilidades de float permiten posicionar elementos a la izquierda o derecha de su contenedor.

Float start en todos los tamaños de viewport

Float end en todos los tamaños de viewport

Sin float en todos los tamaños de viewport
<div class="float-start">Float start en todos los tamaños de viewport</div>
<div class="float-end">Float end en todos los tamaños de viewport</div>
<div class="float-none">Sin float en todos los tamaños de viewport</div>

<!-- Responsive floats -->
<div class="float-sm-start">Float start en viewports sm o más grandes</div>
<div class="float-md-start">Float start en viewports md o más grandes</div>
<div class="float-lg-start">Float start en viewports lg o más grandes</div>
<div class="float-xl-start">Float start en viewports xl o más grandes</div>

Interacciones

Las utilidades de interacción controlan cómo los usuarios pueden interactuar con el contenido.

Este texto será seleccionado completamente cuando el usuario haga clic en él.

Este texto no se puede seleccionar.

Este enlace no se puede clicar (pe-none).

Este enlace se puede clicar (pe-auto).

<p class="user-select-all">Este texto será seleccionado completamente cuando el usuario haga clic en él.</p>
<p class="user-select-none">Este texto no se puede seleccionar.</p>
<p><a href="#" class="pe-none" tabindex="-1" aria-disabled="true">Este enlace</a> no se puede clicar (pe-none).</p>
<p><a href="#" class="pe-auto">Este enlace</a> se puede clicar (pe-auto).</p>

Personalización de Bootstrap

Bootstrap puede personalizarse para adaptarse a tus necesidades específicas.

Usando variables CSS

Bootstrap 5 utiliza variables CSS que puedes sobrescribir para personalizar el framework.

/* Sobrescribir variables CSS de Bootstrap */
:root {
  --bs-blue: #0073e6;
  --bs-primary: #0073e6;
  --bs-border-radius: 0.5rem;
  --bs-body-font-family: 'Open Sans', sans-serif;
}

Usando Sass

Para personalización avanzada, Bootstrap utiliza Sass, lo que permite mayor flexibilidad.

// Personalizar variables de Sass de Bootstrap
$primary: #0073e6;
$border-radius: 0.5rem;
$font-family-base: 'Open Sans', sans-serif;

// Importar Bootstrap
@import "bootstrap/scss/bootstrap";

Sobrescribir clases de Bootstrap

También puedes sobrescribir clases específicas de Bootstrap con tu propio CSS.

/* Sobrescribir el estilo de los botones */
.btn-primary {
  background-color: #0073e6;
  border-color: #0073e6;
}

.btn-primary:hover {
  background-color: #0059b3;
  border-color: #0059b3;
}

Conclusión

Bootstrap 5 es un framework potente y flexible que facilita la creación de sitios web responsivos y modernos. Con sus componentes prediseñados, sistema de grid, utilidades y opciones de personalización, Bootstrap puede acelerar significativamente tu flujo de trabajo de desarrollo web.

Recursos adicionales