SlideShare a Scribd company logo
BOOTSTRAP









Workshop “Bootstrap vs Foundation” 

18 Febbraio 2015 - Comm-it



Docente: Antonio Russo

antonio@porp.it
BOOTSTRAP
• È il progetto più popolare sulla piattaforma GitHub, con oltre 58.000 star e più di 20.000 fork;
• Secondo recenti statistiche tracce del codice di questo framework si ritrovano sull’1% dei siti web mondiali, una cifra che
tradotta in termini assoluti si traduce in un numero senz’altro ragguardevole;
• Gode di un supporto nella community degli sviluppatori che non ha pari rispetto agli front-end framework;
• Chi lo usa può contare su una mole enorme di risorse e ausilii di ogni tipo;
• È diventato una sorta di standard de facto come punto di partenza in ambiti come la creazione di template HTML
preconfezionati e temi per i principali CMS, soprattutto in un’ottica responsiva.
(fonte: HTML.it)
un pò di numeri:
FRAMEWORK FRONTEND
• Insieme di componenti CSS + JS + HTML atte a desrivere e definire i più comuni pattern di UI/UX
• Sistema di griglie che possa garantire la visualizzazione e l’integrità del layout su più piattaforme

• Garantire compatibilità e scalabilità su browser più datati 

NB: questo non significa che tutti i framework frontend lo facciano al 100%, per esempio Bootstrap lo fa a determinate
condizioni, quelle cioè, che siano integrati dei javascript adatti.
http://getbootstrap.com/
http://creativemoka.com/commit.zip
ASSETS DI UN PROGETTO BOOTSTRAP
Bootstrap viene distribuito in un unico file .zip contenente solo le directory:
fonts, js, css senza HTML di base (index.html) che potremo inserire noi per
organizzare la struttura del nostro sito in piena libertà.
Dipendeze:
SISTEMA DI GRIGLIE
Il sistema di griglie di Bootstrap è organizzato in 12 colonne ed è pensato per realizzare layout responsivi. 

La dimensione di ogni colonna è data quindi dalla percentuale in larghezza che essa occuperà all’interno dello spazio.
Ogni colonna può assumere di conseguenza una certa dimensione in relazione al suo contenitore, questo è un ottimo stratagemma per
implementare layout responsive.
SISTEMA DI GRIGLIE
Markup HTML in dettaglio:
<div class=“row”>
<div class=“col-md-4”> … </div>
<div class=“col-md-4”> … </div>
<div class=“col-md-4”> … </div>
</div>
col-md-4 col-md-4 col-md-4
Risultato:
La casse “row” serve a definire una riga di elementi “col-*-*”, in una .row non ci dovrebbero essere più di 12 colonne 

((o una combinazione di col-*-* il cui risultato è comunque 12)).

Quindi una row è un’insieme di colonne disposte orizzontalmente
SISTEMA DI GRIGLIE
Altro esempio:
<div class=“row”>
<div class=“col-md-6”> … </div>
<div class=“col-md-4”> … </div>
<div class=“col-md-2”> … </div>
</div>
<div class=“row”>
<div class=“col-md-3”> … </div>
<div class=“col-md-3”> … </div>
<div class=“col-md-3”> … </div>
<div class=“col-md-3”> … </div>
</div>
col-md-6 col-md-4 col-md-2
col-md-3 col-md-3 col-md-3 col-md-3
SISTEMA DI GRIGLIE
Semantica delle colonne:
In Bootstrap sono previsti 4 breakpoint fondamentali: 



Il primo, non inserito in una media query, è per schermi con larghezza inferiore a 768px (ovvero larghi fino a 767px). Il secondo è per
schermi con larghezza minima di 768px. Il terzo per schermi con larghezza minima di 992px. Nel quarto breakpoint la larghezza minima
è di 1200px.
(fonte: HTML.it)
/* Primo breakpoint: Schermi fino a 767px */
/* Nessuna media query */
/* Secondo breakpoint: Schermi larghi da 768px in su */
@media (min-width: 768px) { ... }
/* Terzo breakpoint: Schermi larghi da 992px in su */
@media (min-width: 992px) { ... }
/* Quarto brekpoint: Schermi larghi da 1200px in su */
@media (min-width: 1200px) { ... }
SISTEMA DI GRIGLIE
Semantica delle colonne:
A ciascun breakpoint è associato uno specifico prefisso nella definizione delle classi per la griglia:
• Primo breakpoint: col-xs-* (extra-small).
• Secondo breakpoint: col-sm-* (small).
• Terzo breakpoint: col-md-* (medium).
• Quarto brekpoint: col-lg-* (large).
L’asterisco va sostituito con un numero da 1 a 12 che indica il numero di colonne occupato da un elemento.
Passando da un breakpoint all’altro, ovvero al variare della larghezza dello schermo, le colonne si adattano in larghezza a volte
andandosi a posizionare una sotto l’altra. 



