SlideShare una empresa de Scribd logo
1 de 22
LA METODOLOGIA BEM, SCRIVERE UN
CODICE MIGLIORE PER IL PRESENTE
ED IL FUTURO
Marco Zampetti

frontend developer

Cantiere Creativo
Obiettivo
Introdurvi alla metodologia BEM, per farvi provare con
mano i suoi vantaggi e permettervi di cominciare ad usarlo
da subito.
• prima parte: tante slide sul BEM —> domande
• seconda parte: si scrive il BEM —> ancora più domande
Workshop sul CSS?!
• Scrivere CSS è facile!
• Scrivere CSS che sia mantenibile e scalabile,
sviluppandolo in team, e che permetta di tornare a
lavorarci sopra dopo qualche mese senza
impazzire… è facile?
Problemi
• Non è semplice scrivere codice in team
• Assenza di regole comuni
• Continuare il lavoro degli altri, o rifarlo da capo?
• Scontro tra i nomi
• Riutilizzo
BEM
BEM è una metodologia di nomenclatura che:
1. facilita il riutilizzo del codice, senza rischiare le collisioni
tra le classi

2. rende chiaro il codice e le intenzioni di chi lo ha scritto

3. è più facile da scrivere, e da modificare in futuro
BEM: dare un nome
Dare un nome significa dare un significato, un idea.
Per questo dare un nome alle cose è uno dei due aspetti
difficili nel mondo della programmazione.

Trovare il nome giusto non è immediato è richiede
immaginazione, ovvero la capacità di vedere una cosa nel
mondo reale. (Bruno Munari)
BEM: dare un nome
La prima difficoltà che troverete, forse l’unica nel BEM, è
trovare il nome giusto.



Obiettivo è rendere il nome semplice e chiaro per fare in
modo che sia comprensibile il perché lo avete scelto, il cosa
significa, e permettere di riutilizzarlo quanto possibile.
BEM
Blocchi
Elementi
Modificatori
BEM: blocchi
• sono unità logiche dell’interfaccia che contengono degli elementi, ed
altri blocchi
• un tag non può essere due blocchi
• un blocco vive di vita propria e deve poter essere inserito ovunque
• dunque non dovrebbe avere proprietà che definiscono come funziona
rispetto al suo “mondo esterno”
• per essere più riusabile, il nome del blocco non dovrebbe definire
quello che contiene (page, article), ma quale è la sua conformazione
<div class=“blocco”></div>
BEM: elementi
• sono tutti i componenti di un blocco
• contiene sempre il nome del blocco
• non può stare fuori dal suo blocco
• un tag non può essere due elementi
• deve avere un nome che esprima la sua conformazione, per
essere il più riutilizzabile possibile
<div class=“blocco”>
<div class=“blocco__elemento”></div>

</div>
BEM: modificatori
• si applicano ai blocchi e agli elementi
• modificano il comportamento standard
• solitamente affiancano il nome di base, a meno che non usiate
SASS e un extend della classe base
<div class=“blocco blocco——modificatore”>
<div class=“blocco__elemento”></div>

</div>
BEM: composizione
CSS = Cascading Style Sheets



NO l’ereditarietà delle proprietà, dunque il principio base del
CSS a cui siete abituati.



SI composizione, creazione di unità modulari che possono
essere inserite ovunque.



Un codice più facile da capire, da debuggare, da riutilizzare.
BEM: file system
# stylesheets
/assets/stylesheets/blocks/button.css
/assets/stylesheets/blocks/canvas.css
/assets/stylesheets/blocks/flag.css
Esempio (e spoiler)
.box {
position: relative;
width: 1300px;
}
.box__object {
position: absolute;
}
.box__object——baseline {
bottom: 0;
}
.box__object——left {
left: 160px;
}
<div class="box">

<img src=“assets/images/seaside/sky_day.png" />
<div class="box__object box__object--baseline">
<img src="assets/images/seaside/bg_mountains.png" />
</div>
<div class="box__object box__object--baseline">
<img src="assets/images/seaside/trees.png" />
</div>
<div class="box__object box__object—-baseline box__object——left">
/* house */
</div>
</div>
Tutto chiaro?! :)
Fine prima parte
Gioco collaborativo
• Per iniziare facile costruiamo dei paesaggi, e
come ogni gioco ha le sue regole.
• Collaborativo perché ogni team si deve auto-
organizzare, e ogni team lavorerà con gli altri a
tutti i paesaggi.
Regole del codice
• Ovviamente, rispettate le regole del BEM
• Non utilizzate le immagini come sfondo, utilizzate i tag img che trovate già presenti
• Normalize.css è inserito
• Utilizzate solo nomi inglesi
• Nel CSS utilizzate position absolute e relative, e z-index se necessario
• Utilizzate valori in pixel, non in percentuali
• Mobile first - optional
• Hover per cambio giorno / notte - optional
Directory index
# mockups

