Bootstrap

Bootstrap

Tutorial Bootstrap: Introducción a Bootstrap CSS

Bootstrap CSS introducción: primeros pasos. Aprende los conceptos básicos y da tus primeros pasos con Bootstrap CSS mediante ejemplos detallados.

¿Qué es Bootstrap?

Bootstrap es un framework de código abierto desarrollado por Twitter para facilitar y agilizar el desarrollo de sitios web adaptativos y aplicaciones web. Combina código CSS (para estilos), JavaScript (para interactividad) y HTML (para estructura). Bootstrap sigue una filosofía "mobile first", lo que significa que se prioriza la optimización para dispositivos móviles antes de adaptar el diseño a pantallas más grandes, utilizando consultas de medios CSS para escalar los componentes según sea necesario.

Bootstrap ofrece un conjunto completo de herramientas CSS y JavaScript para crear interfaces de usuario modernas y adaptativas sin la necesidad de escribir código desde cero. Entre sus componentes más útiles se encuentran sistemas de grillas, tipografía, formularios, botones, navegación y componentes JavaScript como menús desplegables (dropdowns), carruseles (carousels) y modales. Su modularidad permite a los desarrolladores incluir solo los componentes que necesitan, favoreciendo una carga más rápida de las páginas.

Además, Bootstrap emplea una serie de estilos globales y configuraciones diseñadas para normalizar las diferencias entre navegadores, proporcionando una base sólida y consistente para cualquier proyecto web. Esto ayuda tanto a principiantes como a expertos a mantener un estándar elevado de calidad y coherencia en sus diseños y aplicaciones.

Características principales de Bootstrap

Bootstrap proporciona una amplia variedad de opciones y recursos para el desarrollo front-end, que incluyen:

  • Sistema de rejilla (Grid system): Este sistema permite crear diseños adaptativos mediante la utilización de un diseño de 12 columnas. Los desarrolladores pueden definir cómo se distribuirán y comportarán los elementos en diferentes tamaños de pantalla utilizando clases específicas de Bootstrap.
<div class="container">
    <div class="row">
    <div class="col-md-4">.col-md-4</div>
    <div class="col-md-4">.col-md-4</div>
    <div class="col-md-4">.col-md-4</div>
    </div>
</div>

3 columnas

  • Tipografía: Bootstrap incluye estilos predeterminados para todos los elementos tipográficos básicos como encabezados, párrafos, listas, entre otros, además de clases para ajustar aspectos como el tamaño del texto, el peso de la fuente y el color.
<h1 class="display-1">Display 1</h1>
<p class="lead">Este es un texto principal.</p>

Título y texto

  • Componentes pre-diseñados: Bootstrap ofrece una serie de componentes de interfaz de usuario listos para usar, como botones, formularios, tarjetas, barras de navegación, alertas y muchos otros. Estos componentes siguen el estilo de Bootstrap y garantizan una apariencia y comportamiento consistentes en todos los dispositivos y navegadores.
<button type="button" class="btn btn-primary">Primary Button</button>

Botón azul

  • Javascript y plugins: Bootstrap incluye varios plugins de JavaScript para añadir interactividad y dinámicas avanzadas a los componentes de la interfaz de usuario. Estos incluyen modales, pestañas, carruseles, tooltips, y mucho más. Estos componentes requieren la inclusión de la biblioteca Popper.js para su correcto funcionamiento.
<div class="modal" tabindex="-1">
    <div class="modal-dialog">
    <div class="modal-content">
        <div class="modal-header">
        <h5 class="modal-title">Modal title</h5>
        </div>
        <div class="modal-body">
        <p>Modal body text goes here.</p>
        </div>
        <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
        </div>
    </div>
    </div>
</div>
<script>
    var myModal = new bootstrap.Modal(document.getElementById('myModal'), {
    keyboard: false
    })
</script>
  • Temas y personalización: Bootstrap permite la personalización mediante la sobrescritura de variables Sass. Esto proporciona a los desarrolladores la capacidad de ajustar colores, tipografías, tamaños y otros aspectos de los componentes sin editar directamente los archivos CSS. También se pueden crear temas personalizados para un proyecto específico.
$theme-colors: (
    "primary": #007bff,
    "secondary": #6c757d,
    "success": #28a745,
    "info": #17a2b8,
    "warning": #ffc107,
    "danger": #dc3545,
    "light": #f8f9fa,
    "dark": #343a40
);
  • Compatibilidad y soporte multi-navegador: Bootstrap asegura una presentación consistente de los componentes en los navegadores y plataformas más utilizadas. Incluye un conjunto de estilos de reinicio y normalización denominado Reboot que corrige diferencias entre navegadores.