Il responsive è servito
(fonte: HTML.it)
SISTEMA DI GRIGLIE
Tabella riassuntiva:
SISTEMA DI GRIGLIE
Questo significa che ogni .row e quindi ogni suo
contenuto si adatterà al 100% all’interno di una
pagina? Se volessi un layout centrato?
SISTEMA DI GRIGLIE
Introduciamo i .container
Le .row che definiscono gruppi di colonne tenderanno ad espandersi al 100% all’interno del loro contenitore, di fatto, perché non hanno
una dimensione definita, quindi se il contenitore di una .row è la pagina stessa allora questa occuperà il 100% dello spazio disponibile.
.row {
margin-right: -15px;
margin-left: -15px;
}
Per ovviare a questo problema, Bootstrap, introduce i container.
Cioè una classe CSS adatta a contenere un numero di .row, ogni .row dovrebbe quindi essere figlia diretta di
un container. 



I container seguono i breakpoint che abbiamo definito precedentemente.
Ci sono 2 classi CSS disponibili per i container:
i .container-fluid che ricoprono l’intera dimensione del viewport ed i .container per layout a dimensione fissa
SISTEMA DI GRIGLIE
Riassumendo:
• Le .row devono essere inserite in un .container o in un .fluid-container
• Le .row vengon usate per creare gruppi di colonne ( .col-*-* )
• I contenuti dovrebbero essere inseriti all’interno delle colonne e le colonne dovrebbero essere figlie dirette delle .row
• Classi come, per esempio, col-md-4 o col-xs-12, sono disponibili per creare layout griglia
• Le colonne creano spazi tra di loro utilizzando il padding (15px).
• Le colonne sono definite usando un numero da 1 a 12 che indica in percentuale lo spazio che esse dovranno occupare nello
spazio, quindi se volessimo incolonnare 3 colonne una di seguito all’altra dovremmo usare 3 colonne con classe col-md-4.
• Se in una .row ci sono più di 12 colonne, le successive verranno visualizzate in una nuova .row
SISTEMA DI GRIGLIE
Tips:
• E’ possibile innestare più conteiner all’interno di uno stesso container.
• E’ possibile aggiungere più classi ad una colonna per esempio:
<div class=“row”>
<div class=“col-md-3 col-xs-6”> … </div>
<div class=“col-md-3 col-xs-6”> … </div>
<div class=“col-md-3 col-xs-6”> … </div>
</div>
CLASSI DI VISIBILITÀ
Può essere utili ai fini del layout nascondere alcuni elementi o visualizzarli solo a determinate dimensioni di schermo.
Bootstrap mette quindi a disposizione le classi di visibilità:
• visible-xs per extra-small;
• visible-sm per small
• visible-md per medium;
• visible-lg per large.
COMPONENTI
PULSANTI E GLYPHS
Bootstrap provvede ad offrire una serie di classi per pulsanti e relative icone.
<a href=“#” class=“btn btn-default”>Pulsante</a>
<button type=“submit” class=“btn btn-default”>Pulsante</a>
<a href=“#” class=“btn btn-default”><span class=“glyphicon glyphicon-plus”> Pulsante</a>
<button type=“submit” class=“btn btn-default”><span class=“glyphicon glyphicon-plus”> Pulsante</a>
La classe btn-default provvede a colorare il pulsante di bianco, esistono altre 5 classi colore che possono essere usate al
posto di questa per colorare diversamente il pulsante, nello specifico:
btn-primary, btn-success, btn-info, btn-warning, btn-danger
NAVBAR
Le Navbar sono forse uno degli strumenti più usati di Bootstrap e servono a definire le tipiche di navigazione orizzontale che
troviamo maggiormente online negli header dei siti web.

