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.
Aprende Bootstrap GRATIS y certifícate¿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>
- 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>
- 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>
- 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>
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>
Badges: Elementos pequeños y discretos utilizados para mostrar conteos o etiquetas.
<span class="badge bg-secondary">New</span>
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>
Buttons: Botones interactivos que se pueden utilizar en formularios o como enlaces de acción.
<button type="button" class="btn btn-primary">Primary</button>
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>
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>
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>
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>
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>
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>
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>
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>
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>
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>
Spinners: Indicadores de carga animados.
<div class="spinner-border" role="status">
<span class="visually-hidden">Loading...</span>
</div>
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">×</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.
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.
Listado y formulario de productos en Bootstrap CSS
Utilidades de colores y fondo
Instalación de Bootstrap
Página web completa con Bootstrap
Tipografía y fuentes en Bootstrap
Clases de utilidad
Flexbox en Bootstrap
Utilidades de espaciado y alineación
Conocimiento general de Bootstrap
Conocimiento general de Bootstrap
Fundamentos del sistema de grid de Bootstrap
Imágenes responsive en Bootstrap
Proyecto blog de artículos con Bootstrap CSS
Introducción a Bootstrap
Formularios y validación
Modales y ventanas emergentes
Navbars y menús de navegación en Bootstrap
Componentes de Bootstrap
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.
Introducción A Bootstrap Css
Introducción Y Entorno
Instalación De Bootstrap Css
Introducción Y Entorno
Tipografía Y Fuentes En Bootstrap
Fundamentos Y Layout
Imágenes Responsive En Bootstrap
Fundamentos Y Layout
Fundamentos Del Sistema De Grid De Bootstrap
Fundamentos Y Layout
Flexbox En Bootstrap
Fundamentos Y Layout
Componentes De Bootstrap
Componentes
Navbars Y Menús De Navegación En Bootstrap
Componentes
Formularios Y Validación
Componentes
Modales Y Ventanas Emergentes
Componentes
Clases De Utilidad
Utilidades Y Helpers
Utilidades De Espaciado Y Alineación
Utilidades Y Helpers
Utilidades De Colores Y Fondo
Utilidades Y Helpers
Conocimiento General De Bootstrap
Evaluación
Conocimiento General De Bootstrap
Evaluación
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.