/mockups/city.pdf
/mockups/countryside.pdf
/mockups/seaside.pdf
# views
/city.html
/countryside.html
/seaside.html
# stylesheets
/assets/stylesheets/city.css
/assets/stylesheets/countryside.css
/assets/stylesheets/seaside.css
# images
/assets/images/city/
/assets/images/countryside/
/assets/images/seaside/
Primo turno
• Fare una analisi logica dello scenario
• Valutare quali oggetti hanno tratti comuni e allo
stesso tempo diversi
• Pensare ai nomi dei blocchi, e degli elementi
• Pochi blocchi, espliciti, riutilizzabili
Secondo turno
Continuate il lavoro degli altri
Turno bonus
Scegliete una pagina web complessa

(es: Facebook, Gmail)

e provate a strutturarla in BEM!
Fine!
Grazie per aver partecipato :)
Marco Zampetti

m.zampetti@cantierecreativo.net

twitter: @chrome_fate

Más contenido relacionado

Destacado

L'analisi dei dati e la misurazione dei comportamenti emergenti degli utenti
L'analisi dei dati e la misurazione dei comportamenti emergenti degli utentiL'analisi dei dati e la misurazione dei comportamenti emergenti degli utenti
L'analisi dei dati e la misurazione dei comportamenti emergenti degli utentiEmanuela Zaccone
 
Comunicare e lavorare con le immagini
Comunicare e lavorare con le immaginiComunicare e lavorare con le immagini
Comunicare e lavorare con le immaginiInSide Training
 
LOGO DESIGN TALK SHOW (Bob Liuzzo)
LOGO DESIGN TALK SHOW (Bob Liuzzo)LOGO DESIGN TALK SHOW (Bob Liuzzo)
LOGO DESIGN TALK SHOW (Bob Liuzzo)InSide Training
 
Guida al Content Management
Guida al Content ManagementGuida al Content Management
Guida al Content ManagementInSide Training
 
Il Giusto Compenso - Creativity Day 2010
Il Giusto Compenso - Creativity Day 2010Il Giusto Compenso - Creativity Day 2010
Il Giusto Compenso - Creativity Day 2010Dario Banfi
 
Creative Thinking for Innovation
Creative Thinking for InnovationCreative Thinking for Innovation
Creative Thinking for InnovationInSide Training
 