Le Navbar di Bootstrap, inoltre, su mobile vengono visualizzate come un tipico menù a discesa.
http://getbootstrap.com/components/#navbar
CAROUSEL
E’ un componente per creare slider di immagini, non prevede sliders innestati.
http://getbootstrap.com/javascript/#carousel
TAB
http://getbootstrap.com/javascript/#tabs
Permette di organizzare i contenuti locali in tab selezionabili, è possibile gestire anche il tipo di animazione
LINKS & UTILITIES
http://nakupanda.github.io/bootstrap3-dialog/
http://wenzhixin.net.cn/p/bootstrap-table/docs/examples.html
http://msurguy.github.io/ladda-bootstrap/
http://jhollingworth.github.io/bootstrap-wysihtml5/

More Related Content

Similar to Bootstrap

Linux Day 2010 - talk about cross browser compatibility and 960 Grid System
Linux Day 2010 - talk about cross browser compatibility and 960 Grid SystemLinux Day 2010 - talk about cross browser compatibility and 960 Grid System
Linux Day 2010 - talk about cross browser compatibility and 960 Grid System
Gianfranco Fedele
 
Grid System
Grid SystemGrid System
Grid System
NaLUG
 
Introduzione a google_app_engine_datastore
Introduzione a google_app_engine_datastoreIntroduzione a google_app_engine_datastore
Introduzione a google_app_engine_datastore
firenze-gtug
 
Html e Css - 2 | WebMaster & WebDesigner
Html e Css - 2 | WebMaster & WebDesignerHtml e Css - 2 | WebMaster & WebDesigner
Html e Css - 2 | WebMaster & WebDesigner
Matteo Magni
 
Html e Css - 2 | WebMaster & WebDesigner
 Html e Css - 2 | WebMaster & WebDesigner Html e Css - 2 | WebMaster & WebDesigner
Html e Css - 2 | WebMaster & WebDesigner
Matteo Magni
 
DotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScriptDotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScriptSinergia Totale
 
Breve introduzione alle tecnologie HTML5 + (DOM) + CSS
Breve introduzione alle tecnologie HTML5 + (DOM) + CSS Breve introduzione alle tecnologie HTML5 + (DOM) + CSS
Breve introduzione alle tecnologie HTML5 + (DOM) + CSS
Giuseppe Vizzari
 
Introduzione a Sass e Less (ITA)
Introduzione a Sass e Less (ITA)Introduzione a Sass e Less (ITA)
Introduzione a Sass e Less (ITA)
Valerio Radice
 
Sencha touch: panoramica e orientamento sul codice
Sencha touch: panoramica e orientamento sul codiceSencha touch: panoramica e orientamento sul codice
Sencha touch: panoramica e orientamento sul codice
Giuseppe Toto
 
Responsive web design spiegato semplice
Responsive web design spiegato sempliceResponsive web design spiegato semplice
Responsive web design spiegato semplice
Lucio Vacchi
 
CSS corso base (classi seconde, mod 1)
CSS corso base (classi seconde, mod 1)CSS corso base (classi seconde, mod 1)
CSS corso base (classi seconde, mod 1)
Matteo Ziviani
 
Community Tour 2009 Windows Azure Overview
Community Tour 2009 Windows Azure OverviewCommunity Tour 2009 Windows Azure Overview
Community Tour 2009 Windows Azure OverviewFabio Cozzolino
 
8 - Web app e CMS - 17/18
8 - Web app e CMS - 17/188 - Web app e CMS - 17/18
8 - Web app e CMS - 17/18
Giuseppe Vizzari
 
Slide sessione Drupal Theming & CSS Framework – Drupal Camp Torino 2010
Slide sessione Drupal Theming & CSS Framework – Drupal Camp Torino 2010Slide sessione Drupal Theming & CSS Framework – Drupal Camp Torino 2010
Slide sessione Drupal Theming & CSS Framework – Drupal Camp Torino 2010
Domenico Monaco
 
HTML (+ DOM) + CSS
HTML (+ DOM) + CSSHTML (+ DOM) + CSS
HTML (+ DOM) + CSS
Giuseppe Vizzari
 
Introduzione a TypeScript
Introduzione a TypeScriptIntroduzione a TypeScript
Introduzione a TypeScriptSinergia Totale
 
HTML e CSS
HTML e CSSHTML e CSS
HTML e CSS
Manuel Scapolan
 
Sistemi - Lezione XIV - Introduzione a HTML
Sistemi - Lezione XIV - Introduzione a HTMLSistemi - Lezione XIV - Introduzione a HTML
Sistemi - Lezione XIV - Introduzione a HTMLUniversity of Catania
 
