SlideShare a Scribd company logo
1 of 68
Download to read offline
MANAGING COMPLEX PROJECTS 
WITH DESIGN COMPONENTS 
J O H N A L B I N W I L K I N S 
F R O N T - E N D T R A C K — O C T O B E R 1 , 2 0 1 4
@JOHNALBIN 
Senior Front-end Developer
FREE GIFTS FROM ME 
Zen Grids 
zengrids.com 
! 
Normalize.css for Sass/Compass 
github.com/JohnAlbin/normalize-scss 
Succinct theme for Colloquy (IRC for Mac) 
github.com/JohnAlbin/succinct-for-colloquy 
git-svn-migrate 
john.albin.net/git/git-svn-migrate 
Zen theme for Drupal 
drupal.org/project/zen
TRIGGER ALERT 
This session will mention the word: 
AGILE
WHERE ARE WE HEADED?
“ARE YOU NEW TO 
FRONT-END WEB DEVELOPMENT? 
HERE’S A SECRET: 
NO ONE ELSE REALLY KNOWS 
WHAT THEY’RE DOING EITHER.” 
– N I C O L A S G A L L AG H E R 
January, 2013
WHAT THE HELL IS GOING ON? 
Process Technology
IS THERE A BIGGER PICTURE? 
Vagrant Twig / Handlerbars 
Grunt/Gulp 
task runner 
Jenkins / CI 
build tools 
npm shrinkwrap / Bundler 
Web Components 
CSS frameworks 
Bootstrap / Foundation 
CSS/JS linting 
Yeoman / Bower! 
scaffolding tools 
Behat / Selenium 
regression testing 
Sass / Less
IS THERE A BIGGER PICTURE? 
Vagrant Twig / Handlerbars 
Grunt/Gulp 
task runner 
Component 
Jenkins / CI 
build tools 
npm shrinkwrap / Bundler 
Travis 
Web Components 
CSS frameworks 
Bootstrap / Foundation 
CSS/JS linting 
Yeoman / Bower! 
scaffolding tools 
Behat / Selenium 
regression testing 
Sass / Less 
YSlow 
PageSpeed 
Cucumber 
KSS Wraith 
Web Starter Kit 
CSSLoad 
Node.js
IS THERE A BIGGER PICTURE? 
Continuous 
Integration 
Component 
Library
IS THERE A BIGGER PICTURE? 
Continuous 
Integration 
Component 
Library 
are documented by! 
style guides 
Agile Development! 
requires
WATERFALL PROJECT 
Plan 
Design 
Develop 
Theme 
Start Deadline
WATERFALL PROJECT 
Plan 
: 
Design 
: 
Develop 
: 
Theme 
Today 
: 
Start Deadline
Agile development
Reduce your risk 
by controlling/minimizing your risk
AGILE PROJECT 
Feature backlog 
Feature #1 
Feature #2 
Feature #3 
Feature #4 
Feature #5 
Feature #6 
Feature #7 
Feature #8 
Feature #9 
Feature #10 
Start 
Deadline 
Sprint Sprint Sprint Sprint Sprint Sprint Sprint
AGILE PROJECT 
Each 2-week sprint: 
• Prioritizes project goals 
• Completes a set of features 
• Creates a releasable product 
Feature backlog 
Feature #1 
Feature #2 
Feature #3 
Feature #4 
Feature #5 
Feature #6 
Feature #7 
Feature #8 
Feature #9 
Feature #10 
Start 
Deadline 
Sprint Sprint Sprint Sprint Sprint Sprint Sprint
AGILE + WEB = ? 
Component-based design 
+ 
Automated style guides
STYLEGUIDE-DRIVEN DEVELOPMENT: 
THE NEW WEB DEVELOPMENT 
J O H N A L B I N W I L K I N S 
F R O N T - E N D T R A C K — O C T O B E R 1 , 2 0 1 4
STYLE GUIDE DRIVEN DEVELOPMENT 
Only requirements are: 
Component-based design 
and 
Automated style guides
What are we doing 
wrong?
CSS SPECIFICITY 
WARS
CSS SPECIFICITY 
WARS 
.menu .item a:link {}! 
.sidebar .menu .item a:link {}! 
.page-37 .sidebar .menu .item a:link {}
CSS SPECIFICITY 
WARS 
.menu .item a:link {! 
.sidebar & {! 
.page-37 & {}! 
}! 
}
OVERLY GENERIC CLASS NAMES 
.title&{&} 
.block&.title&{&} 
.node&.title&{&} 
.views&.title&{&} 
.content&{&} 
.block&.content&{&} 
.node&.content&{&} 
.views&.content&{&}
SEEMED LIKE A GOOD IDEA 
AT THE TIME
WHAT IS A DESIGN COMPONENT? 
“Component” is the same as… 
⨯ “Object” in OOCSS 
⨯ “Module” in SMACSS 
⨯ “Block” in BEM’s Block-Element-Modifier 
⨯ “UI Pattern”
CSS DESI GN COMPONENTS ARE: 
⨯ Applied to a loose collection of HTML elements 
⨯ Repeatable 
(even if never repeated) 
⨯ Specific 
Replace CSS specificity with specific names 
⨯ Self contained 
Styles do not bleed onto anything else 
⨯ Nest-able
SMACSS 
1.BASE 
2.LAYOUT 
3.MODULE 
4.STATE 
5.THEME
SMACSS 
1.BASE 
2.LAYOUT 
3.COMPONENTS 
4.STATE 
5.SKIN 
1.BASE 
2.LAYOUT 
3.MODULE 
4.STATE 
5.THEME
SMACSS 
1.BASE 
2.LAYOUT 
3.COMPONENTS 
4.STATE 
5.SKIN
SMACSS 
1.BASE 
2.LAYOUT 
3.COMPONENTS 
3.1.STATE 
3.2.SKIN
SMACSS 
BEM 
} 
1.BASE 
2.LAYOUT 
3.COMPONENTS 
3.1.COMPONENT 
3.2.ELEMENT 
3.3.MODIFIER 
3.4.STATE 
3.5.SKIN
“You see, radio is a kind 
of a very, very long . cat.
You pull his tail in New 
York and his head is 
meowing in Los Angeles.
Do you understand this? 
You send signals here, they 
receive them there. The 
only difference is that…
…there is no cat.” 
— Albert Einstein
.flower 
! 
3.1.COMPONENT 
3.2.ELEMENT 
3.3.MODIFI ER 
3.4.STATE 
3.5.SKIN
.flower_ _ petals 
! 
3.1.COMPONENT 
3.2.ELEMENT 
3.3.MODIFI ER 
3.4.STATE 
3.5.SKIN
.flower_ _face .flower_ _stem 
.flower_ _leaves
.flower_ _ bed 
! 
3.1.COMPONENT 
3.2.ELEMENT 
3.3.MODIFI ER 
3.4.STATE 
3.5.SKIN
.flower--tulip 
! 
3.1.COMPONENT 
3.2.ELEMENT 
3.3.MODIFI ER 
3.4.STATE 
3.5.SKIN
Don’t make it complicated 
.channel-tab_ _guide_ _upcoming-
Don’t make it complicated 
guide_ _upcoming-video_ _info_ _time
On semantic naming 
⨯ Content semantics 
are handled by HTML5 elements 
⨯ Let’s make our class names use 
Design semantics 
⨯ Class names should be meaningful to 
developers and designers
.flower:hover 
! 
3.1.COMPONENT 
3.2.ELEMENT 
3.3.MODIFIER 
3.4.STATE 
3.5.SKIN
.flower.is-pollinating 
! 
3.1.COMPONENT 
3.2.ELEMENT 
3.3.MODIFIER 
3.4.STATE 
3.5.SKIN
@media (min-width: 48em) { .flower } 
! 
3.1.COMPONENT 
3.2.ELEMENT 
3.3.MODIFIER 
3.4.STATE 
3.5.SKIN
@media print { .flower } 
! 
3.1.COMPONENT 
3.2.ELEMENT 
3.3.MODIFIER 
3.4.STATE 
3.5.SKIN
.is-night .flower 
! 
3.1.COMPONENT 
3.2.ELEMENT 
3.3.MODIFIER 
3.4.STATE 
3.5.SKIN ( global modfier )
.flower 
An automated 
style guide of 
.flower is available: 
! 
johnalbin.github.io/flower-power
All the selectors 
.the3component& 
.the3component33modifier& 
.the3component__an3element& 
.the3component33modifier__an3element& 
.the3component.is3state& 
& .the3component:hover& 
& @media&all&{&.the3component&{}&}& 
.the3skin&.the3component
CSS DESI GN COMPONENTS ARE: 
⨯ Applied to a loose collection of HTML elements 
⨯ Repeatable 
(even if never repeated) 
⨯ Specific 
Replace CSS specificity with specific names 
⨯ Self contained 
Styles do not bleed onto anything else 
⨯ Nest-able
SMACSS 
BEM 
} 
1.BASE 
2.LAYOUT 
3.COMPONENTS 
3.1.COMPONENT 
3.2.ELEMENT 
3.3.MODIFIER 
3.4.STATE 
3.5.SKIN
Drupal 8 CSS coding standards 
www.drupal.org/node/1886770
FILE ORGANIZATION = 3 SMACSS CATEGORIES
SIMPLE SASS SETUP
STYLES.SCSS
SIMPLE FOLDER STRUCTURE
EASY TO FIND YOUR COMPONENTS. 
⨯ Inspect the DOM. 
⨯ Find the CSS class on the 
component. 
⨯ Look for a file with that 
name in the components 
folder.
THE “Fugly” SELECTOR HACK
THE “Fugly” SELECTOR HACK 
Selector in DOM 
I couldn’t change 
Class name I wish 
I could use in DOM
AUTOMATED STYLE GUIDE 
kss-node 
github.com/kss-node/kss-node
AUTOMATED STYLE GUIDE
WHAT DID YOU THINK? 
E V A U L A T E T H I S S E S S I O N - A M S T E R D A M 2 0 1 4 . D R U P A L . O R G / S C H E D U L E 
THANK YO U!

