Bootstrap

Bootstrap

Tutorial Bootstrap: Fundamentos del sistema de grid de Bootstrap

Bootstrap: Aprende los fundamentos del sistema de grid, crea diseños responsivos y flexibles. Perfecto para ingenieros de software que buscan una base sólida en Bootstrap.

¿Qué es y para qué sirve el sistema grid de Bootstrap?

El sistema grid de Bootstrap es una herramienta para crear diseños de página avanzados utilizando una estructura de rejilla basada en flexbox. Su propósito principal es proporcionar un sistema layout que permita organizar el contenido en filas y columnas, facilitando la creación de interfaces adaptativas y adaptables a múltiples tamaños de pantalla.

Bootstrap utiliza una rejilla de 12 columnas que se pueden dividir de diversas formas para adaptarse a cualquier diseño deseado. El sistema grid permite que los elementos se dispongan tanto vertical como horizontalmente, adaptándose automáticamente a diferentes dispositivos y resoluciones.

Características clave del sistema grid de Bootstrap:

Flexibilidad y responsividad El sistema grid utiliza flexbox, lo que permite una alineación y distribución precisa de los elementos dentro de contenedores flexibles. Esto asegura que el layout sea adecuado para pantallas de todos tamaños, desde móviles hasta monitores de escritorio.

Breakpoints adaptables Bootstrap define seis niveles de puntos de quiebre (breakpoints) basados en el ancho mínimo de la pantalla: xs (extra pequeño), sm (pequeño), md (mediano), lg (grande), xl (extra grande) y xxl (extra extra grande). Estos breakpoints permiten ajustar la visibilidad y el comportamiento de las columnas en función del tamaño del dispositivo.

Clases predefinidas Bootstrap incluye una amplia variedad de clases CSS predefinidas para manejar el layout. Las principales clases utilizadas incluyen .container, .row y .col, cada una con variaciones específicas para diferentes breakpoints (por ejemplo, .col-sm-4 para columnas en dispositivos pequeños y superiores).

Gutters (espaciado entre columnas) Los gutters son los espacios entre las columnas y se pueden ajustar utilizando clases específicas como .gx-* para espaciado horizontal y .gy-* para espaciado vertical. Esto proporciona un control granulado sobre el espaciado entre elementos, mejorando la legibilidad y organización visual.

Columnas y filas anidadas Es posible anidar filas y columnas para crear layouts más complejos. Una fila dentro de otra columna puede contener su propio conjunto de columnas, permitiendo niveles múltiples de organización.

Auto-layout de columnas El auto-layout permite que las columnas se distribuyan automáticamente dependiendo del contenido, sin necesidad de especificar un ancho fijo para cada columna. Esto se puede lograr utilizando clases como .col-{breakpoint}-auto.

Ejemplo básico de uso del sistema grid

<div class="container">
  <div class="row">
    <div class="col">
      Columna 1
    </div>
    <div class="col">
      Columna 2
    </div>
    <div class="col">
      Columna 3
    </div>
  </div>
</div>

3 columnasEste ejemplo crea una fila con tres columnas de igual ancho que se ajustan automáticamente al tamaño del contenedor, y por ende, a la pantalla del dispositivo.

El sistema grid de Bootstrap es una herramienta esencial para desarrollar UIs complejas y adaptativas de manera rápida y eficiente. Su integración con flexbox, combinada con las clases predefinidas y los breakpoints, proporcionan una base sólida para la maquetación de proyectos web.

Contenedores y filas en el grid en Bootstrap

El sistema grid de Bootstrap se apoya principalmente en tres componentes clave: contenedores (.container), filas (.row) y columnas (.col-*). A continuación, se explica cómo utilizar contenedores y filas para estructurar y organizar el contenido en una página web de manera responsiva y eficiente:

Contenedores (.container)