Html e Css - 3 | WebMaster & WebDesigner
Html e Css - 3 | WebMaster & WebDesignerHtml e Css - 3 | WebMaster & WebDesigner
Html e Css - 3 | WebMaster & WebDesigner
Matteo Magni
 
8 - Web App e CMS - 16/17
8 - Web App e CMS - 16/178 - Web App e CMS - 16/17
8 - Web App e CMS - 16/17
Giuseppe Vizzari
 

Similar to Bootstrap (20)

Linux Day 2010 - talk about cross browser compatibility and 960 Grid System
Linux Day 2010 - talk about cross browser compatibility and 960 Grid SystemLinux Day 2010 - talk about cross browser compatibility and 960 Grid System
Linux Day 2010 - talk about cross browser compatibility and 960 Grid System
 
Grid System
Grid SystemGrid System
Grid System
 
Introduzione a google_app_engine_datastore
Introduzione a google_app_engine_datastoreIntroduzione a google_app_engine_datastore
Introduzione a google_app_engine_datastore
 
Html e Css - 2 | WebMaster & WebDesigner
Html e Css - 2 | WebMaster & WebDesignerHtml e Css - 2 | WebMaster & WebDesigner
Html e Css - 2 | WebMaster & WebDesigner
 
Html e Css - 2 | WebMaster & WebDesigner
 Html e Css - 2 | WebMaster & WebDesigner Html e Css - 2 | WebMaster & WebDesigner
Html e Css - 2 | WebMaster & WebDesigner
 
DotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScriptDotNetToscana - Sessione TypeScript
DotNetToscana - Sessione TypeScript
 
Breve introduzione alle tecnologie HTML5 + (DOM) + CSS
Breve introduzione alle tecnologie HTML5 + (DOM) + CSS Breve introduzione alle tecnologie HTML5 + (DOM) + CSS
Breve introduzione alle tecnologie HTML5 + (DOM) + CSS
 
Introduzione a Sass e Less (ITA)
Introduzione a Sass e Less (ITA)Introduzione a Sass e Less (ITA)
Introduzione a Sass e Less (ITA)
 
Sencha touch: panoramica e orientamento sul codice
Sencha touch: panoramica e orientamento sul codiceSencha touch: panoramica e orientamento sul codice
Sencha touch: panoramica e orientamento sul codice
 
Responsive web design spiegato semplice
Responsive web design spiegato sempliceResponsive web design spiegato semplice
Responsive web design spiegato semplice
 
CSS corso base (classi seconde, mod 1)
CSS corso base (classi seconde, mod 1)CSS corso base (classi seconde, mod 1)
CSS corso base (classi seconde, mod 1)
 
Community Tour 2009 Windows Azure Overview
Community Tour 2009 Windows Azure OverviewCommunity Tour 2009 Windows Azure Overview
Community Tour 2009 Windows Azure Overview
 
8 - Web app e CMS - 17/18
8 - Web app e CMS - 17/188 - Web app e CMS - 17/18
8 - Web app e CMS - 17/18
 
Slide sessione Drupal Theming & CSS Framework – Drupal Camp Torino 2010
Slide sessione Drupal Theming & CSS Framework – Drupal Camp Torino 2010Slide sessione Drupal Theming & CSS Framework – Drupal Camp Torino 2010
Slide sessione Drupal Theming & CSS Framework – Drupal Camp Torino 2010
 
HTML (+ DOM) + CSS
HTML (+ DOM) + CSSHTML (+ DOM) + CSS
HTML (+ DOM) + CSS
 
Introduzione a TypeScript
Introduzione a TypeScriptIntroduzione a TypeScript
Introduzione a TypeScript
 
HTML e CSS
HTML e CSSHTML e CSS
HTML e CSS
 
Sistemi - Lezione XIV - Introduzione a HTML
Sistemi - Lezione XIV - Introduzione a HTMLSistemi - Lezione XIV - Introduzione a HTML
Sistemi - Lezione XIV - Introduzione a HTML
 
Html e Css - 3 | WebMaster & WebDesigner
Html e Css - 3 | WebMaster & WebDesignerHtml e Css - 3 | WebMaster & WebDesigner
Html e Css - 3 | WebMaster & WebDesigner
 
8 - Web App e CMS - 16/17
8 - Web App e CMS - 16/178 - Web App e CMS - 16/17
8 - Web App e CMS - 16/17
 