More Related Content

What's hot

MIMA 2014 - Changing your Responsive Design Workflow
MIMA 2014 - Changing your Responsive Design WorkflowMIMA 2014 - Changing your Responsive Design Workflow
MIMA 2014 - Changing your Responsive Design Workfloweaselsolutions
 
Data science for infrastructure dev week 2022
Data science for infrastructure   dev week 2022Data science for infrastructure   dev week 2022
Data science for infrastructure dev week 2022ZainAsgar1
 
Atomic Design
Atomic Design Atomic Design
Atomic Design Rey Mayson
 
Building the Media Block in ReactJS
Building the Media Block in ReactJS Building the Media Block in ReactJS
Building the Media Block in ReactJS Nicole Sullivan
 
ACSS: Rethinking CSS Best Practices
ACSS: Rethinking CSS Best PracticesACSS: Rethinking CSS Best Practices
ACSS: Rethinking CSS Best PracticesRenato Iwashima
 
Creating Style Guides with Modularity in Mind
Creating Style Guides with Modularity in MindCreating Style Guides with Modularity in Mind
Creating Style Guides with Modularity in MindNadya Rodionenko
 
Documenting an Atomic Design System with Jekyll
Documenting an Atomic Design System with JekyllDocumenting an Atomic Design System with Jekyll
Documenting an Atomic Design System with JekyllTodd Moy
 