<!doctype html>
<html lang="en">
    <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1">
    <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet">
    </head>
    <body>
    <h1>Hello, world!</h1>
    </body>
</html>

Texto que dice "Hello, world!"

Estas características hacen de Bootstrap una herramienta extremadamente versátil y eficaz para el desarrollo de sitios y aplicaciones web adaptativas que funcionen correctamente en diversos dispositivos y navegadores.

Definición breve de cada componente que tiene Bootstrap

Bootstrap proporciona una serie de componentes prediseñados que facilitan la creación de interfaces de usuario consistentes y adaptativas. A continuación se presenta una descripción breve de cada uno de ellos.

Alertas: Son mensajes de texto resaltados que se utilizan para ofrecer retroalimentación contextual a los usuarios.

<div class="alert alert-primary" role="alert">
  This is a primary alert—check it out!
</div>

Alerta azul

Badges: Elementos pequeños y discretos utilizados para mostrar conteos o etiquetas.

<span class="badge bg-secondary">New</span>

Badge gris

Breadcrumb: Indica la ubicación actual dentro de una jerarquía de navegación.

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

Breadcrumb con Home y Explorar

Buttons: Botones interactivos que se pueden utilizar en formularios o como enlaces de acción.

<button type="button" class="btn btn-primary">Primary</button>

Botón azul

Button group: Agrupaciones de botones que permiten acciones múltiples en línea.

<div class="btn-group" role="group" aria-label="Basic example">
  <button type="button" class="btn btn-secondary">Left</button>
  <button type="button" class="btn btn-secondary">Middle</button>
  <button type="button" class="btn btn-secondary">Right</button>
</div>

Grupo de botones gris

Card: Contenedores flexibles y extensibles para contenido con múltiples variantes de diseño.

<div class="card" style="width: 18rem;">
  <img src="..." class="card-img-top" alt="...">
  <div class="card-body">
    <h5 class="card-title">Card title</h5>
    <p class="card-text">Some quick example text to build on the card title and make up the bulk of the card's content.</p>
    <a href="#" class="btn btn-primary">Go somewhere</a>
  </div>
</div>

Carousel: Elemento deslizante para mostrar galería de imágenes con controles.

<div id="carouselExample" class="carousel slide">
  <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>
  <button class="carousel-control-prev" type="button" data-bs-target="#carouselExample" data-bs-slide="prev">
    <span class="carousel-control-prev-icon" aria-hidden="true"></span>
  </button>
  <button class="carousel-control-next" type="button" data-bs-target="#carouselExample" data-bs-slide="next">
    <span class="carousel-control-next-icon" aria-hidden="true"></span>
  </button>
</div>

Collapse: Componente para mostrar/ocultar contenido.

<p>
  <a class="btn btn-primary" data-bs-toggle="collapse" href="#collapseExample" role="button" aria-expanded="false" aria-controls="collapseExample">
    Link with href
  </a>
</p>
<div class="collapse" id="collapseExample">
  <div class="card card-body">
    Some placeholder content for the collapse component.
  </div>
</div>

Dropdown: Menús desplegables que ofrecen una lista de opciones.

<div class="dropdown">
  <button class="btn btn-secondary dropdown-toggle" type="button" id="dropdownMenuButton" data-bs-toggle="dropdown" aria-expanded="false">
    Dropdown button
  </button>
  <ul class="dropdown-menu" aria-labelledby="dropdownMenuButton">
    <li><a class="dropdown-item" href="#">Action</a></li>
    <li><a class="dropdown-item" href="#">Another action</a></li>
  </ul>
</div>

Botón dropdown

Forms: Conjunto de estilos y componentes para formularios, incluyendo inputs, selects y checkboxes.

<form>
  <div class="mb-3">
    <label for="exampleInputEmail1" class="form-label">Email address</label>
    <input type="email" class="form-control" id="exampleInputEmail1" aria-describedby="emailHelp">
  </div>
  <div class="mb-3">
    <label for="exampleInputPassword1" class="form-label">Password</label>
    <input type="password" class="form-control" id="exampleInputPassword1">
  </div>
  <button type="submit" class="btn btn-primary">Submit</button>
</form>

Formulario con Correo y Contraseña

Input group: Elementos combinados con inputs, como botones y textos.

<div class="input-group mb-3">
  <span class="input-group-text" id="basic-addon1">@</span>
  <input type="text" class="form-control" placeholder="Username" aria-label="Username" aria-describedby="basic-addon1">
</div>

Input de Username

Jumbotron: Componente de gran tamaño para encabezados con texto resaltado. Nota: Este componente ha sido reemplazado por "Containers" en las versiones más recientes.