More from Commit University

Alla scoperta dei Vector Database e dei RAG
Alla scoperta dei Vector Database e dei RAGAlla scoperta dei Vector Database e dei RAG
Alla scoperta dei Vector Database e dei RAG
Commit University
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
Commit University
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Commit University
 
Breaking REST Chains_ A Fastify & Mercurius Pathway to GraphQL Glory.pdf
Breaking REST Chains_ A Fastify & Mercurius Pathway to GraphQL Glory.pdfBreaking REST Chains_ A Fastify & Mercurius Pathway to GraphQL Glory.pdf
Breaking REST Chains_ A Fastify & Mercurius Pathway to GraphQL Glory.pdf
Commit University
 
Accelerating API Development: A Pit Stop with Gin-Gonic in Golang-Slide.pdf
Accelerating API Development: A Pit Stop with Gin-Gonic in Golang-Slide.pdfAccelerating API Development: A Pit Stop with Gin-Gonic in Golang-Slide.pdf
Accelerating API Development: A Pit Stop with Gin-Gonic in Golang-Slide.pdf
Commit University
 
Slide-10years.pdf
Slide-10years.pdfSlide-10years.pdf
Slide-10years.pdf
Commit University
 
Collaborazione, Decisionalità e Gestione della Complessità nel Tempo: cosa ...
Collaborazione, Decisionalità e Gestione della Complessità nel Tempo: cosa ...Collaborazione, Decisionalità e Gestione della Complessità nel Tempo: cosa ...
Collaborazione, Decisionalità e Gestione della Complessità nel Tempo: cosa ...
Commit University
 
Vue.js slots.pdf
Vue.js slots.pdfVue.js slots.pdf
Vue.js slots.pdf
Commit University
 
Commit - Qwik il framework che ti stupirà.pptx
Commit - Qwik il framework che ti stupirà.pptxCommit - Qwik il framework che ti stupirà.pptx
Commit - Qwik il framework che ti stupirà.pptx
Commit University
 
Sviluppare da zero una Angular Web App per la PA
Sviluppare da zero una Angular Web App per la PASviluppare da zero una Angular Web App per la PA
Sviluppare da zero una Angular Web App per la PA
Commit University
 
Backstage l'Internal Developer Portal Open Source per una migliore Developer ...
Backstage l'Internal Developer Portal Open Source per una migliore Developer ...Backstage l'Internal Developer Portal Open Source per una migliore Developer ...
Backstage l'Internal Developer Portal Open Source per una migliore Developer ...
Commit University
 
Prisma the ORM that node was waiting for
Prisma the ORM that node was waiting forPrisma the ORM that node was waiting for
Prisma the ORM that node was waiting for
Commit University
 
Decision-making for Software Development Teams - Commit University
Decision-making for Software Development Teams - Commit UniversityDecision-making for Software Development Teams - Commit University
Decision-making for Software Development Teams - Commit University
Commit University
 
Component Design Pattern nei Game Engine.pdf
Component Design Pattern nei Game Engine.pdfComponent Design Pattern nei Game Engine.pdf
Component Design Pattern nei Game Engine.pdf
Commit University
 
Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...
Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...
Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...
Commit University
 
Prototipazione Low-Code con AWS Step Functions
Prototipazione Low-Code con AWS Step FunctionsPrototipazione Low-Code con AWS Step Functions
Prototipazione Low-Code con AWS Step Functions
Commit University
 
KMM survival guide: how to tackle struggles between Kotlin and Swift
KMM survival guide: how to tackle struggles between Kotlin and SwiftKMM survival guide: how to tackle struggles between Kotlin and Swift
KMM survival guide: how to tackle struggles between Kotlin and Swift
Commit University
 
Da Vuex a Pinia: come fare la migrazione
Da Vuex a Pinia: come fare la migrazioneDa Vuex a Pinia: come fare la migrazione
Da Vuex a Pinia: come fare la migrazione
Commit University
 
Orchestrare Micro-frontend con micro-lc
Orchestrare Micro-frontend con micro-lcOrchestrare Micro-frontend con micro-lc
Orchestrare Micro-frontend con micro-lc
Commit University
 
Fastify has defeated Lagacy-Code
Fastify has defeated Lagacy-CodeFastify has defeated Lagacy-Code
Fastify has defeated Lagacy-Code
Commit University
 

More from Commit University (20)