Los contenedores son los elementos fundamentales para contener las filas y columnas de la grid. Existen diferentes tipos de contenedores en Bootstrap:

  • .container: Este contenedor tiene un ancho fijo a medida que el viewport (ventana de visualización) cambia. La anchura máxima se ajusta según el tamaño del breakpoint. Por ejemplo, para el breakpoint lg la anchura es de 960px.
  • .container-fluid: Este tipo de contenedor tiene un ancho del 100% en todos los breakpoints, siendo completamente fluido y adaptándose a cualquier tamaño de pantalla.
  • Responsive containers: Bootstrap permite crear contenedores específicos para cada breakpoint como .container-sm, .container-md, .container-lg, entre otros, que combinan el comportamiento fluido y el tamaño fijo según el breakpoint.

Código de ejemplo para contenedores:

<div class="container">
  <!-- Contenido aquí -->
</div>

<div class="container-fluid">
  <!-- Contenido aquí -->
</div>

<div class="container-lg">
  <!-- Contenido aquí -->
</div>

Filas (.row)

Las filas son usadas para agrupar las columnas dentro de un contenedor. En Bootstrap, .row se asegura que las columnas se alineen correctamente utilizando flexbox. Las filas también contrarrestan el padding interno de las columnas (gutters) con márgenes negativos para alinear visualmente el contenido.

  • Las filas se pueden personalizar usando modificadores de columna y clases de espaciado (gutters). Utiliza .gx-* para el espaciado horizontal y .gy-* para el espaciado vertical.

Ejemplo básico de uso de filas:

<div class="container">
  <div class="row">
    <div class="col">Columna 1</div>
    <div class="col">Columna 2</div>
    <div class="col">Columna 3</div>
  </div>
</div>

En este ejemplo, se crean tres columnas de igual ancho dentro de una fila.

Gutter (Espaciado entre columnas)

Los gutters son los espacios entre columnas y se controlan mediante clases específicas:

  • .g-*: Esta clase controla tanto el flujo horizontal como vertical.
  • .gx-*: Controla el espaciado horizontal.
  • .gy-*: Controla el espaciado vertical.
  • .g-0: Remueve el espaciado entre columnas por completo.

Ejemplo de control de gutters:

<div class="container">
  <div class="row g-3">
    <div class="col">Columna con gutter</div>
    <div class="col">Columna con gutter</div>
  </div>
  <div class="row gx-5 gy-2">
    <div class="col">Columna con gutter horizontal y vertical personalizados</div>
    <div class="col">Columna con gutter horizontal y vertical personalizados</div>
  </div>
</div>

Columnas con gutter

Este comportamiento permite ajustar el espaciado de manera granular, mejorando la organización visual del contenido.

Anidación de filas y columnas

Es posible anidar filas y columnas para crear diseños aún más complejos. Una fila dentro de una columna puede contener su propio conjunto de columnas:

<div class="container">
  <div class="row">
    <div class="col">
      Nivel 1
      <div class="row">
        <div class="col">Nivel 2</div>
        <div class="col">Nivel 2</div>
      </div>
    </div>
  </div>
</div>

2 niveles de columnas

En este ejemplo, hay una fila y columna principales (Nivel 1) y una fila anidada con dos columnas dentro de la primera columna del Nivel 1.

Consideraciones adicionales

Es importante tener en cuenta ciertas limitaciones y peculariedades del uso de flexbox con Bootstrap, como la inhabilidad de utilizar algunos elementos HTML como contenedores flex. Se recomienda revisar la documentación de Bootstrap y fuentes adicionales sobre flexbox para sacar el máximo provecho del sistema grid.

Con estas herramientas, el sistema grid de Bootstrap permite crear layouts flexibles y adaptativos, adaptándose a cualquier dispositivo y resolución de pantalla.

Columnas y su distribución en el grid de Bootstrap

El sistema de grid de Bootstrap se basa en la división de un ancho máximo de fila en 12 columnas, que pueden combinarse de varias maneras para crear distintos layouts. Las columnas en Bootstrap son altamente flexibles y permiten configurar layouts adaptativos que se adaptan automáticamente a diferentes tamaños de pantalla.

Las clases principales que definen las columnas siguen el patrón .col-{breakpoint}-{n}, donde {breakpoint} es uno de los seis puntos de quiebre (xs, sm, md, lg, xl, xxl) y {n} es el número de columnas que ocupa el elemento dentro de la fila (de 1 a 12).