An introduction to Emulsify
An introduction to EmulsifyAn introduction to Emulsify
An introduction to Emulsifyvaluebound
 
Brad frost: Atomic design (Webdagene 2014)
Brad frost: Atomic design (Webdagene 2014)Brad frost: Atomic design (Webdagene 2014)
Brad frost: Atomic design (Webdagene 2014)webdagene
 
Voorhoede - Front-end architecture
Voorhoede - Front-end architectureVoorhoede - Front-end architecture
Voorhoede - Front-end architectureJasper Moelker
 
Responsive Design Workflow: Mobilism 2012
Responsive Design Workflow: Mobilism 2012Responsive Design Workflow: Mobilism 2012
Responsive Design Workflow: Mobilism 2012Stephen Hay
 
Style Guides Are The New Photoshop (Fronteers 2012)
Style Guides Are The New Photoshop (Fronteers 2012)Style Guides Are The New Photoshop (Fronteers 2012)
Style Guides Are The New Photoshop (Fronteers 2012)Stephen Hay
 
The Death of Lorem Ipsum & Pixel Perfect Content
The Death of Lorem Ipsum & Pixel Perfect ContentThe Death of Lorem Ipsum & Pixel Perfect Content
The Death of Lorem Ipsum & Pixel Perfect ContentDave Olsen
 
Responsive Design Workflow
Responsive Design WorkflowResponsive Design Workflow
Responsive Design WorkflowIntergen
 
SEO Before Yoast: WordCamp Rhode Island
SEO Before Yoast: WordCamp Rhode IslandSEO Before Yoast: WordCamp Rhode Island
SEO Before Yoast: WordCamp Rhode IslandKerch McConlogue
 
How to Make WordPress Your Friend
How to Make WordPress Your FriendHow to Make WordPress Your Friend
How to Make WordPress Your Friendkerchmcc
 
Hardening WordPress - SAScon Manchester 2013 (WordPress Security)
Hardening WordPress - SAScon Manchester 2013 (WordPress Security)Hardening WordPress - SAScon Manchester 2013 (WordPress Security)
Hardening WordPress - SAScon Manchester 2013 (WordPress Security)Bastian Grimm
 
Beginning WordPress Plugin Development
Beginning WordPress Plugin DevelopmentBeginning WordPress Plugin Development
Beginning WordPress Plugin DevelopmentAizat Faiz
 

What's hot (20)

MIMA 2014 - Changing your Responsive Design Workflow
MIMA 2014 - Changing your Responsive Design WorkflowMIMA 2014 - Changing your Responsive Design Workflow
MIMA 2014 - Changing your Responsive Design Workflow
 
Data science for infrastructure dev week 2022
Data science for infrastructure   dev week 2022Data science for infrastructure   dev week 2022
Data science for infrastructure dev week 2022
 
Atomic Design
Atomic Design Atomic Design
Atomic Design
 
Atomic Design con Pattern Lab
Atomic Design con Pattern LabAtomic Design con Pattern Lab
Atomic Design con Pattern Lab
 
Building the Media Block in ReactJS
Building the Media Block in ReactJS Building the Media Block in ReactJS
Building the Media Block in ReactJS
 
ACSS: Rethinking CSS Best Practices
ACSS: Rethinking CSS Best PracticesACSS: Rethinking CSS Best Practices
ACSS: Rethinking CSS Best Practices
 
Creating Style Guides with Modularity in Mind
Creating Style Guides with Modularity in MindCreating Style Guides with Modularity in Mind
Creating Style Guides with Modularity in Mind
 
Documenting an Atomic Design System with Jekyll
Documenting an Atomic Design System with JekyllDocumenting an Atomic Design System with Jekyll
Documenting an Atomic Design System with Jekyll
 
An introduction to Emulsify
An introduction to EmulsifyAn introduction to Emulsify
An introduction to Emulsify
 
Brad frost: Atomic design (Webdagene 2014)
Brad frost: Atomic design (Webdagene 2014)Brad frost: Atomic design (Webdagene 2014)
Brad frost: Atomic design (Webdagene 2014)
 
Voorhoede - Front-end architecture
Voorhoede - Front-end architectureVoorhoede - Front-end architecture
Voorhoede - Front-end architecture
 
Responsive Design Workflow: Mobilism 2012
Responsive Design Workflow: Mobilism 2012Responsive Design Workflow: Mobilism 2012
Responsive Design Workflow: Mobilism 2012
 
Style Guides Are The New Photoshop (Fronteers 2012)
Style Guides Are The New Photoshop (Fronteers 2012)Style Guides Are The New Photoshop (Fronteers 2012)
Style Guides Are The New Photoshop (Fronteers 2012)
 
The Death of Lorem Ipsum & Pixel Perfect Content
The Death of Lorem Ipsum & Pixel Perfect ContentThe Death of Lorem Ipsum & Pixel Perfect Content
The Death of Lorem Ipsum & Pixel Perfect Content
 
Responsive Design Workflow
Responsive Design WorkflowResponsive Design Workflow
Responsive Design Workflow
 
SEO Before Yoast: WordCamp Rhode Island
SEO Before Yoast: WordCamp Rhode IslandSEO Before Yoast: WordCamp Rhode Island
SEO Before Yoast: WordCamp Rhode Island
 
WordCamp Baltimore 2016
WordCamp Baltimore 2016WordCamp Baltimore 2016
WordCamp Baltimore 2016
 
How to Make WordPress Your Friend
How to Make WordPress Your FriendHow to Make WordPress Your Friend
How to Make WordPress Your Friend
 