Alla scoperta dei Vector Database e dei RAG
Alla scoperta dei Vector Database e dei RAGAlla scoperta dei Vector Database e dei RAG
Alla scoperta dei Vector Database e dei RAG
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)Crea il tuo assistente AI con lo Stregatto (open source python framework)
Crea il tuo assistente AI con lo Stregatto (open source python framework)
 
Breaking REST Chains_ A Fastify & Mercurius Pathway to GraphQL Glory.pdf
Breaking REST Chains_ A Fastify & Mercurius Pathway to GraphQL Glory.pdfBreaking REST Chains_ A Fastify & Mercurius Pathway to GraphQL Glory.pdf
Breaking REST Chains_ A Fastify & Mercurius Pathway to GraphQL Glory.pdf
 
Accelerating API Development: A Pit Stop with Gin-Gonic in Golang-Slide.pdf
Accelerating API Development: A Pit Stop with Gin-Gonic in Golang-Slide.pdfAccelerating API Development: A Pit Stop with Gin-Gonic in Golang-Slide.pdf
Accelerating API Development: A Pit Stop with Gin-Gonic in Golang-Slide.pdf
 
Slide-10years.pdf
Slide-10years.pdfSlide-10years.pdf
Slide-10years.pdf
 
Collaborazione, Decisionalità e Gestione della Complessità nel Tempo: cosa ...
Collaborazione, Decisionalità e Gestione della Complessità nel Tempo: cosa ...Collaborazione, Decisionalità e Gestione della Complessità nel Tempo: cosa ...
Collaborazione, Decisionalità e Gestione della Complessità nel Tempo: cosa ...
 
Vue.js slots.pdf
Vue.js slots.pdfVue.js slots.pdf
Vue.js slots.pdf
 
Commit - Qwik il framework che ti stupirà.pptx
Commit - Qwik il framework che ti stupirà.pptxCommit - Qwik il framework che ti stupirà.pptx
Commit - Qwik il framework che ti stupirà.pptx
 
Sviluppare da zero una Angular Web App per la PA
Sviluppare da zero una Angular Web App per la PASviluppare da zero una Angular Web App per la PA
Sviluppare da zero una Angular Web App per la PA
 
Backstage l'Internal Developer Portal Open Source per una migliore Developer ...
Backstage l'Internal Developer Portal Open Source per una migliore Developer ...Backstage l'Internal Developer Portal Open Source per una migliore Developer ...
Backstage l'Internal Developer Portal Open Source per una migliore Developer ...
 
Prisma the ORM that node was waiting for
Prisma the ORM that node was waiting forPrisma the ORM that node was waiting for
Prisma the ORM that node was waiting for
 
Decision-making for Software Development Teams - Commit University
Decision-making for Software Development Teams - Commit UniversityDecision-making for Software Development Teams - Commit University
Decision-making for Software Development Teams - Commit University
 
Component Design Pattern nei Game Engine.pdf
Component Design Pattern nei Game Engine.pdfComponent Design Pattern nei Game Engine.pdf
Component Design Pattern nei Game Engine.pdf
 
Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...
Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...
Un viaggio alla scoperta dei Language Models e dell’intelligenza artificiale ...
 
Prototipazione Low-Code con AWS Step Functions
Prototipazione Low-Code con AWS Step FunctionsPrototipazione Low-Code con AWS Step Functions
Prototipazione Low-Code con AWS Step Functions
 
KMM survival guide: how to tackle struggles between Kotlin and Swift
KMM survival guide: how to tackle struggles between Kotlin and SwiftKMM survival guide: how to tackle struggles between Kotlin and Swift
KMM survival guide: how to tackle struggles between Kotlin and Swift
 
Da Vuex a Pinia: come fare la migrazione
Da Vuex a Pinia: come fare la migrazioneDa Vuex a Pinia: come fare la migrazione
Da Vuex a Pinia: come fare la migrazione
 
Orchestrare Micro-frontend con micro-lc
Orchestrare Micro-frontend con micro-lcOrchestrare Micro-frontend con micro-lc
Orchestrare Micro-frontend con micro-lc
 
Fastify has defeated Lagacy-Code
Fastify has defeated Lagacy-CodeFastify has defeated Lagacy-Code
Fastify has defeated Lagacy-Code
 

