Modulo 2 - Bootstrap
Modulo 2 - Bootstrap
Índice
Introducción 2
Objetivos 2
Historia 2
Versiones 3
Características 3
Instalación 4
CSS y Javascript compilados y/o minimizados 4
CDN a través de jsDelivr 7
Administradores de paquetes 7
Archivos 7
Diseño 9
Contenedores 9
Sistema de Grillas 10
Columnas de Ancho Automático 11
Columnas de Ancho Fijo 11
Puntos de interrupción 12
Columnas Responsive 13
Columnas de Ancho Mixto 13
Contenido 14
Imágenes 14
Tablas 15
Figuras 17
Formularios 18
Introducción 18
Controles 19
Layout 19
Componentes 20
Alertas 20
Botones 21
Barra de navegación 22
1
Referencias 22
Introducción
El siguiente curso que estás por ver, trata sobre un framework de interfaz de usuario o UI
según sus siglas en inglés. Si ya has programado anteriormente sitios web seguramente lo
conoces. Bootstrap se ha convertido en unos de los frameworks que utilizan HTML, CSS y JS
más popular y a su vez más utilizado por los desarrolladores. Su potente sistema de grilla, su
extensa y clara documentación, su gran capacidad de adaptación a los distintos tamaños de
dispositivos, su variada colección de componentes y la extensa cantidad de templates
desarrollados con bootstrap son algunas de las razones, por lo cual hoy, es tan elegido.
Objetivos
El objetivo de este tutorial es brindarles una guía de inicio al framework que les facilite su
pronta incorporación a sus proyectos. En la misma trataremos los temas más importante del
mismo tales como instalación, reglas para su uso, características principales entre otros. Al
finalizar la lectura de este tutorial ya debemos estar en condiciones de hacer uso de
bootstrap en nuestras aplicaciones y tener la capacidad para comenzar a profundizar sobre
otros aspectos que se pueden encontrar en su documentación oficial.
2
Historia
Bootstrap, originalmente llamado Blueprint de Twitter, fue desarrollado por Mark Otto y
Jacob Thornton de Twitter, como un marco de trabajo (framework) para fomentar la
consistencia entre las herramientas internas.
En agosto del 2011, Twitter liberó Bootstrap como código abierto. En febrero del 2012, se
convirtió en el proyecto de desarrollo más popular de GitHub.1
Versiones
1
https://es.wikipedia.org/wiki/Bootstrap_(framework)
3
Bootstrap utiliza un versionado semántico incremental “Principal.Menor.Parche”. La versión
“Principal” se utiliza para un cambio importante e incompatible con la versión anterior,
actualmente se encuentra en la versión v5.0.1. La versión “Menor” agrega funcionalidad de
una manera compatible con la misma versión principal. Por ejemplo la v3.4.2 significa que es
compatible con la versión 3. Finalmente el cambio “Parche” se utiliza cuando realiza
correcciones de errores dentro de la misma versión menor.
Características
Instalación
En el siguiente apartado mostraremos cómo incorporar fácil y rápidamente el framework a
un proyecto, describiendo tres de las principales formas de instalación. El funcionamiento de
Bootstrap requiere tanto de su propia librería de javascript como la de Popper
(https://popper.js.org/), esta característica hace que se pueda instalar tanto atado (bundle
en inglés) o por separado.
Es importante recordar que la referencia a los archivos CSS se debe incluir dentro de la
etiqueta <head>...</head> mediante la etiqueta <link>, un ejemplo sería <head>... <link
href="dist/bootstrap/css/bootstrap.min.css" rel="stylesheet"></head>. Para el caso de los archivos
JS (javascript) preferentemente se deben incluir al final de la etiqueta <body> mediante la
etiqueta <script>, un ejemplo de que incluye la librería de bootstrap y popper sería <body>
… <script src="dist/bootstrap/js/bootstrap.bundle.min.js"></script> </body>.
4
Esta forma de instalación requiere que los archivos de Bootstrap sean descargados
previamente de forma local. Por ejemplo, la última versión disponible al momento de la
edición de este documento, se encuentra en el siguiente enlace
https://github.com/twbs/bootstrap/releases/download/v5.0.1/bootstrap-5.0.1-dist.zip.
Luego se incorporan a la estructura del proyecto, para finalmente poder referenciar los
archivos del framework (ver Figura 1.1). Cumpliendo algunos estándares del desarrollo web,
para el ejemplo de la Figura 1.1 se copian los archivos dentro de la carpeta “dist”
(distribución), pero esta puede tener cualquier otro nombre.
Figura 1.1
<!doctype html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<!-- Bootstrap CSS -->
<link href="dist/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<title>Instalación atada, compilada y minimizada</title>
</head>
<body>
<h1>Atado, compilado y minimizado</h1>
<!-- Bootstrap JS -->
<script src="dist/bootstrap/js/bootstrap.bundle.min.js"></script>
5
</body>
</html>
<!doctype html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<!-- Bootstrap CSS -->
<link href="dist/bootstrap/css/bootstrap.css" rel="stylesheet">
<title>Instalación atada y compilada</title>
</head>
<body>
<h1>Atado y compilado</h1>
<!-- Bootstrap JS -->
<script src="dist/bootstrap/js/bootstrap.bundle.js"></script>
</body>
</html>
6
Ejemplo 3: Instalación separada, compilada y minimizada
<!doctype html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<!-- Bootstrap CSS -->
<link href="dist/bootstrap/css/bootstrap.min.css" rel="stylesheet">
<title>Instalación separada, compilada y minimizada</title>
</head>
<body>
<h1>Separado, compilado y minimizado</h1>
<!-- Bootstrap JS -->
<script src="dist/bootstrap/js/bootstrap.min.js"></script>
<script src="dist/bootstrap/js/bootstrap.esm.min.js"></script>
</body>
</html>
<!doctype html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<!-- Bootstrap CSS -->
<link href="dist/bootstrap/css/bootstrap.css" rel="stylesheet">
<title>Instalación separada y compilada</title>
</head>
<body>
<h1>Separado y compilado</h1>
<!-- Bootstrap JS -->
<script src="dist/bootstrap/js/bootstrap.js"></script>
<script src="dist/bootstrap/js/bootstrap.esm.js"></script>
</body>
</html>
7
2. CDN a través de jsDelivr
La instalación a través de una Red de Distribución de Contenido (content delivery network o
CDN según siglas en inglés) reemplaza la necesidad de descargar el contenido del framework
y de referenciar sus archivos en forma local. La Red de Distribución de Contenido propuesta
por Bootstrap de manera oficial para su versión actual (5.0.1) es jsDelivr.
(https://www.jsdelivr.com/package/npm/bootstrap?path=dist)
3. Administradores de paquetes
Bootstrap también puede ser instalado o incorporado a nuestros proyectos mediante
un administrador de paquetes (package managers en inglés). Esta forma nos
permite continuar trabajando y utilizando los administradores de paquetes según el
lenguaje de programación que estemos usando:
8
4. Archivos
Archivos CSS:
Archivos Javascript:
9
Diseño
El uso correcto del framework hace que los desarrolladores tengan que obedecer cierto
estándar en el cumplimiento de algunas reglas, maquetando las páginas web de una forma
muy rápida, permitiendo abstraerse de las configuraciones propias de css.
Todas los elementos deben estar contenidos dentro de un contenedor con la clase
.container o .container-fluid. Ejemplo <div class=”container”>...</>.
Figura: Contenedores
Fuente de la imagen: https://www.w3schools.com/bootstrap4/bootstrap_containers.asp
Contenedores
Tal como se indicó al inicio de esta sección, los contenedores son el espacio de construcción
fundamental que incluye Bootstrap, y es donde se ajustan y alinean su contenido dentro de
un dispositivo o ventana gráfica determinada.
10
.container-xxl 100% 100% 100% 100% 100% 1320px
Sistema de Grillas
A continuación se muestra la estructura básica del sistema de grillas que propone Bootstrap:
11
Figura: Estructura básica
<div class="container">
<div class="row">
<div class="col"> Column </div>
<div class="col"> Column </div>
<div class="col"> Column </div>
</div>
</div>
12
cada columna pero ¿y si deseamos establecer un ancho fijo?. En este caso, simplemente
debemos especificar el número de columnas como sigue:
<div class="container">
<div class="row">
<div class="col-4"> Column </div>
<div class="col-8"> Column </div>
</div>
</div>
La combinación del sistema de grillas con los puntos de interrupción, es la unión perfecta
para colocar nuestro contenido en la web según cada criterio de diseño y con la posibilidad
de adaptarlo y ordenarlo al tamaño de pantalla donde se esté mostrando.
xs sm md lg xl xxl
<576px ≥576px ≥768px ≥992px ≥1200px ≥1400p
x
# de columnas 12
Puntos de interrupción
13
correctamente a la pantalla del dispositivo donde se esté mostrando. Por esta razón
debemos conocer en detalle cuáles son los infijos de clases y el rango de píxeles de pantallas
en los que son identificados. (Ver Tabla 1.1)
Nota: Es importante recordar que el concepto responsive hace alusión a un diseño que sea
accesible y adaptable a todos los dispositivos.
Breakpoint Infijo de clase Dimensiones
Pequeña sm ≥576px
Medio md ≥768px
Grande lg ≥992px
Columnas Responsive
De acuerdo a lo expresado arriba, podemos utilizar los puntos de interrupción para lograr un
diseño ajustable como sigue:
<div class="container">
<div class="row">
<div class="col-sm-4"> .col-sm-4 </div>
<div class="col-sm-8"> .col-sm-8 </div>
</div>
</div>
<div class="container">
14
<div class="row">
<div class="col"> .col</div>
<div class="col-6"> .col-6 </div>
<div class="col"> .col</div>
</div>
</div>
Contenido
Imágenes
El framework, para el caso de las imágenes, nos propone una serie de clases con el objetivo
de hacerlas adaptables y/o que nunca sean más grandes que las columnas que la contienen.
Ejemplo:
15
<img src="..." class="rounded float-start" alt="...">
<img src="..." class="rounded float-end" alt="...">
16
Tablas
Ejemplo:
<table class="table">
<thead>
<tr>
<th scope="col">Nro</th>
<th scope="col">Nombre</th>
<th scope="col">Apellido/th>
</tr>
</thead>
<tbody>
<tr>
<th scope="row">1</th>
<td>Maximiliano</td>
<td>Guerra</td>
</tr>
<tr>
<th scope="row">2</th>
<td>Erik</td>
<td>Thomas</td>
</tr>
</tbody>
</table>
17
También se puede hacer uso de las clases contextuales para dar color a las tablas, de la
misma forma que a cualquier otro elemento. (ver Figura 1.3 )
18
<!-- On cells (`td` or `th`) -->
<tr>
<td class="table-primary">...</td>
<td class="table-secondary">...</td>
<td class="table-success">...</td>
<td class="table-danger">...</td>
<td class="table-warning">...</td>
<td class="table-info">...</td>
<td class="table-light">...</td>
<td class="table-dark">...</td>
</tr>
Figuras
Ejemplo:
<figure class="figure">
<img src="..." class="figure-img img-fluid rounded" alt="...">
<figcaption class="figure-caption">Figura 1.2</figcaption>
</figure>
19
Formularios
Introducción
Al igual que las imágenes, bootstrap provee un grupo de clases para la presentación de los
controles dentro de un formulario.
Ejemplo:
<form>
<div class="mb-3">
<label for="idE" class="form-label">Correo</label>
<input type="email" class="form-control" id="idE"
aria-describedby="idEH">
<div id="idEH" class="form-text">Debe ser un correo válido.</div>
</div>
<div class="mb-3">
<label for="exampleInputPassword1"
class="form-label">Password</label>
<input type="password" class="form-control"
id="exampleInputPassword1">
</div>
<div class="mb-3 form-check">
<input type="checkbox" class="form-check-input"
id="exampleCheck1">
<label class="form-check-label"
for="exampleCheck1">Recordarme</label>
</div>
20
<button type="submit" class="btn btn-primary">Enviar</button>
</form>
Controles
Los controles dentro de un formulario pueden ser personalizados e incluso utilizados de
forma adaptativa, gracias a las clases provistas por bootstrap.
Dimensionamiento:
● .form-control-sm (tamaño pequeño)
● .form-control (tamaño normal)
● .form-control-lg (tamaño grande)
Habilitado:
● Atributo disabled (Control deshabilitado)
● Atributo readonly (Control sólo lectura)
● Atributos disabled readonly (Control deshabilitado, sólo lectura)
Layout
Ya que Bootstrap se emplea display: block y width: 100% para casi todos los controles del
formulario, los formularios se mostrarán por defecto de manera vertical. Se pueden usar
clases adicionales para variar este diseño en función de cada formulario.”
https://getbootstrap.com/docs/5.0/forms/layout/
21
Componentes
Alertas
Este componente es muy utilizado a la hora de mostrar mensajes al usuario de forma flexible
y de una manera más amigable. Las alertas son consecuentes con los estilos de colores que
propone el framework (ver Figura 1.4)
Ejemplo:
22
<div class="alert alert-primary" role="alert">
A simple primary alert—check it out!
</div>
<div class="alert alert-secondary" role="alert">
A simple secondary alert—check it out!
</div>
<div class="alert alert-success" role="alert">
A simple success alert—check it out!
</div>
<div class="alert alert-danger" role="alert">
A simple danger alert—check it out!
</div>
<div class="alert alert-warning" role="alert">
A simple warning alert—check it out!
</div>
<div class="alert alert-info" role="alert">
A simple info alert—check it out!
</div>
<div class="alert alert-light" role="alert">
A simple light alert—check it out!
</div>
<div class="alert alert-dark" role="alert">
A simple dark alert—check it out!
</div>
Botones
Al igual que el resto de los controles, los botones incluyen el estilo predefinido. (ver Figura
1.5)
Ejemplo:
<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>
23
<button type="button" class="btn btn-link">Link</button>
Barra de navegación
Por último abordaremos el tema de la barra de navegación, elemento muy utilizado en el
desarrollo de aplicaciones web. A continuación citamos las principales reglas para el uso de
la barra de navegación. (ver Figura 1.6)
Referencias
1. https://semver.org/
2. https://es.wikipedia.org/wiki/Bootstrap_(framework)
3. https://getbootstrap.com/
24