<div class="jumbotron">
  <h1 class="display-4">Jumbotron</h1>
  <p class="lead">Unidad hero para toda la información extra que necesites.</p>
  <hr class="my-4" />
  <p>Utiliza clases utility como para la tipografía y el espaciado.</p>
  <p class="lead">
    <a class="btn btn-primary btn-lg" href="#" role="button">Botón</a>
  </p>
</div>

Jumbotrón con botón

List group: Listas flexibles y extensibles para mostrar una serie de contenidos.

<ul class="list-group">
  <li class="list-group-item">Un item</li>
  <li class="list-group-item">Un segundo item</li>
</ul>

Lista de dos items.

Modal: Ventanas emergentes modales para interactuar con el usuario sin abandonar la página actual.

<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">Modal title</h5>
        <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Close"></button>
      </div>
      <div class="modal-body">
        Modal body text goes here.
      </div>
      <div class="modal-footer">
        <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Close</button>
      </div>
    </div>
  </div>
</div>

Navs: Elementos de navegación como barras de pestañas y menús de navegación intuitivos.

<ul class="nav nav-tabs" id="myTab" role="tablist">
  <li class="nav-item" role="presentation">
    <button class="nav-link active" id="home-tab" data-bs-toggle="tab" data-bs-target="#home" type="button" role="tab" aria-controls="home" aria-selected="true">Home</button>
  </li>
</ul>

Nav con Home

Navbar: Barras de navegación receptivas y personalizables.

<nav class="navbar navbar-expand-lg navbar-light bg-light">
  <div class="container-fluid">
    <a class="navbar-brand" href="#">Navbar</a>
    <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
      <span class="navbar-toggler-icon"></span>
    </button>
    <div class="collapse navbar-collapse" id="navbarNav">
      <ul class="navbar-nav">
        <li class="nav-item">
          <a class="nav-link active" aria-current="page" href="#">Home</a>
        </li>
      </ul>
    </div>
  </div>
</nav>

Barra de navegación con Home

Pagination: Componentes para dividir el contenido en varias páginas.

<nav aria-label="Page navigation example">
  <ul class="pagination">
    <li class="page-item"><a class="page-link" href="#">Anterior</a></li>
    <li class="page-item"><a class="page-link" href="#">Siguiente</a></li>
  </ul>
</nav>

Navegación Anterior y Siguiente

Popovers: Elementos emergentes que muestran información adicional al pasar el ratón o hacer clic.

<button type="button" class="btn btn-secondary" data-bs-toggle="popover" title="Popover title" data-bs-content="And here's some amazing content. It's very engaging. Right?">Click to toggle popover</button>

Progress: Barras de progreso que indican el estado de una operación.

<div class="progress">
  <div class="progress-bar" role="progressbar" style="width: 25%;" aria-valuenow="25" aria-valuemin="0" aria-valuemax="100"></div>
</div>

Barra de progreso

Spinners: Indicadores de carga animados.

<div class="spinner-border" role="status">
  <span class="visually-hidden">Loading...</span>
</div>

Spinner

Toasts: Notificaciones pequeñas y auto-desechables que informan al usuario sobre un evento.

<div class="toast" role="alert" aria-live="assertive" aria-atomic="true">
  <div class="toast-header">
    <strong class="me-auto">Bootstrap</strong>
    <small>11 mins ago</small>
    <button type="button" class="btn-close" data-bs-dismiss="toast" aria-label="Close"></button>
  </div>
  <div class="toast-body">
    Hello, world! This is a toast message.
  </div>
</div>

Estos componentes permiten construir interfaces ricas y funcionales con un mínimo esfuerzo, garantizando al mismo tiempo una apariencia coherente y moderna en múltiples dispositivos y navegadores.

Diferencias entre usar Bootstrap y no usar ninguna librería CSS

Utilizar Bootstrap ofrece una serie de ventajas significativas sobre no utilizar ninguna librería CSS en el desarrollo de sitios web y aplicaciones. Bootstrap proporciona una base sólida y estandarizada para el diseño y desarrollo, lo que se traduce en una mayor eficiencia y consistencia. A continuación, se detallan algunas de las principales diferencias y ventajas de usar Bootstrap.

Productividad y rapidez en el desarrollo

Con Bootstrap, los desarrolladores pueden aprovechar componentes y estilos predefinidos, lo que acelera significativamente el proceso de desarrollo. En contraste, desarrollando sin una librería como Bootstrap, cada componente y estilo debe ser codificado manualmente, lo que aumenta el tiempo de desarrollo:

<!-- Usando Bootstrap -->
<button class="btn btn-primary">Primary Button</button>