Hardening WordPress - SAScon Manchester 2013 (WordPress Security)
Hardening WordPress - SAScon Manchester 2013 (WordPress Security)Hardening WordPress - SAScon Manchester 2013 (WordPress Security)
Hardening WordPress - SAScon Manchester 2013 (WordPress Security)
 
Beginning WordPress Plugin Development
Beginning WordPress Plugin DevelopmentBeginning WordPress Plugin Development
Beginning WordPress Plugin Development
 

Viewers also liked

Living Styleguide: design and development workflows
Living Styleguide: design and development workflowsLiving Styleguide: design and development workflows
Living Styleguide: design and development workflowsFabio Fabbrucci
 
Responsive Web Design Retrospective
Responsive Web Design RetrospectiveResponsive Web Design Retrospective
Responsive Web Design RetrospectiveDave Sharpe
 
The Adobe Legal Department Style Guide
The Adobe Legal Department Style GuideThe Adobe Legal Department Style Guide
The Adobe Legal Department Style GuideAdobe
 
A Guide for Preparing and Facilitating Retrospectives
A Guide for Preparing and Facilitating RetrospectivesA Guide for Preparing and Facilitating Retrospectives
A Guide for Preparing and Facilitating RetrospectivesJason Yip
 
The History of Graphic Design
The History of Graphic DesignThe History of Graphic Design
The History of Graphic DesignMatt Erickson
 
The Art of the Retrospective: How to run an awesome retrospective meeting
The Art of the Retrospective: How to run an awesome retrospective meetingThe Art of the Retrospective: How to run an awesome retrospective meeting
The Art of the Retrospective: How to run an awesome retrospective meetingChris Smith
 
Adobe Digital Insights: Mobile Landscape A Moving Target
Adobe Digital Insights: Mobile Landscape A Moving TargetAdobe Digital Insights: Mobile Landscape A Moving Target
Adobe Digital Insights: Mobile Landscape A Moving TargetAdobe
 
A Celebration Of Women In Marketing
A Celebration Of Women In MarketingA Celebration Of Women In Marketing
A Celebration Of Women In MarketingAdobe
 

Viewers also liked (9)

Living Styleguide: design and development workflows
Living Styleguide: design and development workflowsLiving Styleguide: design and development workflows
Living Styleguide: design and development workflows
 
BeHeard Styleguide
BeHeard StyleguideBeHeard Styleguide
BeHeard Styleguide
 
Responsive Web Design Retrospective
Responsive Web Design RetrospectiveResponsive Web Design Retrospective
Responsive Web Design Retrospective
 
The Adobe Legal Department Style Guide
The Adobe Legal Department Style GuideThe Adobe Legal Department Style Guide
The Adobe Legal Department Style Guide
 
A Guide for Preparing and Facilitating Retrospectives
A Guide for Preparing and Facilitating RetrospectivesA Guide for Preparing and Facilitating Retrospectives
A Guide for Preparing and Facilitating Retrospectives
 
The History of Graphic Design
The History of Graphic DesignThe History of Graphic Design
The History of Graphic Design
 
The Art of the Retrospective: How to run an awesome retrospective meeting
The Art of the Retrospective: How to run an awesome retrospective meetingThe Art of the Retrospective: How to run an awesome retrospective meeting
The Art of the Retrospective: How to run an awesome retrospective meeting
 
Adobe Digital Insights: Mobile Landscape A Moving Target
Adobe Digital Insights: Mobile Landscape A Moving TargetAdobe Digital Insights: Mobile Landscape A Moving Target
Adobe Digital Insights: Mobile Landscape A Moving Target
 
A Celebration Of Women In Marketing
A Celebration Of Women In MarketingA Celebration Of Women In Marketing
A Celebration Of Women In Marketing
 

Similar to Managing complex projects with style guide driven development

KharkivJS: Flaws of the Web Components in 2019 and how to address them
KharkivJS: Flaws of the Web Components in 2019 and how to address themKharkivJS: Flaws of the Web Components in 2019 and how to address them
KharkivJS: Flaws of the Web Components in 2019 and how to address themVlad Fedosov
 
Pain Driven Development by Alexandr Sugak
Pain Driven Development by Alexandr SugakPain Driven Development by Alexandr Sugak
Pain Driven Development by Alexandr SugakSigma Software
 
Maven 2.0 - Improve your build patterns
Maven 2.0 - Improve your build patternsMaven 2.0 - Improve your build patterns
Maven 2.0 - Improve your build patternselliando dias
 
Moving from Web 1.0 to Web 2.0
Moving from Web 1.0 to Web 2.0Moving from Web 1.0 to Web 2.0
Moving from Web 1.0 to Web 2.0Estelle Weyl
 
He stopped using for/while loops, you won't believe what happened next!
He stopped using for/while loops, you won't believe what happened next!He stopped using for/while loops, you won't believe what happened next!
He stopped using for/while loops, you won't believe what happened next!François-Guillaume Ribreau
 
How to write an application and not roll down to 1 fps
How to write an application and not roll down to 1 fpsHow to write an application and not roll down to 1 fps
How to write an application and not roll down to 1 fpsIntexSoft
 
Ember Reusable Components and Widgets
Ember Reusable Components and WidgetsEmber Reusable Components and Widgets
Ember Reusable Components and WidgetsSergey Bolshchikov
 
Rethinking Best Practices
Rethinking Best PracticesRethinking Best Practices
Rethinking Best Practicesfloydophone
 
ReactJS vs AngularJS - Head to Head comparison
ReactJS vs AngularJS - Head to Head comparisonReactJS vs AngularJS - Head to Head comparison
ReactJS vs AngularJS - Head to Head comparison500Tech
 
WordPress theme frameworks
WordPress theme frameworksWordPress theme frameworks
WordPress theme frameworksEddie Johnston
 