Bootstrap

  • 1.
  • 2. BOOTSTRAP
 
 
 
 
 Workshop “Bootstrap vs Foundation” 
 18 Febbraio 2015 - Comm-it
 
 Docente: Antonio Russo
 antonio@porp.it
  • 3. BOOTSTRAP • È il progetto più popolare sulla piattaforma GitHub, con oltre 58.000 star e più di 20.000 fork; • Secondo recenti statistiche tracce del codice di questo framework si ritrovano sull’1% dei siti web mondiali, una cifra che tradotta in termini assoluti si traduce in un numero senz’altro ragguardevole; • Gode di un supporto nella community degli sviluppatori che non ha pari rispetto agli front-end framework; • Chi lo usa può contare su una mole enorme di risorse e ausilii di ogni tipo; • È diventato una sorta di standard de facto come punto di partenza in ambiti come la creazione di template HTML preconfezionati e temi per i principali CMS, soprattutto in un’ottica responsiva. (fonte: HTML.it) un pò di numeri:
  • 4. FRAMEWORK FRONTEND • Insieme di componenti CSS + JS + HTML atte a desrivere e definire i più comuni pattern di UI/UX • Sistema di griglie che possa garantire la visualizzazione e l’integrità del layout su più piattaforme
 • Garantire compatibilità e scalabilità su browser più datati 
 NB: questo non significa che tutti i framework frontend lo facciano al 100%, per esempio Bootstrap lo fa a determinate condizioni, quelle cioè, che siano integrati dei javascript adatti. http://getbootstrap.com/ http://creativemoka.com/commit.zip
  • 5. ASSETS DI UN PROGETTO BOOTSTRAP Bootstrap viene distribuito in un unico file .zip contenente solo le directory: fonts, js, css senza HTML di base (index.html) che potremo inserire noi per organizzare la struttura del nostro sito in piena libertà. Dipendeze:
  • 6. SISTEMA DI GRIGLIE Il sistema di griglie di Bootstrap è organizzato in 12 colonne ed è pensato per realizzare layout responsivi. 
 La dimensione di ogni colonna è data quindi dalla percentuale in larghezza che essa occuperà all’interno dello spazio. Ogni colonna può assumere di conseguenza una certa dimensione in relazione al suo contenitore, questo è un ottimo stratagemma per implementare layout responsive.
  • 7. SISTEMA DI GRIGLIE Markup HTML in dettaglio: <div class=“row”> <div class=“col-md-4”> … </div> <div class=“col-md-4”> … </div> <div class=“col-md-4”> … </div> </div> col-md-4 col-md-4 col-md-4 Risultato: La casse “row” serve a definire una riga di elementi “col-*-*”, in una .row non ci dovrebbero essere più di 12 colonne 
 ((o una combinazione di col-*-* il cui risultato è comunque 12)).
 Quindi una row è un’insieme di colonne disposte orizzontalmente
  • 8. SISTEMA DI GRIGLIE Altro esempio: <div class=“row”> <div class=“col-md-6”> … </div> <div class=“col-md-4”> … </div> <div class=“col-md-2”> … </div> </div> <div class=“row”> <div class=“col-md-3”> … </div> <div class=“col-md-3”> … </div> <div class=“col-md-3”> … </div> <div class=“col-md-3”> … </div> </div> col-md-6 col-md-4 col-md-2 col-md-3 col-md-3 col-md-3 col-md-3
  • 9. SISTEMA DI GRIGLIE Semantica delle colonne: In Bootstrap sono previsti 4 breakpoint fondamentali: 
 
 Il primo, non inserito in una media query, è per schermi con larghezza inferiore a 768px (ovvero larghi fino a 767px). Il secondo è per schermi con larghezza minima di 768px. Il terzo per schermi con larghezza minima di 992px. Nel quarto breakpoint la larghezza minima è di 1200px. (fonte: HTML.it) /* Primo breakpoint: Schermi fino a 767px */ /* Nessuna media query */ /* Secondo breakpoint: Schermi larghi da 768px in su */ @media (min-width: 768px) { ... } /* Terzo breakpoint: Schermi larghi da 992px in su */ @media (min-width: 992px) { ... } /* Quarto brekpoint: Schermi larghi da 1200px in su */ @media (min-width: 1200px) { ... }
  • 10. SISTEMA DI GRIGLIE Semantica delle colonne: A ciascun breakpoint è associato uno specifico prefisso nella definizione delle classi per la griglia: • Primo breakpoint: col-xs-* (extra-small). • Secondo breakpoint: col-sm-* (small). • Terzo breakpoint: col-md-* (medium). • Quarto brekpoint: col-lg-* (large). L’asterisco va sostituito con un numero da 1 a 12 che indica il numero di colonne occupato da un elemento. Passando da un breakpoint all’altro, ovvero al variare della larghezza dello schermo, le colonne si adattano in larghezza a volte andandosi a posizionare una sotto l’altra. 
 
 Il responsive è servito (fonte: HTML.it)
  • 12. SISTEMA DI GRIGLIE Questo significa che ogni .row e quindi ogni suo contenuto si adatterà al 100% all’interno di una pagina? Se volessi un layout centrato?
  • 13. SISTEMA DI GRIGLIE Introduciamo i .container Le .row che definiscono gruppi di colonne tenderanno ad espandersi al 100% all’interno del loro contenitore, di fatto, perché non hanno una dimensione definita, quindi se il contenitore di una .row è la pagina stessa allora questa occuperà il 100% dello spazio disponibile. .row { margin-right: -15px; margin-left: -15px; } Per ovviare a questo problema, Bootstrap, introduce i container. Cioè una classe CSS adatta a contenere un numero di .row, ogni .row dovrebbe quindi essere figlia diretta di un container. 
 
 I container seguono i breakpoint che abbiamo definito precedentemente. Ci sono 2 classi CSS disponibili per i container: i .container-fluid che ricoprono l’intera dimensione del viewport ed i .container per layout a dimensione fissa
  • 14. SISTEMA DI GRIGLIE Riassumendo: • Le .row devono essere inserite in un .container o in un .fluid-container • Le .row vengon usate per creare gruppi di colonne ( .col-*-* ) • I contenuti dovrebbero essere inseriti all’interno delle colonne e le colonne dovrebbero essere figlie dirette delle .row • Classi come, per esempio, col-md-4 o col-xs-12, sono disponibili per creare layout griglia • Le colonne creano spazi tra di loro utilizzando il padding (15px). • Le colonne sono definite usando un numero da 1 a 12 che indica in percentuale lo spazio che esse dovranno occupare nello spazio, quindi se volessimo incolonnare 3 colonne una di seguito all’altra dovremmo usare 3 colonne con classe col-md-4. • Se in una .row ci sono più di 12 colonne, le successive verranno visualizzate in una nuova .row
  • 15. SISTEMA DI GRIGLIE Tips: • E’ possibile innestare più conteiner all’interno di uno stesso container. • E’ possibile aggiungere più classi ad una colonna per esempio: <div class=“row”> <div class=“col-md-3 col-xs-6”> … </div> <div class=“col-md-3 col-xs-6”> … </div> <div class=“col-md-3 col-xs-6”> … </div> </div>
  • 16. CLASSI DI VISIBILITÀ Può essere utili ai fini del layout nascondere alcuni elementi o visualizzarli solo a determinate dimensioni di schermo. Bootstrap mette quindi a disposizione le classi di visibilità: • visible-xs per extra-small; • visible-sm per small • visible-md per medium; • visible-lg per large.
  • 18. PULSANTI E GLYPHS Bootstrap provvede ad offrire una serie di classi per pulsanti e relative icone. <a href=“#” class=“btn btn-default”>Pulsante</a> <button type=“submit” class=“btn btn-default”>Pulsante</a> <a href=“#” class=“btn btn-default”><span class=“glyphicon glyphicon-plus”> Pulsante</a> <button type=“submit” class=“btn btn-default”><span class=“glyphicon glyphicon-plus”> Pulsante</a> La classe btn-default provvede a colorare il pulsante di bianco, esistono altre 5 classi colore che possono essere usate al posto di questa per colorare diversamente il pulsante, nello specifico: btn-primary, btn-success, btn-info, btn-warning, btn-danger
  • 19. NAVBAR Le Navbar sono forse uno degli strumenti più usati di Bootstrap e servono a definire le tipiche di navigazione orizzontale che troviamo maggiormente online negli header dei siti web.
 Le Navbar di Bootstrap, inoltre, su mobile vengono visualizzate come un tipico menù a discesa. http://getbootstrap.com/components/#navbar
  • 20. CAROUSEL E’ un componente per creare slider di immagini, non prevede sliders innestati. http://getbootstrap.com/javascript/#carousel
  • 21. TAB http://getbootstrap.com/javascript/#tabs Permette di organizzare i contenuti locali in tab selezionabili, è possibile gestire anche il tipo di animazione