<!-- Sin Bootstrap -->
<style>
  .btn-primary {
    background-color: #007bff;
    color: white;
    padding: 10px 20px;
    border: none;
    border-radius: 5px;
  }
</style>
<button class="btn-primary">Primary Button</button>

Responsividad y diseño adaptable

Bootstrap sigue una filosofía "mobile first", facilitando la creación de diseños adaptativos que se adaptan a cualquier dispositivo. Las clases como col-md-4 permiten una fácil configuración de una rejilla adaptable. Sin Bootstrap, los desarrolladores deben escribir todas las reglas de CSS para manejar diferentes tamaños de pantalla:

<!-- Usando Bootstrap -->
<div class="container">
  <div class="row">
    <div class="col-md-4">Contenido</div>
    <div class="col-md-4">Contenido</div>
    <div class="col-md-4">Contenido</div>
  </div>
</div>

<!-- Sin Bootstrap -->
<style>
  .container {
    width: 100%;
    padding: 0 15px;
  }
  .row {
    display: flex;
    flex-wrap: wrap;
  }
  .col-md-4 {
    width: 33.3333%;
    padding: 15px;
  }
  @media (max-width: 768px) {
    .col-md-4 {
      width: 100%;
    }
  }
</style>
<div class="container">
  <div class="row">
    <div class="col-md-4">Contenido</div>
    <div class="col-md-4">Contenido</div>
    <div class="col-md-4">Contenido</div>
  </div>
</div>

Consistencia y normalización

Bootstrap incluye un conjunto de estilos globales llamados Reboot que normalizan y ajustan algunos comportamientos predeterminados del navegador para asegurar la consistencia entre diferentes navegadores y dispositivos. Sin Bootstrap, los desarrolladores deben implementar manualmente estos ajustes para lograr la misma coherencia:

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

<!-- Sin Bootstrap -->
<style>
  /* Ejemplo de normalización muy simplificado */
  html {
    box-sizing: border-box;
  }
  *, *:before, *:after {
    box-sizing: inherit;
  }
  body {
    margin: 0;
    padding: 0;
    font-family: Arial, sans-serif;
  }
</style>

Interactividad y componentes avanzados

Bootstrap incluye varios plugins de JavaScript para mejorar la interactividad y dinámicas avanzadas de la interfaz de usuario, como modales, carruseles, tooltips, entre otros. Sin Bootstrap, estas funcionalidades deben ser implementadas desde cero o con librerías adicionales:

<!-- Usando Bootstrap -->
<button type="button" class="btn btn-primary" data-bs-toggle="modal" data-bs-target="#exampleModal">
  Abrir Modal
</button>
<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>
      </div>
    </div>
  </div>
</div>

<!-- Sin Bootstrap -->
<style>
  /* Ejemplo simple de un modal */
  .modal {
    display: none;
    position: fixed;
    z-index: 1050;
    padding-top: 100px;
    left: 0;
    top: 0;
    width: 100%;
    height: 100%;
    overflow: auto;
    background-color: rgba(0, 0, 0, 0.4);
  }
  .modal-content {
    background-color: #fefefe;
    margin: auto;
    padding: 20px;
    border: 1px solid #888;
    width: 80%;
  }
</style>
<div id="simpleModal" class="modal">
  <div class="modal-content">
    <span class="close-button">&times;</span>
    <h2>Título del Modal</h2>
    <p>Contenido del modal.</p>
  </div>
</div>
<script>
  // Script para abrir y cerrar el modal
  var modal = document.getElementById("simpleModal");
  var btn = document.getElementById("openBtn");
  var span = document.getElementsByClassName("close-button")[0];
  btn.onclick = function() {
    modal.style.display = "block";
  }
  span.onclick = function() {
    modal.style.display = "none";
  }
  window.onclick = function(event) {
    if (event.target == modal) {
      modal.style.display = "none";
    }
  }
</script>

Estas diferencias resaltan la eficiencia, consistencia y flexibilidad que Bootstrap aporta al desarrollo web, contrastado con las alternativas sin librerías CSS, donde los desarrolladores deben manejar manualmente muchos aspectos del diseño y la interactividad.

Certifícate en Bootstrap con CertiDevs PLUS

Ejercicios de esta lección Introducción a Bootstrap CSS

Evalúa tus conocimientos de esta lección Introducción a Bootstrap CSS 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 los conceptos fundamentales de Bootstrap.
  • Aprender a usar el sistema de rejilla de Bootstrap.
  • Utilizar componentes pre-diseñados como botones, formularios y modales.
  • Customizar Bootstrap mediante variables Sass.
  • Implementar interactividad con JavaScript y plugins de Bootstrap.
  • Garantizar la compatibilidad multi-navegador con Bootstrap.