JS Lab`16. Владимир Воевидка: "Как работает браузер"
JS Lab`16. Владимир Воевидка: "Как работает браузер"JS Lab`16. Владимир Воевидка: "Как работает браузер"
JS Lab`16. Владимир Воевидка: "Как работает браузер"GeeksLab Odessa
 
“One man” development process model
“One man” development process model“One man” development process model
“One man” development process modelSilicon Straits
 
Optimising Your Front End Workflow With Symfony, Twig, Bower and Gulp
Optimising Your Front End Workflow With Symfony, Twig, Bower and GulpOptimising Your Front End Workflow With Symfony, Twig, Bower and Gulp
Optimising Your Front End Workflow With Symfony, Twig, Bower and GulpMatthew Davis
 
The Ember.js Framework - Everything You Need To Know
The Ember.js Framework - Everything You Need To KnowThe Ember.js Framework - Everything You Need To Know
The Ember.js Framework - Everything You Need To KnowAll Things Open
 
Google Glass Mirror API Setup
Google Glass Mirror API SetupGoogle Glass Mirror API Setup
Google Glass Mirror API SetupDiana Michelle
 
FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...
FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...
FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...Marco Cedaro
 

Similar to Managing complex projects with style guide driven development (20)

KharkivJS: Flaws of the Web Components in 2019 and how to address them
KharkivJS: Flaws of the Web Components in 2019 and how to address themKharkivJS: Flaws of the Web Components in 2019 and how to address them
KharkivJS: Flaws of the Web Components in 2019 and how to address them
 
Pain Driven Development by Alexandr Sugak
Pain Driven Development by Alexandr SugakPain Driven Development by Alexandr Sugak
Pain Driven Development by Alexandr Sugak
 
Maven 2.0 - Improve your build patterns
Maven 2.0 - Improve your build patternsMaven 2.0 - Improve your build patterns
Maven 2.0 - Improve your build patterns
 
Moving from Web 1.0 to Web 2.0
Moving from Web 1.0 to Web 2.0Moving from Web 1.0 to Web 2.0
Moving from Web 1.0 to Web 2.0
 
Automate Yo' Self
Automate Yo' SelfAutomate Yo' Self
Automate Yo' Self
 
He stopped using for/while loops, you won't believe what happened next!
He stopped using for/while loops, you won't believe what happened next!He stopped using for/while loops, you won't believe what happened next!
He stopped using for/while loops, you won't believe what happened next!
 
How to write an application and not roll down to 1 fps
How to write an application and not roll down to 1 fpsHow to write an application and not roll down to 1 fps
How to write an application and not roll down to 1 fps
 
Ember Reusable Components and Widgets
Ember Reusable Components and WidgetsEmber Reusable Components and Widgets
Ember Reusable Components and Widgets
 
Rethinking Best Practices
Rethinking Best PracticesRethinking Best Practices
Rethinking Best Practices
 
ReactJS vs AngularJS - Head to Head comparison
ReactJS vs AngularJS - Head to Head comparisonReactJS vs AngularJS - Head to Head comparison
ReactJS vs AngularJS - Head to Head comparison
 
SCSS Styleguide
SCSS StyleguideSCSS Styleguide
SCSS Styleguide
 
WordPress theme frameworks
WordPress theme frameworksWordPress theme frameworks
WordPress theme frameworks
 
JS Lab`16. Владимир Воевидка: "Как работает браузер"
JS Lab`16. Владимир Воевидка: "Как работает браузер"JS Lab`16. Владимир Воевидка: "Как работает браузер"
JS Lab`16. Владимир Воевидка: "Как работает браузер"
 
“One man” development process model
“One man” development process model“One man” development process model
“One man” development process model
 
Optimising Your Front End Workflow With Symfony, Twig, Bower and Gulp
Optimising Your Front End Workflow With Symfony, Twig, Bower and GulpOptimising Your Front End Workflow With Symfony, Twig, Bower and Gulp
Optimising Your Front End Workflow With Symfony, Twig, Bower and Gulp
 
The Ember.js Framework - Everything You Need To Know
The Ember.js Framework - Everything You Need To KnowThe Ember.js Framework - Everything You Need To Know
The Ember.js Framework - Everything You Need To Know
 
Taking your Web App for a walk
Taking your Web App for a walkTaking your Web App for a walk
Taking your Web App for a walk
 
Slim3 quick start
Slim3 quick startSlim3 quick start
Slim3 quick start
 
Google Glass Mirror API Setup
Google Glass Mirror API SetupGoogle Glass Mirror API Setup
Google Glass Mirror API Setup
 
FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...
FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...
FFWD.PRO - It's not you, It's me (or how to avoid being coupled with a Javasc...
 

More from John Albin Wilkins

Using the CSS Nesting Spec Today
Using the CSS Nesting Spec TodayUsing the CSS Nesting Spec Today
Using the CSS Nesting Spec TodayJohn Albin Wilkins
 
The Drupal Roadmap: From D7 to D9
The Drupal Roadmap: From D7 to D9The Drupal Roadmap: From D7 to D9
The Drupal Roadmap: From D7 to D9John Albin Wilkins
 
CSS-in-JS: unexpected lessons for Drupal component design
CSS-in-JS: unexpected lessons for Drupal component designCSS-in-JS: unexpected lessons for Drupal component design
CSS-in-JS: unexpected lessons for Drupal component designJohn Albin Wilkins
 
DrupalSouth 2014: Managing Complex Projects with Design Components
DrupalSouth 2014: Managing Complex Projects with Design ComponentsDrupalSouth 2014: Managing Complex Projects with Design Components
DrupalSouth 2014: Managing Complex Projects with Design ComponentsJohn Albin Wilkins
 
SassConf: Managing Complex Projects with Design Components
SassConf: Managing Complex Projects with Design ComponentsSassConf: Managing Complex Projects with Design Components
SassConf: Managing Complex Projects with Design ComponentsJohn Albin Wilkins
 
Become an IA superstar (Chinese version)
Become an IA superstar (Chinese version)Become an IA superstar (Chinese version)
Become an IA superstar (Chinese version)John Albin Wilkins
 
Mobile drupal: building a mobile theme
Mobile drupal: building a mobile themeMobile drupal: building a mobile theme
Mobile drupal: building a mobile themeJohn Albin Wilkins
 
Drupal and the Future of the Web
Drupal and the Future of the WebDrupal and the Future of the Web
Drupal and the Future of the WebJohn Albin Wilkins
 
Default theme implementations: a guide for module developers that want sweet ...
Default theme implementations: a guide for module developers that want sweet ...Default theme implementations: a guide for module developers that want sweet ...
Default theme implementations: a guide for module developers that want sweet ...John Albin Wilkins
 
New Adventures in Drupal Theming
New Adventures in Drupal ThemingNew Adventures in Drupal Theming
New Adventures in Drupal ThemingJohn Albin Wilkins
 
Making Drupal Dance: Techniques for Non-obvious Theme Manipulations
Making Drupal Dance: Techniques for Non-obvious Theme ManipulationsMaking Drupal Dance: Techniques for Non-obvious Theme Manipulations
Making Drupal Dance: Techniques for Non-obvious Theme ManipulationsJohn Albin Wilkins
 

More from John Albin Wilkins (19)

Using the CSS Nesting Spec Today
Using the CSS Nesting Spec TodayUsing the CSS Nesting Spec Today
Using the CSS Nesting Spec Today
 
The Drupal Roadmap: From D7 to D9
The Drupal Roadmap: From D7 to D9The Drupal Roadmap: From D7 to D9
The Drupal Roadmap: From D7 to D9
 
Mastering Drupal 8’s Twig
Mastering Drupal 8’s TwigMastering Drupal 8’s Twig
Mastering Drupal 8’s Twig
 
CSS-in-JS: unexpected lessons for Drupal component design
CSS-in-JS: unexpected lessons for Drupal component designCSS-in-JS: unexpected lessons for Drupal component design
CSS-in-JS: unexpected lessons for Drupal component design
 
DrupalSouth 2014: Managing Complex Projects with Design Components
DrupalSouth 2014: Managing Complex Projects with Design ComponentsDrupalSouth 2014: Managing Complex Projects with Design Components
DrupalSouth 2014: Managing Complex Projects with Design Components
 
SassConf: Managing Complex Projects with Design Components
SassConf: Managing Complex Projects with Design ComponentsSassConf: Managing Complex Projects with Design Components
SassConf: Managing Complex Projects with Design Components
 
Drupal Camp Taipei Keynote
Drupal Camp Taipei KeynoteDrupal Camp Taipei Keynote
Drupal Camp Taipei Keynote
 
Become an IA superstar (Chinese version)
Become an IA superstar (Chinese version)Become an IA superstar (Chinese version)
Become an IA superstar (Chinese version)
 
Mobile drupal: building a mobile theme
Mobile drupal: building a mobile themeMobile drupal: building a mobile theme
Mobile drupal: building a mobile theme
 
Sass: CSS with Attitude
Sass: CSS with AttitudeSass: CSS with Attitude
Sass: CSS with Attitude
 
Mastering zen
Mastering zenMastering zen
Mastering zen
 
Drupal and the Future of the Web
Drupal and the Future of the WebDrupal and the Future of the Web
Drupal and the Future of the Web
 
What's new in D7 Theming?
What's new in D7 Theming?What's new in D7 Theming?
What's new in D7 Theming?
 
Default theme implementations: a guide for module developers that want sweet ...
Default theme implementations: a guide for module developers that want sweet ...Default theme implementations: a guide for module developers that want sweet ...
Default theme implementations: a guide for module developers that want sweet ...
 
Rocking the Theme Layer
Rocking the Theme LayerRocking the Theme Layer
Rocking the Theme Layer
 
Drupal Design Tips
Drupal Design TipsDrupal Design Tips
Drupal Design Tips
 
New Adventures in Drupal Theming
New Adventures in Drupal ThemingNew Adventures in Drupal Theming
New Adventures in Drupal Theming
 
Nanocon Taiwan
Nanocon TaiwanNanocon Taiwan
Nanocon Taiwan
 
Making Drupal Dance: Techniques for Non-obvious Theme Manipulations
Making Drupal Dance: Techniques for Non-obvious Theme ManipulationsMaking Drupal Dance: Techniques for Non-obvious Theme Manipulations
Making Drupal Dance: Techniques for Non-obvious Theme Manipulations
 

Recently uploaded

Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesPhilip Schwarz
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Mater
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Velvetech LLC
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtimeandrehoraa
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecturerahul_net
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationBradBedford3
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odishasmiwainfosol
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanyChristoph Pohl
 
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxReal-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxRTS corp
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureDinusha Kumarasiri
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaHanief Utama
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsAhmed Mohamed
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024StefanoLambiase
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Angel Borroy López
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf31events.com
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...OnePlan Solutions
 
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfInnovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfYashikaSharma391629
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfFerryKemperman
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Natan Silnitsky
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfDrew Moseley
 

Recently uploaded (20)

Folding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a seriesFolding Cheat Sheet #4 - fourth in a series
Folding Cheat Sheet #4 - fourth in a series
 
Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)Ahmed Motair CV April 2024 (Senior SW Developer)
Ahmed Motair CV April 2024 (Senior SW Developer)
 
Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...Software Project Health Check: Best Practices and Techniques for Your Product...
Software Project Health Check: Best Practices and Techniques for Your Product...
 
SpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at RuntimeSpotFlow: Tracking Method Calls and States at Runtime
SpotFlow: Tracking Method Calls and States at Runtime
 
Understanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM ArchitectureUnderstanding Flamingo - DeepMind's VLM Architecture
Understanding Flamingo - DeepMind's VLM Architecture
 
How to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion ApplicationHow to submit a standout Adobe Champion Application
How to submit a standout Adobe Champion Application
 
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company OdishaBalasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
Balasore Best It Company|| Top 10 IT Company || Balasore Software company Odisha
 
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte GermanySuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
SuccessFactors 1H 2024 Release - Sneak-Peek by Deloitte Germany
 
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptxReal-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
Real-time Tracking and Monitoring with Cargo Cloud Solutions.pptx
 
Implementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with AzureImplementing Zero Trust strategy with Azure
Implementing Zero Trust strategy with Azure
 
React Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief UtamaReact Server Component in Next.js by Hanief Utama
React Server Component in Next.js by Hanief Utama
 
Unveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML DiagramsUnveiling Design Patterns: A Visual Guide with UML Diagrams
Unveiling Design Patterns: A Visual Guide with UML Diagrams
 
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
Dealing with Cultural Dispersion — Stefano Lambiase — ICSE-SEIS 2024
 
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
Alfresco TTL#157 - Troubleshooting Made Easy: Deciphering Alfresco mTLS Confi...
 
Sending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdfSending Calendar Invites on SES and Calendarsnack.pdf
Sending Calendar Invites on SES and Calendarsnack.pdf
 
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
Maximizing Efficiency and Profitability with OnePlan’s Professional Service A...
 
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdfInnovate and Collaborate- Harnessing the Power of Open Source Software.pdf
Innovate and Collaborate- Harnessing the Power of Open Source Software.pdf
 
Introduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdfIntroduction Computer Science - Software Design.pdf
Introduction Computer Science - Software Design.pdf
 
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
Taming Distributed Systems: Key Insights from Wix's Large-Scale Experience - ...
 
Comparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdfComparing Linux OS Image Update Models - EOSS 2024.pdf
Comparing Linux OS Image Update Models - EOSS 2024.pdf
 