Uso básico de columnas

Para utilizar columnas en Bootstrap, simplemente se añaden clases a los divs dentro de una fila (.row). Aquí algunos ejemplos básicos:

<div class="container">
  <div class="row">
    <div class="col">Columna 1</div>
    <div class="col">Columna 2</div>
    <div class="col">Columna 3</div>
  </div>
</div>

3 columnas

En este ejemplo, cada columna ocupa un espacio igual en la fila, ya que se utilizan clases genéricas .col.

Columnas con tamaños específicos

Es posible definir el tamaño de cada columna usando las clases con tamaños específicos:

<div class="container">
  <div class="row">
    <div class="col-4">Columna 4/12</div>
    <div class="col-8">Columna 8/12</div>
  </div>
</div>

Columnas de diferentes tamaños

Aquí, la primera columna ocupa 4/12 (un tercio) del ancho de la fila, y la segunda columna ocupa 8/12 (dos tercios).

Columna autoajustable

Para crear columnas de ancho variable según el contenido, se usa la clase .col-auto:

<div class="container">
  <div class="row justify-content-md-center">
    <div class="col col-lg-2">1 de 3</div>
    <div class="col-md-auto">Contenido de ancho variable</div>
    <div class="col col-lg-2">3 de 3</div>
  </div>
</div>

Combinación de columnas responsive

Bootstrap permite crear combinaciones complejas de columnas para diferentes puntos de quiebre:

<div class="container text-center">
  <div class="row">
    <div class="col-md-8">.col-md-8</div>
    <div class="col-6 col-md-4">.col-6 .col-md-4</div>
  </div>
  <div class="row">
    <div class="col-6 col-md-4">.col-6 .col-md-4</div>
    <div class="col-6 col-md-4">.col-6 .col-md-4</div>
    <div class="col-6 col-md-4">.col-6 .col-md-4</div>
  </div>
  <div class="row">
    <div class="col-6">.col-6</div>
    <div class="col-6">.col-6</div>
  </div>
</div>

Columnas en pantalla mediana

Columnas en pantalla pequeña

Clases responsive de filas

Para crear layouts complejos rápidamente, las clases .row-cols-{n} permiten definir el número de columnas dentro de una fila:

<div class="container text-center">
  <div class="row row-cols-2">
    <div class="col">Columna</div>
    <div class="col">Columna</div>
    <div class="col">Columna</div>
    <div class="col">Columna</div>
  </div>
</div>

2 columnas de 2 filas

Este ejemplo configura una fila con 2 columnas en cada punto de quiebre.

Niveles de anidamiento de columnas

Las filas y columnas pueden anidarse para crear niveles múltiples de layouts:

<div class="container text-center">
  <div class="row">
    <div class="col-sm-3">Nivel 1: .col-sm-3</div>
    <div class="col-sm-9">
      <div class="row">
        <div class="col-8 col-sm-6">Nivel 2: .col-8 .col-sm-6</div>
        <div class="col-4 col-sm-6">Nivel 2: .col-4 .col-sm-6</div>
      </div>
    </div>
  </div>
</div>

Columnas anidadas

En este ejemplo, una fila principal contiene una columna que a su vez contiene otra fila con sus propias columnas. Esto permite crear layouts más complejos y estructurados.

Breakpoints del grid y cómo funcionan

Bootstrap utiliza un sistema de breakpoints basado en media queries para crear layouts adaptativos que se adaptan a diferentes tamaños de pantalla. Estos puntos de quiebre permiten que las columnas y otros elementos del layout cambien su comportamiento y apariencia según el tamaño del viewport. Bootstrap define seis niveles de breakpoints:

  • xs (extra small): <576px
  • sm (small): ≥576px
  • md (medium): ≥768px
  • lg (large): ≥992px
  • xl (extra large): ≥1200px
  • xxl (extra extra large): ≥1400px

Cómo funcionan los breakpoints

