# Bootstrap (framework)

Bootstrap est une collection d'outils utiles à la création du design (graphisme, animation et interactions avec la page dans le navigateur, etc.) de sites et d'applications web. C'est un ensemble qui contient des codes HTML et CSS, des formulaires, boutons, outils de navigation et autres éléments interactifs, ainsi que des extensions JavaScript en option. C'est l'un des projets les plus populaires sur la plate-forme de gestion de développement GitHub.

## Historique
### Débuts chez Twitter

Avant l'arrivée de Bootstrap, plusieurs bibliothèques existaient, ce qui menait à des incohérences et à un coût de maintenance élevé.
Cette plate-forme a été conçue par deux développeurs faisant partie de la mouvance de développeurs qui gravitent autour de Twitter, Mark Otto et Jacob Thornton, et avait le nom de Twitter Blueprint en 2010.
Le premier déploiement à échelle réelle eut lieu lors de la première hackweek organisée par Twitter.
En août 2011, Twitter place Bootstrap sous licence open source.

### Bootstrap 2 et 3

Bootstrap 2 a été lancé le 31 janvier 2012, en ajoutant un support intégré pour les Glyphicons, plusieurs nouveaux composants, ainsi que des modifications à de nombreux composants existants. Cette version prend en charge la conception de sites web réactifs. Cela signifie que la mise en page des pages web s'ajuste dynamiquement, en tenant compte des caractéristiques de l'appareil utilisé (bureau, tablette, téléphone portable).
La version majeure suivante, Bootstrap 3, est sortie le 19 août 2013. Elle a redessiné les composants pour utiliser le flat design, et une approche mobile-first.

### Bootstrap 4

Mark Otto a annoncé Bootstrap 4 le 29 octobre 2014 en même temps que la sortie de Boostrap 3.3.0. La première version alpha de Bootstrap 4 est sortie le 19 août 2015 et la première version bêta presque deux ans plus tard, le 10 août 2017. Mark a suspendu les travaux sur Bootstrap 3 le 6 septembre 2016, afin de libérer du temps pour travailler sur Bootstrap 4. Bootstrap 4 a été finalisée le 18 janvier 2018.
Il en résulte une réécriture massive du code, en en profitant pour remplacer le préprocesseur utilisé LESS par SASS, et en abandonnant le support pour les systèmes IE8, IE9 et iOS 6. Le support de CSS flexbox est également présent, et de nombreuses classes utilitaires et options de personnalisations ont aussi été ajoutées.
Bootstrap 4 prend en charge les dernières versions de Google Chrome, Firefox, Internet Explorer, Opera et Safari (sauf sur Windows). Il prend également en charge la dernière version de Firefox ESR.

### Bootstrap 5
#### Version alpha

La version alpha de la version 5 de Bootstrap est sortie le 16 juin 2020.
Changements majeurs :
* Abandon de la bibliothèque jQuery en faveur de simple Javascript
* Abandon du support pour le navigateur Internet Explorer 10 et Internet Explorer 11
* Amélioration de l'API
* Ajout d'une bibliothèque spécifique d'icônes

#### Version bêta

La version bêta de la version 5 de Bootstrap a été officiellement publié le 7 décembre 2020, soit trois semaines après le lancement de la troisième alpha.
La version 5 bêta 2 est actuellement la dernière itération du package.
Les changements majeurs incluent :
* Support RTL - Affichage de texte "de droite à gauche" pour p.e. Langues arabes
* Classes renommées pour les propriétés logiques
* Mise à jour vers Popper.js v2
* Attributs de données avec espace de nom
* Améliorations de JavaScript et corrections de bogues
* API améliorée - états dans les utilitaires
Les changements en cours d'implémentation sont :
* Système de module Sass
* Utilisation accrue des propriétés personnalisées CSS
* Incorporation des SVG dans HTML au lieu de CSS
Les premiers cas d'utilisation de la version Bootstrap 5 bêta sont apparus quelques jours seulement après la première officielle, et incluent notamment le kit d'interface utilisateur de Material Design, MDB 5, pour Bootstrap 5. MDB a également été le premier à intégrer la dernière version de Bootstrap avec les technologies frontales les plus populaires telles que Angular, React et Vue.
En février 2021, Bootstrap était le dixième projet le plus populaire sur GitHub.

## Généralités

Bootstrap est compatible avec les dernières versions des navigateurs majeurs, mais peut fonctionner de manière dégradée sur des navigateurs plus anciens.
Depuis la version 2, le framework adopte la conception de sites web adaptatifs, permettant aux projets utilisant Bootstrap de s'adapter dynamiquement au format des supports depuis lesquels on accède (PC, tablette, smartphone).

## Fonctionnalités
### Fonctionnement

La modularité de Bootstrap consiste en une série de feuilles de styles LESS (à partir de la version 4 SASS) qui implémentent différents composants du toolkit. Une feuille de style principale (bootstrap.less) englobe les feuilles de style des composants. Les développeurs peuvent alors sélectionner les composants dont ils ont besoin en modifiant cette feuille principale. L'utilisation de LESS permet la manipulation de variables, de fonctions, d'opérateurs, sélecteurs…
Depuis la version 2, Bootstrap dispose d'une option supplémentaire de « personnalisation ».
Le système de grille et le style adaptatif sont standardisés sur une grille de 940 pixels de large, que les développeurs peuvent adapter. Ces définitions sont déclinées en quatre variations qui peuvent être utilisées dans différents formats et supports : téléphones (portrait et paysage), tablette et PC (haute et basse résolution). Ces déclinaisons adaptent automatiquement l'affichage de la page.

### Standardisation

Bootstrap fournit une feuille de style CSS qui contient des définitions de base pour tous les composants HTML, ce qui permet de disposer d'une apparence uniforme pour les textes, tableaux et les éléments de formulaires.
Le framework fournit également nombre d'éléments graphiques au format standardisé : boutons, libellés, icônes, miniatures, barres de progression…

### Javascript

Bootstrap fournit plusieurs composants sous forme de plugins utilisant la bibliothèque jQuery. Ces composants permettent l'addition de nouvelles fonctionnalités au niveau de l'interface (tooltip, carrousels…) mais aussi d'améliorer le fonctionnement de composants existants (auto-complétion…).
D'autres plugins permettent à Bootstrap de s'intégrer à des frameworks tiers comme Dojo Toolkit (Dojo Bootstrap) et AngularJS (UI Bootstrap) ou AngularStrap.