Managing complex projects with style guide driven development

  • 1. MANAGING COMPLEX PROJECTS WITH DESIGN COMPONENTS J O H N A L B I N W I L K I N S F R O N T - E N D T R A C K — O C T O B E R 1 , 2 0 1 4
  • 3. FREE GIFTS FROM ME Zen Grids zengrids.com ! Normalize.css for Sass/Compass github.com/JohnAlbin/normalize-scss Succinct theme for Colloquy (IRC for Mac) github.com/JohnAlbin/succinct-for-colloquy git-svn-migrate john.albin.net/git/git-svn-migrate Zen theme for Drupal drupal.org/project/zen
  • 4. TRIGGER ALERT This session will mention the word: AGILE
  • 5. WHERE ARE WE HEADED?
  • 6. “ARE YOU NEW TO FRONT-END WEB DEVELOPMENT? HERE’S A SECRET: NO ONE ELSE REALLY KNOWS WHAT THEY’RE DOING EITHER.” – N I C O L A S G A L L AG H E R January, 2013
  • 7. WHAT THE HELL IS GOING ON? Process Technology
  • 8. IS THERE A BIGGER PICTURE? Vagrant Twig / Handlerbars Grunt/Gulp task runner Jenkins / CI build tools npm shrinkwrap / Bundler Web Components CSS frameworks Bootstrap / Foundation CSS/JS linting Yeoman / Bower! scaffolding tools Behat / Selenium regression testing Sass / Less
  • 9. IS THERE A BIGGER PICTURE? Vagrant Twig / Handlerbars Grunt/Gulp task runner Component Jenkins / CI build tools npm shrinkwrap / Bundler Travis Web Components CSS frameworks Bootstrap / Foundation CSS/JS linting Yeoman / Bower! scaffolding tools Behat / Selenium regression testing Sass / Less YSlow PageSpeed Cucumber KSS Wraith Web Starter Kit CSSLoad Node.js
  • 10. IS THERE A BIGGER PICTURE? Continuous Integration Component Library
  • 11. IS THERE A BIGGER PICTURE? Continuous Integration Component Library are documented by! style guides Agile Development! requires
  • 12. WATERFALL PROJECT Plan Design Develop Theme Start Deadline
  • 13. WATERFALL PROJECT Plan : Design : Develop : Theme Today : Start Deadline
  • 15. Reduce your risk by controlling/minimizing your risk
  • 16. AGILE PROJECT Feature backlog Feature #1 Feature #2 Feature #3 Feature #4 Feature #5 Feature #6 Feature #7 Feature #8 Feature #9 Feature #10 Start Deadline Sprint Sprint Sprint Sprint Sprint Sprint Sprint
  • 17. AGILE PROJECT Each 2-week sprint: • Prioritizes project goals • Completes a set of features • Creates a releasable product Feature backlog Feature #1 Feature #2 Feature #3 Feature #4 Feature #5 Feature #6 Feature #7 Feature #8 Feature #9 Feature #10 Start Deadline Sprint Sprint Sprint Sprint Sprint Sprint Sprint
  • 18. AGILE + WEB = ? Component-based design + Automated style guides
  • 19. STYLEGUIDE-DRIVEN DEVELOPMENT: THE NEW WEB DEVELOPMENT J O H N A L B I N W I L K I N S F R O N T - E N D T R A C K — O C T O B E R 1 , 2 0 1 4
  • 20. STYLE GUIDE DRIVEN DEVELOPMENT Only requirements are: Component-based design and Automated style guides
  • 21. What are we doing wrong?
  • 23. CSS SPECIFICITY WARS .menu .item a:link {}! .sidebar .menu .item a:link {}! .page-37 .sidebar .menu .item a:link {}
  • 24. CSS SPECIFICITY WARS .menu .item a:link {! .sidebar & {! .page-37 & {}! }! }
  • 25. OVERLY GENERIC CLASS NAMES .title&{&} .block&.title&{&} .node&.title&{&} .views&.title&{&} .content&{&} .block&.content&{&} .node&.content&{&} .views&.content&{&}
  • 26. SEEMED LIKE A GOOD IDEA AT THE TIME
  • 27. WHAT IS A DESIGN COMPONENT? “Component” is the same as… ⨯ “Object” in OOCSS ⨯ “Module” in SMACSS ⨯ “Block” in BEM’s Block-Element-Modifier ⨯ “UI Pattern”
  • 28. CSS DESI GN COMPONENTS ARE: ⨯ Applied to a loose collection of HTML elements ⨯ Repeatable (even if never repeated) ⨯ Specific Replace CSS specificity with specific names ⨯ Self contained Styles do not bleed onto anything else ⨯ Nest-able
  • 29.
  • 30.
  • 31. SMACSS 1.BASE 2.LAYOUT 3.MODULE 4.STATE 5.THEME
  • 32. SMACSS 1.BASE 2.LAYOUT 3.COMPONENTS 4.STATE 5.SKIN 1.BASE 2.LAYOUT 3.MODULE 4.STATE 5.THEME
  • 33. SMACSS 1.BASE 2.LAYOUT 3.COMPONENTS 4.STATE 5.SKIN
  • 34. SMACSS 1.BASE 2.LAYOUT 3.COMPONENTS 3.1.STATE 3.2.SKIN
  • 35. SMACSS BEM } 1.BASE 2.LAYOUT 3.COMPONENTS 3.1.COMPONENT 3.2.ELEMENT 3.3.MODIFIER 3.4.STATE 3.5.SKIN
  • 36. “You see, radio is a kind of a very, very long . cat.
  • 37. You pull his tail in New York and his head is meowing in Los Angeles.
  • 38. Do you understand this? You send signals here, they receive them there. The only difference is that…
  • 39. …there is no cat.” — Albert Einstein
  • 40. .flower ! 3.1.COMPONENT 3.2.ELEMENT 3.3.MODIFI ER 3.4.STATE 3.5.SKIN
  • 41. .flower_ _ petals ! 3.1.COMPONENT 3.2.ELEMENT 3.3.MODIFI ER 3.4.STATE 3.5.SKIN
  • 42. .flower_ _face .flower_ _stem .flower_ _leaves
  • 43. .flower_ _ bed ! 3.1.COMPONENT 3.2.ELEMENT 3.3.MODIFI ER 3.4.STATE 3.5.SKIN
  • 44. .flower--tulip ! 3.1.COMPONENT 3.2.ELEMENT 3.3.MODIFI ER 3.4.STATE 3.5.SKIN
  • 45. Don’t make it complicated .channel-tab_ _guide_ _upcoming-
  • 46. Don’t make it complicated guide_ _upcoming-video_ _info_ _time
  • 47. On semantic naming ⨯ Content semantics are handled by HTML5 elements ⨯ Let’s make our class names use Design semantics ⨯ Class names should be meaningful to developers and designers
  • 48. .flower:hover ! 3.1.COMPONENT 3.2.ELEMENT 3.3.MODIFIER 3.4.STATE 3.5.SKIN
  • 49. .flower.is-pollinating ! 3.1.COMPONENT 3.2.ELEMENT 3.3.MODIFIER 3.4.STATE 3.5.SKIN
  • 50. @media (min-width: 48em) { .flower } ! 3.1.COMPONENT 3.2.ELEMENT 3.3.MODIFIER 3.4.STATE 3.5.SKIN
  • 51. @media print { .flower } ! 3.1.COMPONENT 3.2.ELEMENT 3.3.MODIFIER 3.4.STATE 3.5.SKIN
  • 52. .is-night .flower ! 3.1.COMPONENT 3.2.ELEMENT 3.3.MODIFIER 3.4.STATE 3.5.SKIN ( global modfier )
  • 53. .flower An automated style guide of .flower is available: ! johnalbin.github.io/flower-power
  • 54. All the selectors .the3component& .the3component33modifier& .the3component__an3element& .the3component33modifier__an3element& .the3component.is3state& & .the3component:hover& & @media&all&{&.the3component&{}&}& .the3skin&.the3component
  • 55. CSS DESI GN COMPONENTS ARE: ⨯ Applied to a loose collection of HTML elements ⨯ Repeatable (even if never repeated) ⨯ Specific Replace CSS specificity with specific names ⨯ Self contained Styles do not bleed onto anything else ⨯ Nest-able
  • 56. SMACSS BEM } 1.BASE 2.LAYOUT 3.COMPONENTS 3.1.COMPONENT 3.2.ELEMENT 3.3.MODIFIER 3.4.STATE 3.5.SKIN
  • 57. Drupal 8 CSS coding standards www.drupal.org/node/1886770
  • 58. FILE ORGANIZATION = 3 SMACSS CATEGORIES
  • 62. EASY TO FIND YOUR COMPONENTS. ⨯ Inspect the DOM. ⨯ Find the CSS class on the component. ⨯ Look for a file with that name in the components folder.
  • 64. THE “Fugly” SELECTOR HACK Selector in DOM I couldn’t change Class name I wish I could use in DOM
  • 65. AUTOMATED STYLE GUIDE kss-node github.com/kss-node/kss-node
  • 67.
  • 68. WHAT DID YOU THINK? E V A U L A T E T H I S S E S S I O N - A M S T E R D A M 2 0 1 4 . D R U P A L . O R G / S C H E D U L E THANK YO U!