Los breakpoints en Bootstrap están basados en media queries utilizando min-width. Esto significa que afectan no solo al tamaño especificado, sino a todos los tamaños por encima del breakpoint (e.g. .col-sm-4 se aplica a sm y a todos los tamaños mayores como md, lg, etc.).

Clases específicas para breakpoints

Bootstrap ofrece clases específicas para manejar la disposición de columnas en distintos breakpoints. Estas clases siguen el patrón .col-{breakpoint}-{n}, donde {breakpoint} es uno de los breakpoints definidos (xs, sm, md, lg, xl, xxl) y {n} el número de columnas que ocupa el elemento.

Ejemplos:

<div class="row">
  <div class="col-sm-8">.col-sm-8</div>
  <div class="col-sm-4">.col-sm-4</div>
</div>

<div class="row">
  <div class="col-6 col-md-4">.col-6 .col-md-4</div>
  <div class="col-6 col-md-4">.col-6 .col-md-4</div>
  <div class="col-6 col-md-4">.col-6 .col-md-4</div>
</div>

Columnas en pantalla mediana

Columnas en pantalla pequeña

En estos ejemplos, las columnas configuradas con .col-sm-* se apilan verticalmente en dispositivos extra pequeños (xs), pero se disponen en una fila horizontal en dispositivos pequeños (sm) y mayores.

Comportamiento de los contenedores

Los contenedores también se afectan por los breakpoints y se pueden definir contenedores respondivos que cambian de ancho en función del tamaño del viewport:

<div class="container">...</div>
<div class="container-sm">...</div>
<div class="container-md">...</div>
<div class="container-lg">...</div>
<div class="container-xl">...</div>
<div class="container-xxl">...</div>

Los contenedores pueden tener un ancho fijo específico para cada breakpoint (.container-{breakpoint}) o ser fluidos (.container-fluid) para ocupar el 100% del ancho del viewport en todos los tamaños de pantalla.

Control de visibilidad y diseño según breakpoints

Bootstrap permite controlar la visibilidad y el diseño de elementos según el breakpoint mediante utilidades CSS específicas. La clase .d-{breakpoint}-{value} permite especificar cómo deben mostrarse los elementos en diferentes tamaños de pantalla:

  • Mostrado y ocultado:
<div class="d-none d-md-block">Visible solo en md y mayores</div>
<div class="d-block d-sm-none">Visible solo en extra pequeños (xs)</div>

Texto en pantalla mediana

Texto en pantalla pequeña

  • Flexbox:
<div class="d-flex d-sm-block">Flex en todas menos sm</div>
<div class="d-sm-flex d-none">Flex solo en sm y más</div>

Texto en pantalla pequeña

  • Alineación:
<div class="text-center text-md-start">Texto centrado en xs y sm, a la izquierda en md y mayores</div>

Texto en pantalla mediana

Texto en pantalla pequeña

Estas utilidades proporcionan un control granulado sobre el comportamiento responsivo del layout, asegurando que el diseño se ajuste de manera óptima a cualquier dispositivo.

Certifícate en Bootstrap con CertiDevs PLUS

Ejercicios de esta lección Fundamentos del sistema de grid de Bootstrap

Evalúa tus conocimientos de esta lección Fundamentos del sistema de grid de Bootstrap con nuestros retos de programación de tipo Test, Puzzle, Código y Proyecto con VSCode, guiados por IA.

Todas las lecciones de Bootstrap

Accede a todas las lecciones de Bootstrap y aprende con ejemplos prácticos de código y ejercicios de programación con IDE web sin instalar nada.

Certificados de superación de Bootstrap

Supera todos los ejercicios de programación del curso de Bootstrap y obtén certificados de superación para mejorar tu currículum y tu empleabilidad.

En esta lección

Objetivos de aprendizaje de esta lección

  • Comprender la estructura básica del sistema de grid de Bootstrap (container, row, col).
  • Utilizar breakpoints y clases predefinidas para crear layouts responsivos.
  • Ajustar y personalizar gutters para mejorar la organización visual.
  • Implementar columnas y filas anidadas para layouts complejos.
  • Aplicar auto-layout y clases específicas para controlar el comportamiento de las columnas en diferentes dispositivos.