CODE-IN-MOTION: CONIUGARE L'ILLUSTRAZIONE VETTORIALE CON IL CODICE (ILLO Crea...
CODE-IN-MOTION: CONIUGARE L'ILLUSTRAZIONE VETTORIALE CON IL CODICE (ILLO Crea...CODE-IN-MOTION: CONIUGARE L'ILLUSTRAZIONE VETTORIALE CON IL CODICE (ILLO Crea...
CODE-IN-MOTION: CONIUGARE L'ILLUSTRAZIONE VETTORIALE CON IL CODICE (ILLO Crea...InSide Training
 
CONTENUTO, STRATEGIA E STRUMENTI: COSA DETERMINA UN'ESPERIENZA VINCENTE NEL D...
CONTENUTO, STRATEGIA E STRUMENTI: COSA DETERMINA UN'ESPERIENZA VINCENTE NEL D...CONTENUTO, STRATEGIA E STRUMENTI: COSA DETERMINA UN'ESPERIENZA VINCENTE NEL D...
CONTENUTO, STRATEGIA E STRUMENTI: COSA DETERMINA UN'ESPERIENZA VINCENTE NEL D...InSide Training
 
COME GESTIRE IL BUDGET TRA INTEGRATION, DEPLOY E DELIVERY? (Francesco Fullone)
COME GESTIRE IL BUDGET TRA INTEGRATION, DEPLOY E DELIVERY? (Francesco Fullone)COME GESTIRE IL BUDGET TRA INTEGRATION, DEPLOY E DELIVERY? (Francesco Fullone)
COME GESTIRE IL BUDGET TRA INTEGRATION, DEPLOY E DELIVERY? (Francesco Fullone)InSide Training
 
Lavorare meglio e con le persone giuste
Lavorare meglio e con le persone giusteLavorare meglio e con le persone giuste
Lavorare meglio e con le persone giusteGiulio Roggero
 
LE 4 COSE IN CROCE CHE HO IMPARATO SUL DESIGN (Francesco Marino)
LE 4 COSE IN CROCE CHE HO IMPARATO SUL DESIGN (Francesco Marino)LE 4 COSE IN CROCE CHE HO IMPARATO SUL DESIGN (Francesco Marino)
LE 4 COSE IN CROCE CHE HO IMPARATO SUL DESIGN (Francesco Marino)InSide Training
 
Tecniche di sviluppo della creatività
Tecniche di sviluppo della creativitàTecniche di sviluppo della creatività
Tecniche di sviluppo della creativitàbruschetti
 
VISUAL STORYTELLING PER LA MODA E IL MADE IN ITALY
VISUAL STORYTELLING PER LA MODA E IL MADE IN ITALYVISUAL STORYTELLING PER LA MODA E IL MADE IN ITALY
VISUAL STORYTELLING PER LA MODA E IL MADE IN ITALYInSide Training
 
DISRUPTIVE BUSINESS MODEL (Stefano Guerrieri)
DISRUPTIVE BUSINESS MODEL (Stefano Guerrieri)DISRUPTIVE BUSINESS MODEL (Stefano Guerrieri)
DISRUPTIVE BUSINESS MODEL (Stefano Guerrieri)InSide Training
 
COSTRUIRE INTERFACCE WEB UTILIZZANDO REACTJS (Gabriele Petronella)
COSTRUIRE INTERFACCE WEB UTILIZZANDO REACTJS (Gabriele Petronella)COSTRUIRE INTERFACCE WEB UTILIZZANDO REACTJS (Gabriele Petronella)
COSTRUIRE INTERFACCE WEB UTILIZZANDO REACTJS (Gabriele Petronella)InSide Training
 
BEST PRACTICES PER EVITARE GLI ERRORI PIÙ GRAVI QUANDO SI STAMPA ONLINE (Giov...
BEST PRACTICES PER EVITARE GLI ERRORI PIÙ GRAVI QUANDO SI STAMPA ONLINE (Giov...BEST PRACTICES PER EVITARE GLI ERRORI PIÙ GRAVI QUANDO SI STAMPA ONLINE (Giov...
BEST PRACTICES PER EVITARE GLI ERRORI PIÙ GRAVI QUANDO SI STAMPA ONLINE (Giov...InSide Training
 
CONTENT DESIGN. OLTRE LE PAROLE C'È DI PIÙ (Valentina Falcinelli)
CONTENT DESIGN. OLTRE LE PAROLE C'È DI PIÙ (Valentina Falcinelli)CONTENT DESIGN. OLTRE LE PAROLE C'È DI PIÙ (Valentina Falcinelli)
CONTENT DESIGN. OLTRE LE PAROLE C'È DI PIÙ (Valentina Falcinelli)InSide Training
 
Visual storytelling per la moda (Francesca Appi)
Visual storytelling per la moda (Francesca Appi)Visual storytelling per la moda (Francesca Appi)
Visual storytelling per la moda (Francesca Appi)InSide Training
 

Destacado (19)

L'analisi dei dati e la misurazione dei comportamenti emergenti degli utenti
L'analisi dei dati e la misurazione dei comportamenti emergenti degli utentiL'analisi dei dati e la misurazione dei comportamenti emergenti degli utenti
L'analisi dei dati e la misurazione dei comportamenti emergenti degli utenti
 
Comunicare e lavorare con le immagini
Comunicare e lavorare con le immaginiComunicare e lavorare con le immagini
Comunicare e lavorare con le immagini
 
LOGO DESIGN TALK SHOW (Bob Liuzzo)
LOGO DESIGN TALK SHOW (Bob Liuzzo)LOGO DESIGN TALK SHOW (Bob Liuzzo)
LOGO DESIGN TALK SHOW (Bob Liuzzo)
 
Guida al Content Management
Guida al Content ManagementGuida al Content Management
Guida al Content Management
 
Il Giusto Compenso - Creativity Day 2010
Il Giusto Compenso - Creativity Day 2010Il Giusto Compenso - Creativity Day 2010
Il Giusto Compenso - Creativity Day 2010
 
Creative Thinking for Innovation
Creative Thinking for InnovationCreative Thinking for Innovation
Creative Thinking for Innovation
 
CODE-IN-MOTION: CONIUGARE L'ILLUSTRAZIONE VETTORIALE CON IL CODICE (ILLO Crea...
CODE-IN-MOTION: CONIUGARE L'ILLUSTRAZIONE VETTORIALE CON IL CODICE (ILLO Crea...CODE-IN-MOTION: CONIUGARE L'ILLUSTRAZIONE VETTORIALE CON IL CODICE (ILLO Crea...
CODE-IN-MOTION: CONIUGARE L'ILLUSTRAZIONE VETTORIALE CON IL CODICE (ILLO Crea...
 
CONTENUTO, STRATEGIA E STRUMENTI: COSA DETERMINA UN'ESPERIENZA VINCENTE NEL D...
CONTENUTO, STRATEGIA E STRUMENTI: COSA DETERMINA UN'ESPERIENZA VINCENTE NEL D...CONTENUTO, STRATEGIA E STRUMENTI: COSA DETERMINA UN'ESPERIENZA VINCENTE NEL D...
CONTENUTO, STRATEGIA E STRUMENTI: COSA DETERMINA UN'ESPERIENZA VINCENTE NEL D...
 
COME GESTIRE IL BUDGET TRA INTEGRATION, DEPLOY E DELIVERY? (Francesco Fullone)
COME GESTIRE IL BUDGET TRA INTEGRATION, DEPLOY E DELIVERY? (Francesco Fullone)COME GESTIRE IL BUDGET TRA INTEGRATION, DEPLOY E DELIVERY? (Francesco Fullone)
COME GESTIRE IL BUDGET TRA INTEGRATION, DEPLOY E DELIVERY? (Francesco Fullone)
 
Lavorare meglio e con le persone giuste
Lavorare meglio e con le persone giusteLavorare meglio e con le persone giuste
Lavorare meglio e con le persone giuste
 
LE 4 COSE IN CROCE CHE HO IMPARATO SUL DESIGN (Francesco Marino)
LE 4 COSE IN CROCE CHE HO IMPARATO SUL DESIGN (Francesco Marino)LE 4 COSE IN CROCE CHE HO IMPARATO SUL DESIGN (Francesco Marino)
LE 4 COSE IN CROCE CHE HO IMPARATO SUL DESIGN (Francesco Marino)
 
Tecniche di sviluppo della creatività
Tecniche di sviluppo della creativitàTecniche di sviluppo della creatività
Tecniche di sviluppo della creatività
 
Web Marketing Master
Web Marketing MasterWeb Marketing Master
Web Marketing Master
 
VISUAL STORYTELLING PER LA MODA E IL MADE IN ITALY
VISUAL STORYTELLING PER LA MODA E IL MADE IN ITALYVISUAL STORYTELLING PER LA MODA E IL MADE IN ITALY
VISUAL STORYTELLING PER LA MODA E IL MADE IN ITALY
 
DISRUPTIVE BUSINESS MODEL (Stefano Guerrieri)
DISRUPTIVE BUSINESS MODEL (Stefano Guerrieri)DISRUPTIVE BUSINESS MODEL (Stefano Guerrieri)
DISRUPTIVE BUSINESS MODEL (Stefano Guerrieri)
 
COSTRUIRE INTERFACCE WEB UTILIZZANDO REACTJS (Gabriele Petronella)
COSTRUIRE INTERFACCE WEB UTILIZZANDO REACTJS (Gabriele Petronella)COSTRUIRE INTERFACCE WEB UTILIZZANDO REACTJS (Gabriele Petronella)
COSTRUIRE INTERFACCE WEB UTILIZZANDO REACTJS (Gabriele Petronella)
 
BEST PRACTICES PER EVITARE GLI ERRORI PIÙ GRAVI QUANDO SI STAMPA ONLINE (Giov...
BEST PRACTICES PER EVITARE GLI ERRORI PIÙ GRAVI QUANDO SI STAMPA ONLINE (Giov...BEST PRACTICES PER EVITARE GLI ERRORI PIÙ GRAVI QUANDO SI STAMPA ONLINE (Giov...
BEST PRACTICES PER EVITARE GLI ERRORI PIÙ GRAVI QUANDO SI STAMPA ONLINE (Giov...
 
CONTENT DESIGN. OLTRE LE PAROLE C'È DI PIÙ (Valentina Falcinelli)
CONTENT DESIGN. OLTRE LE PAROLE C'È DI PIÙ (Valentina Falcinelli)CONTENT DESIGN. OLTRE LE PAROLE C'È DI PIÙ (Valentina Falcinelli)
CONTENT DESIGN. OLTRE LE PAROLE C'È DI PIÙ (Valentina Falcinelli)
 
Visual storytelling per la moda (Francesca Appi)
Visual storytelling per la moda (Francesca Appi)Visual storytelling per la moda (Francesca Appi)
Visual storytelling per la moda (Francesca Appi)
 

Similar a LA METODOLOGIA BEM, SCRIVERE UN CODICE MIGLIORE PER IL PRESENTE ED IL FUTURO (Marco Zampetti)

BEM - A naming philosophy that just works
BEM - A naming philosophy that just worksBEM - A naming philosophy that just works
BEM - A naming philosophy that just worksAlessandro Muraro
 
Giovambattista Fazioli, 10 more things
Giovambattista Fazioli, 10 more thingsGiovambattista Fazioli, 10 more things
Giovambattista Fazioli, 10 more thingsKnowCamp
 
BEM - A naming methodology that just works
BEM - A naming methodology that just worksBEM - A naming methodology that just works
BEM - A naming methodology that just worksAlessandro Muraro
 
4 dw parte2-modifiche
4 dw parte2-modifiche4 dw parte2-modifiche
4 dw parte2-modificheLab Nova
 
The CSS Survival Manual - Giovanni Buffa (2014)
The CSS Survival Manual - Giovanni Buffa (2014)The CSS Survival Manual - Giovanni Buffa (2014)
The CSS Survival Manual - Giovanni Buffa (2014)Giovanni Buffa
 
Il buon programmatore - consigli pratici per una vita felice
Il buon programmatore - consigli pratici per una vita feliceIl buon programmatore - consigli pratici per una vita felice
Il buon programmatore - consigli pratici per una vita feliceAndrea Dottor
 
Html e Css - 2 | WebMaster & WebDesigner
 Html e Css - 2 | WebMaster & WebDesigner Html e Css - 2 | WebMaster & WebDesigner
Html e Css - 2 | WebMaster & WebDesignerMatteo Magni
 
Html e Css - 2 | WebMaster & WebDesigner
Html e Css - 2 | WebMaster & WebDesignerHtml e Css - 2 | WebMaster & WebDesigner
Html e Css - 2 | WebMaster & WebDesignerMatteo Magni
 
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
 
Con Aruba, a lezione di e-commerce: 'Introduzione ai CSS' - Parte 1
Con Aruba, a lezione di e-commerce: 'Introduzione ai CSS' - Parte 1Con Aruba, a lezione di e-commerce: 'Introduzione ai CSS' - Parte 1
Con Aruba, a lezione di e-commerce: 'Introduzione ai CSS' - Parte 1Aruba S.p.A.
 
Html e Css - 3 | WebMaster & WebDesigner
Html e Css - 3 | WebMaster & WebDesignerHtml e Css - 3 | WebMaster & WebDesigner
Html e Css - 3 | WebMaster & WebDesignerMatteo Magni
 
Joomla! 1.5: CMS a mani tese verso gli sviluppatori
Joomla! 1.5: CMS a mani tese verso gli sviluppatoriJoomla! 1.5: CMS a mani tese verso gli sviluppatori
Joomla! 1.5: CMS a mani tese verso gli sviluppatoriGrUSP
 
Joomla! 1.5: CMS a mani tese verso gli sviluppatori
Joomla! 1.5: CMS a mani tese verso gli sviluppatoriJoomla! 1.5: CMS a mani tese verso gli sviluppatori
Joomla! 1.5: CMS a mani tese verso gli sviluppatoriAlessandro Nadalin
 
DNM19 Sessione2 Orchard Temi e Layout (Ita)
DNM19 Sessione2 Orchard Temi e Layout (Ita)DNM19 Sessione2 Orchard Temi e Layout (Ita)
DNM19 Sessione2 Orchard Temi e Layout (Ita)Alessandro Giorgetti
 
Guidaskinprimipassi
GuidaskinprimipassiGuidaskinprimipassi
Guidaskinprimipassiguest2d3529
 
WordPress, un CMS per la scuola: novità e sviluppi - Porte Aperte sul Web a S...
WordPress, un CMS per la scuola: novità e sviluppi - Porte Aperte sul Web a S...WordPress, un CMS per la scuola: novità e sviluppi - Porte Aperte sul Web a S...
WordPress, un CMS per la scuola: novità e sviluppi - Porte Aperte sul Web a S...Marco Milesi
 

Similar a LA METODOLOGIA BEM, SCRIVERE UN CODICE MIGLIORE PER IL PRESENTE ED IL FUTURO (Marco Zampetti) (20)

BEM - A naming philosophy that just works
BEM - A naming philosophy that just worksBEM - A naming philosophy that just works
BEM - A naming philosophy that just works
 
Giovambattista Fazioli, 10 more things
Giovambattista Fazioli, 10 more thingsGiovambattista Fazioli, 10 more things
Giovambattista Fazioli, 10 more things
 
BEM - A naming methodology that just works
BEM - A naming methodology that just worksBEM - A naming methodology that just works
BEM - A naming methodology that just works
 
4 dw parte2-modifiche
4 dw parte2-modifiche4 dw parte2-modifiche
4 dw parte2-modifiche
 
Bootstrap
BootstrapBootstrap
Bootstrap
 
The CSS Survival Manual - Giovanni Buffa (2014)
The CSS Survival Manual - Giovanni Buffa (2014)The CSS Survival Manual - Giovanni Buffa (2014)
The CSS Survival Manual - Giovanni Buffa (2014)
 
Il buon programmatore - consigli pratici per una vita felice
Il buon programmatore - consigli pratici per una vita feliceIl buon programmatore - consigli pratici per una vita felice
Il buon programmatore - consigli pratici per una vita felice
 
HTML (+ DOM) + CSS
HTML (+ DOM) + CSSHTML (+ DOM) + CSS
HTML (+ DOM) + CSS
 
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
Html e Css - 2 | WebMaster & WebDesignerHtml e Css - 2 | WebMaster & WebDesigner
Html e Css - 2 | WebMaster & WebDesigner
 
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
 
Con Aruba, a lezione di e-commerce: 'Introduzione ai CSS' - Parte 1
Con Aruba, a lezione di e-commerce: 'Introduzione ai CSS' - Parte 1Con Aruba, a lezione di e-commerce: 'Introduzione ai CSS' - Parte 1
Con Aruba, a lezione di e-commerce: 'Introduzione ai CSS' - Parte 1
 
Html e Css - 3 | WebMaster & WebDesigner
Html e Css - 3 | WebMaster & WebDesignerHtml e Css - 3 | WebMaster & WebDesigner
Html e Css - 3 | WebMaster & WebDesigner
 
Dojo nuovo look alle vostre applicazioni web Domino
Dojo nuovo look alle vostre applicazioni web DominoDojo nuovo look alle vostre applicazioni web Domino
Dojo nuovo look alle vostre applicazioni web Domino
 
Joomla! 1.5: CMS a mani tese verso gli sviluppatori
Joomla! 1.5: CMS a mani tese verso gli sviluppatoriJoomla! 1.5: CMS a mani tese verso gli sviluppatori
Joomla! 1.5: CMS a mani tese verso gli sviluppatori
 
Joomla! 1.5: CMS a mani tese verso gli sviluppatori
Joomla! 1.5: CMS a mani tese verso gli sviluppatoriJoomla! 1.5: CMS a mani tese verso gli sviluppatori
Joomla! 1.5: CMS a mani tese verso gli sviluppatori
 
DNM19 Sessione2 Orchard Temi e Layout (Ita)
DNM19 Sessione2 Orchard Temi e Layout (Ita)DNM19 Sessione2 Orchard Temi e Layout (Ita)
DNM19 Sessione2 Orchard Temi e Layout (Ita)
 
Html
HtmlHtml
Html
 
Guidaskinprimipassi
GuidaskinprimipassiGuidaskinprimipassi
Guidaskinprimipassi
 
WordPress, un CMS per la scuola: novità e sviluppi - Porte Aperte sul Web a S...
WordPress, un CMS per la scuola: novità e sviluppi - Porte Aperte sul Web a S...WordPress, un CMS per la scuola: novità e sviluppi - Porte Aperte sul Web a S...
WordPress, un CMS per la scuola: novità e sviluppi - Porte Aperte sul Web a S...
 

Más de InSide Training

Fare test con Acrobat (Giovanna Busconi)
Fare test con Acrobat (Giovanna Busconi)Fare test con Acrobat (Giovanna Busconi)
Fare test con Acrobat (Giovanna Busconi)InSide Training
 
Percorsi, linguaggi e stili per metodi di apprendimento efficaci (Alberto Som...
Percorsi, linguaggi e stili per metodi di apprendimento efficaci (Alberto Som...Percorsi, linguaggi e stili per metodi di apprendimento efficaci (Alberto Som...
Percorsi, linguaggi e stili per metodi di apprendimento efficaci (Alberto Som...InSide Training
 
Insegnare 3D - modellazione e stampa (Riccardo Gatti)
Insegnare 3D - modellazione e stampa (Riccardo Gatti)Insegnare 3D - modellazione e stampa (Riccardo Gatti)
Insegnare 3D - modellazione e stampa (Riccardo Gatti)InSide Training
 
Rendi più coinvolgenti le tue lezioni con Adobe Character Animator (Alberto C...
Rendi più coinvolgenti le tue lezioni con Adobe Character Animator (Alberto C...Rendi più coinvolgenti le tue lezioni con Adobe Character Animator (Alberto C...
Rendi più coinvolgenti le tue lezioni con Adobe Character Animator (Alberto C...InSide Training
 
Lo storytelling come percorso educativo (Gabriele Fantuzzi)
Lo storytelling come percorso educativo (Gabriele Fantuzzi)Lo storytelling come percorso educativo (Gabriele Fantuzzi)
Lo storytelling come percorso educativo (Gabriele Fantuzzi)InSide Training
 
GRAPHIC DESIGN TALK SHOW (Bob Liuzzo)
GRAPHIC DESIGN TALK SHOW (Bob Liuzzo)GRAPHIC DESIGN TALK SHOW (Bob Liuzzo)
GRAPHIC DESIGN TALK SHOW (Bob Liuzzo)InSide Training
 
La trasformazione digitale è una questione di customer experience e d’innovaz...
La trasformazione digitale è una questione di customer experience e d’innovaz...La trasformazione digitale è una questione di customer experience e d’innovaz...
La trasformazione digitale è una questione di customer experience e d’innovaz...InSide Training
 
Fare un sito web non significa fare e-commerce. Oltre al carrello c'è di più ...
Fare un sito web non significa fare e-commerce. Oltre al carrello c'è di più ...Fare un sito web non significa fare e-commerce. Oltre al carrello c'è di più ...
Fare un sito web non significa fare e-commerce. Oltre al carrello c'è di più ...InSide Training
 
Copyright. Tutelare le proprie idee: quello che c'è da sapere tra moda, senti...
Copyright. Tutelare le proprie idee: quello che c'è da sapere tra moda, senti...Copyright. Tutelare le proprie idee: quello che c'è da sapere tra moda, senti...
Copyright. Tutelare le proprie idee: quello che c'è da sapere tra moda, senti...InSide Training
 
Lo storytelling è morto. Viva lo storytelling! (Alberto Maestri)
Lo storytelling è morto. Viva lo storytelling! (Alberto Maestri)Lo storytelling è morto. Viva lo storytelling! (Alberto Maestri)
Lo storytelling è morto. Viva lo storytelling! (Alberto Maestri)InSide Training
 
Raccontare attraverso l'uso dei video
Raccontare attraverso l'uso dei videoRaccontare attraverso l'uso dei video
Raccontare attraverso l'uso dei videoInSide Training
 
Il videogioco e il processo di apprendimento
Il videogioco e il processo di apprendimentoIl videogioco e il processo di apprendimento
Il videogioco e il processo di apprendimentoInSide Training
 

Más de InSide Training (12)

Fare test con Acrobat (Giovanna Busconi)
Fare test con Acrobat (Giovanna Busconi)Fare test con Acrobat (Giovanna Busconi)
Fare test con Acrobat (Giovanna Busconi)
 
Percorsi, linguaggi e stili per metodi di apprendimento efficaci (Alberto Som...
Percorsi, linguaggi e stili per metodi di apprendimento efficaci (Alberto Som...Percorsi, linguaggi e stili per metodi di apprendimento efficaci (Alberto Som...
Percorsi, linguaggi e stili per metodi di apprendimento efficaci (Alberto Som...
 
Insegnare 3D - modellazione e stampa (Riccardo Gatti)
Insegnare 3D - modellazione e stampa (Riccardo Gatti)Insegnare 3D - modellazione e stampa (Riccardo Gatti)
Insegnare 3D - modellazione e stampa (Riccardo Gatti)
 
Rendi più coinvolgenti le tue lezioni con Adobe Character Animator (Alberto C...
Rendi più coinvolgenti le tue lezioni con Adobe Character Animator (Alberto C...Rendi più coinvolgenti le tue lezioni con Adobe Character Animator (Alberto C...
Rendi più coinvolgenti le tue lezioni con Adobe Character Animator (Alberto C...
 
Lo storytelling come percorso educativo (Gabriele Fantuzzi)
Lo storytelling come percorso educativo (Gabriele Fantuzzi)Lo storytelling come percorso educativo (Gabriele Fantuzzi)
Lo storytelling come percorso educativo (Gabriele Fantuzzi)
 
GRAPHIC DESIGN TALK SHOW (Bob Liuzzo)
GRAPHIC DESIGN TALK SHOW (Bob Liuzzo)GRAPHIC DESIGN TALK SHOW (Bob Liuzzo)
GRAPHIC DESIGN TALK SHOW (Bob Liuzzo)
 
La trasformazione digitale è una questione di customer experience e d’innovaz...
La trasformazione digitale è una questione di customer experience e d’innovaz...La trasformazione digitale è una questione di customer experience e d’innovaz...
La trasformazione digitale è una questione di customer experience e d’innovaz...
 
Fare un sito web non significa fare e-commerce. Oltre al carrello c'è di più ...
Fare un sito web non significa fare e-commerce. Oltre al carrello c'è di più ...Fare un sito web non significa fare e-commerce. Oltre al carrello c'è di più ...
Fare un sito web non significa fare e-commerce. Oltre al carrello c'è di più ...
 
Copyright. Tutelare le proprie idee: quello che c'è da sapere tra moda, senti...
Copyright. Tutelare le proprie idee: quello che c'è da sapere tra moda, senti...Copyright. Tutelare le proprie idee: quello che c'è da sapere tra moda, senti...
Copyright. Tutelare le proprie idee: quello che c'è da sapere tra moda, senti...
 
Lo storytelling è morto. Viva lo storytelling! (Alberto Maestri)
Lo storytelling è morto. Viva lo storytelling! (Alberto Maestri)Lo storytelling è morto. Viva lo storytelling! (Alberto Maestri)
Lo storytelling è morto. Viva lo storytelling! (Alberto Maestri)
 
Raccontare attraverso l'uso dei video
Raccontare attraverso l'uso dei videoRaccontare attraverso l'uso dei video
Raccontare attraverso l'uso dei video
 
Il videogioco e il processo di apprendimento
Il videogioco e il processo di apprendimentoIl videogioco e il processo di apprendimento
Il videogioco e il processo di apprendimento
 

LA METODOLOGIA BEM, SCRIVERE UN CODICE MIGLIORE PER IL PRESENTE ED IL FUTURO (Marco Zampetti)

  • 1. LA METODOLOGIA BEM, SCRIVERE UN CODICE MIGLIORE PER IL PRESENTE ED IL FUTURO Marco Zampetti
 frontend developer
 Cantiere Creativo
  • 2. Obiettivo Introdurvi alla metodologia BEM, per farvi provare con mano i suoi vantaggi e permettervi di cominciare ad usarlo da subito. • prima parte: tante slide sul BEM —> domande • seconda parte: si scrive il BEM —> ancora più domande
  • 3. Workshop sul CSS?! • Scrivere CSS è facile! • Scrivere CSS che sia mantenibile e scalabile, sviluppandolo in team, e che permetta di tornare a lavorarci sopra dopo qualche mese senza impazzire… è facile?
  • 4. Problemi • Non è semplice scrivere codice in team • Assenza di regole comuni • Continuare il lavoro degli altri, o rifarlo da capo? • Scontro tra i nomi • Riutilizzo
  • 5. BEM BEM è una metodologia di nomenclatura che: 1. facilita il riutilizzo del codice, senza rischiare le collisioni tra le classi
 2. rende chiaro il codice e le intenzioni di chi lo ha scritto
 3. è più facile da scrivere, e da modificare in futuro
  • 6. BEM: dare un nome Dare un nome significa dare un significato, un idea. Per questo dare un nome alle cose è uno dei due aspetti difficili nel mondo della programmazione.
 Trovare il nome giusto non è immediato è richiede immaginazione, ovvero la capacità di vedere una cosa nel mondo reale. (Bruno Munari)
  • 7. BEM: dare un nome La prima difficoltà che troverete, forse l’unica nel BEM, è trovare il nome giusto.
 
 Obiettivo è rendere il nome semplice e chiaro per fare in modo che sia comprensibile il perché lo avete scelto, il cosa significa, e permettere di riutilizzarlo quanto possibile.
  • 9. BEM: blocchi • sono unità logiche dell’interfaccia che contengono degli elementi, ed altri blocchi • un tag non può essere due blocchi • un blocco vive di vita propria e deve poter essere inserito ovunque • dunque non dovrebbe avere proprietà che definiscono come funziona rispetto al suo “mondo esterno” • per essere più riusabile, il nome del blocco non dovrebbe definire quello che contiene (page, article), ma quale è la sua conformazione <div class=“blocco”></div>
  • 10. BEM: elementi • sono tutti i componenti di un blocco • contiene sempre il nome del blocco • non può stare fuori dal suo blocco • un tag non può essere due elementi • deve avere un nome che esprima la sua conformazione, per essere il più riutilizzabile possibile <div class=“blocco”> <div class=“blocco__elemento”></div>
 </div>
  • 11. BEM: modificatori • si applicano ai blocchi e agli elementi • modificano il comportamento standard • solitamente affiancano il nome di base, a meno che non usiate SASS e un extend della classe base <div class=“blocco blocco——modificatore”> <div class=“blocco__elemento”></div>
 </div>
  • 12. BEM: composizione CSS = Cascading Style Sheets
 
 NO l’ereditarietà delle proprietà, dunque il principio base del CSS a cui siete abituati.
 
 SI composizione, creazione di unità modulari che possono essere inserite ovunque.
 
 Un codice più facile da capire, da debuggare, da riutilizzare.
  • 13. BEM: file system # stylesheets /assets/stylesheets/blocks/button.css /assets/stylesheets/blocks/canvas.css /assets/stylesheets/blocks/flag.css
  • 14. Esempio (e spoiler) .box { position: relative; width: 1300px; } .box__object { position: absolute; } .box__object——baseline { bottom: 0; } .box__object——left { left: 160px; } <div class="box">
 <img src=“assets/images/seaside/sky_day.png" /> <div class="box__object box__object--baseline"> <img src="assets/images/seaside/bg_mountains.png" /> </div> <div class="box__object box__object--baseline"> <img src="assets/images/seaside/trees.png" /> </div> <div class="box__object box__object—-baseline box__object——left"> /* house */ </div> </div>
  • 15. Tutto chiaro?! :) Fine prima parte
  • 16. Gioco collaborativo • Per iniziare facile costruiamo dei paesaggi, e come ogni gioco ha le sue regole. • Collaborativo perché ogni team si deve auto- organizzare, e ogni team lavorerà con gli altri a tutti i paesaggi.
  • 17. Regole del codice • Ovviamente, rispettate le regole del BEM • Non utilizzate le immagini come sfondo, utilizzate i tag img che trovate già presenti • Normalize.css è inserito • Utilizzate solo nomi inglesi • Nel CSS utilizzate position absolute e relative, e z-index se necessario • Utilizzate valori in pixel, non in percentuali • Mobile first - optional • Hover per cambio giorno / notte - optional
  • 19. Primo turno • Fare una analisi logica dello scenario • Valutare quali oggetti hanno tratti comuni e allo stesso tempo diversi • Pensare ai nomi dei blocchi, e degli elementi • Pochi blocchi, espliciti, riutilizzabili
  • 20. Secondo turno Continuate il lavoro degli altri
  • 21. Turno bonus Scegliete una pagina web complessa
 (es: Facebook, Gmail)
 e provate a strutturarla in BEM!
  • 22. Fine! Grazie per aver partecipato :) Marco Zampetti
 m.zampetti@cantierecreativo.net
 twitter: @chrome_fate