SlideShare a Scribd company logo
Web Components and Modular CSS 
@AndrewRota | CSS Dev Conf 2014
Modularity
UI Libraries
CSS Features 
Encapsulation 
Scope 
Interfaces 
Modularity
Modular CSS Patterns 
BEM 
SMACSS 
Atomic CSS 
OOCSS
BEM 
/* Block */ 
.nav { } 
/* Element */ 
.nav__item { } 
/* Block with Modifier */ 
.nav--hidden { } 
/* Element with Modifier */ 
.nav__item--current { }
SMACSS 
/* Module */ 
.nav { } 
/* Module with State */ 
.nav.is-current { } 
/* Module with Semantic Element Selector */ 
.nav > h2 { } 
/* Layout Style */ 
.l-inline { }
Web Components 
Web Components usher in a 
new era of web development 
based on encapsulated and 
interoperable custom elements 
that extend HTML itself. - Polymer
Web Components APIs 
Custom Elements 
HTML Templates 
HTML Imports 
Shadow DOM
Custom Elements 
<my-element>Hello World.</my-element> 
var MyElement = document.registerElement('my-element', { 
prototype: Object.create(HTMLElement.prototype) 
});
HTML Templates 
<template id="my-template"> 
<p>Hello World.</p> 
<!-- This image won't be downloaded on page load --> 
<img src="example.jpg" alt="Example"> 
</template> 
document.importNode( 
document.getElementById('my-template').content, 
true 
);
HTML Imports 
<link rel="import" href="/imports/my-component.html">
Shadow DOM 
// Create Shadow Root 
document.getElementById('my-element').createShadowRoot(); 
// Access Shadow Root 
document.getElementById('my-element').shadowRoot;
User Agent Shadow DOM 
<video src="#" controls></video> 
0:00
User Agent Shadow DOM 
<input type="date"> 
mm/dd/yyyy
Shadow DOM 
Shadow DOM. 
Light DOM. 
<div id="my-first-element"></div><p>Light DOM.</p> 
// Create Shadow Root 
var s = document.getElementById('my-first-element').createShadowRoot 
// Add Styles and Text 
s.innerHTML += '<style>p { color: crimson; margin: 5px 0 5px 0;}</s.innerHTML += '<p>Shadow DOM.</p>';
Content Insertion Points 
<div id="my-second-element"> 
<content></content> 
</div>
Shadow DOM and <content> 
Shadow DOM Start. 
Hello! 
Shadow DOM End. 
<div id="my-second-element"><p>Hello!</p></div> 
var s = document.getElementById('my-second-element').createShadowRoot 
s.innerHTML += '<p>Shadow DOM Start.</p>'; 
s.innerHTML += '<style>p { color: crimson; margin: 5px 0; }</style>' 
s.innerHTML += '<content></content>'; 
s.innerHTML += '<p>Shadow DOM End.</p>';
Into the Light 
/* pseudo-class for host element*/ 
:host { } 
/* functional pseudo-class, for host if it matches the selector argument :host() { } 
/* functional pseudo-class, for host context that matches selector :host-context() { } 
/* pseudo-element, for distributed notes rendered via a <content> ::content { }
Into the Dark 
/* pseudo-element for shadow roots */ 
::shadow { } 
/* combinator for selecting through shadow boundaries */ 
body /deep/ p { } 
[/deep/] is basically a super-descendant 
combinator. 
- CSS Scoping Module Draft, Issue 6
Let's Write a Component 
Hello world, I am a web component. 
<link rel="import" href="../assets/hello-world.html"> 
<hello-world>I am a <strong>web component</strong></hello-world
Let's Write a Component 
Hello world, I am a web component. 
<template id="hw"> 
<style> 
::content strong { color: crimson; } 
p { margin: 2px 20px 2px 0; } 
:host { border: 1px solid FireBrick; display: block; margin-right 
.hello { color: #91D4D; } 
</style> 
<p><span class="hello">Hello world</span>, <content></content 
</template>
Let's Write a Component 
Hello world, I am a web component. 
var importedDoc = document.currentScript.ownerDocument; 
var elementPrototype = Object.create(HTMLElement.prototype); 
elementPrototype.createdCallback = function() { 
var template = importedDoc.getElementById('hw').content; 
var clone = document.importNode(template, true); 
this.createShadowRoot().appendChild(clone); 
}; 
document.registerElement('hello-world', {prototype: elementPrototype
Can I Use??? 
Custom 
Elements 
HTML 
Templates 
HTML 
Imports 
Shadow 
DOM 
- - - - 
- - - - 
Flag - Flag Flag 
X - X X 
X X X X
Polyfills
When To Use Web Components? 
Third Party Widgets? 
Third Party UI Libraries? 
Internal UI Libraries? 
Web Component All the Things!?
Third Party Widgets 
<google-map 
latitude="29.954356" 
longitude="-90.067863"> 
</google-map>
Third Party UI Libraries 
CSS HTML JS 
<paper-radio-group selected="css"> 
<paper-radio-button name="css" label="CSS"></paper-radio-button 
</paper-radio-group> 
<paper-slider value="10"></paper-slider>
Internal UI Libraries 
<acme-corp--menu> 
<acme-corp--menu-item>Home</acme-corp--menu-item> 
<acme-corp--menu-item selected>About</acme-corp--menu-item> 
<acme-corp--menu-item>Contact Us</acme-corp--menu-item> 
</acme-corp--menu> 
<acme-corp--login-form 
ajax 
url="login.php"> 
</acme-corp--login-form>
Web Component Everything?? 
<acme-corp--app> 
<acme-corp--menu></acme-corp--menu> 
<acme-corp--content></acme-corp--content> 
<acme-corp--footer></acme-corp--footer> 
</acme-corp--app>
Probably Not (and that's OK) 
I don't ever see us going all in 
on Custom Elements for every 
possible thing ... Use native 
elements and controls when 
possible and supplement with 
custom elements. 
- Joshua Peek, Github Programmer
Small 
Open for Extension 
Documented 
Unit Tested 
Accessible 
Responsive 
Best Practices
Tooling
Frameworks
Towards a Component Driven Web
Thanks! 
Resources 
- WebComponents.org 
- Web Components: A Tectonic Shift for Web Development by Eric Bidelman 
- Web Components by Jarrod Overson and Jason Strimpel 
- Ten Principles for Great General Purpose Web Components 
Colophon 
This presentation was built with Shadow DOM, HTML Templates, HTML 
Imports, and the Custom Elements <slide-show> and <slide-content> 
using Web Component Slides.
Web Components and Modular CSS
Web Components and Modular CSS
Web Components and Modular CSS
Web Components and Modular CSS
Web Components and Modular CSS
Web Components and Modular CSS
Web Components and Modular CSS
Web Components and Modular CSS
Web Components and Modular CSS
Web Components and Modular CSS

More Related Content

What's hot

Google Polymer Framework
Google Polymer FrameworkGoogle Polymer Framework
Google Polymer Framework
Kostas Karolemeas
 
Web Components + Backbone: a Game-Changing Combination
Web Components + Backbone: a Game-Changing CombinationWeb Components + Backbone: a Game-Changing Combination
Web Components + Backbone: a Game-Changing Combination
Andrew Rota
 
Polymer, A Web Component Polyfill Library
Polymer, A Web Component Polyfill LibraryPolymer, A Web Component Polyfill Library
Polymer, A Web Component Polyfill Library
naohito maeda
 
Polymer
Polymer Polymer
Polymer jskvara
 
Polymer
PolymerPolymer
Polymer
LearningTech
 
Web Components
Web ComponentsWeb Components
Web Components
FITC
 
A brave new web - A talk about Web Components
A brave new web - A talk about Web ComponentsA brave new web - A talk about Web Components
A brave new web - A talk about Web Components
Michiel De Mey
 
The rise of Polymer and Web Components (Kostas Karolemeas) - GreeceJS #17
The rise of Polymer and Web Components (Kostas Karolemeas) - GreeceJS #17The rise of Polymer and Web Components (Kostas Karolemeas) - GreeceJS #17
The rise of Polymer and Web Components (Kostas Karolemeas) - GreeceJS #17
GreeceJS
 
Web Components & Polymer 1.0 (Webinale Berlin)
Web Components & Polymer 1.0 (Webinale Berlin)Web Components & Polymer 1.0 (Webinale Berlin)
Web Components & Polymer 1.0 (Webinale Berlin)
Hendrik Ebbers
 
HTML5 - Introduction
HTML5 - IntroductionHTML5 - Introduction
HTML5 - Introduction
Davy De Pauw
 
Google Developer Group(GDG) DevFest Event 2012 Android talk
Google Developer Group(GDG) DevFest Event 2012 Android talkGoogle Developer Group(GDG) DevFest Event 2012 Android talk
Google Developer Group(GDG) DevFest Event 2012 Android talk
Imam Raza
 
Polymer & the web components revolution 6:25:14
Polymer & the web components revolution 6:25:14Polymer & the web components revolution 6:25:14
Polymer & the web components revolution 6:25:14
mattsmcnulty
 
The Complementarity of React and Web Components
The Complementarity of React and Web ComponentsThe Complementarity of React and Web Components
The Complementarity of React and Web Components
Andrew Rota
 
Web components
Web componentsWeb components
Web components
Gil Fink
 
Web Components
Web ComponentsWeb Components
Web Components
FITC
 
Build Reusable Web Components using HTML5 Web cComponents
Build Reusable Web Components using HTML5 Web cComponentsBuild Reusable Web Components using HTML5 Web cComponents
Build Reusable Web Components using HTML5 Web cComponents
Gil Fink
 
Intro to html 5
Intro to html 5Intro to html 5
Intro to html 5
Ian Jasper Mangampo
 
Web Components with Polymer (extra Polymer 2.0)
Web Components with Polymer (extra Polymer 2.0)Web Components with Polymer (extra Polymer 2.0)
Web Components with Polymer (extra Polymer 2.0)
Dhyego Fernando
 
Custom Elements with Polymer Web Components #econfpsu16
Custom Elements with Polymer Web Components #econfpsu16Custom Elements with Polymer Web Components #econfpsu16
Custom Elements with Polymer Web Components #econfpsu16
John Riviello
 
Web components the future is here
Web components   the future is hereWeb components   the future is here
Web components the future is here
Gil Fink
 

What's hot (20)

Google Polymer Framework
Google Polymer FrameworkGoogle Polymer Framework
Google Polymer Framework
 
Web Components + Backbone: a Game-Changing Combination
Web Components + Backbone: a Game-Changing CombinationWeb Components + Backbone: a Game-Changing Combination
Web Components + Backbone: a Game-Changing Combination
 
Polymer, A Web Component Polyfill Library
Polymer, A Web Component Polyfill LibraryPolymer, A Web Component Polyfill Library
Polymer, A Web Component Polyfill Library
 
Polymer
Polymer Polymer
Polymer
 
Polymer
PolymerPolymer
Polymer
 
Web Components
Web ComponentsWeb Components
Web Components
 
A brave new web - A talk about Web Components
A brave new web - A talk about Web ComponentsA brave new web - A talk about Web Components
A brave new web - A talk about Web Components
 
The rise of Polymer and Web Components (Kostas Karolemeas) - GreeceJS #17
The rise of Polymer and Web Components (Kostas Karolemeas) - GreeceJS #17The rise of Polymer and Web Components (Kostas Karolemeas) - GreeceJS #17
The rise of Polymer and Web Components (Kostas Karolemeas) - GreeceJS #17
 
Web Components & Polymer 1.0 (Webinale Berlin)
Web Components & Polymer 1.0 (Webinale Berlin)Web Components & Polymer 1.0 (Webinale Berlin)
Web Components & Polymer 1.0 (Webinale Berlin)
 
HTML5 - Introduction
HTML5 - IntroductionHTML5 - Introduction
HTML5 - Introduction
 
Google Developer Group(GDG) DevFest Event 2012 Android talk
Google Developer Group(GDG) DevFest Event 2012 Android talkGoogle Developer Group(GDG) DevFest Event 2012 Android talk
Google Developer Group(GDG) DevFest Event 2012 Android talk
 
Polymer & the web components revolution 6:25:14
Polymer & the web components revolution 6:25:14Polymer & the web components revolution 6:25:14
Polymer & the web components revolution 6:25:14
 
The Complementarity of React and Web Components
The Complementarity of React and Web ComponentsThe Complementarity of React and Web Components
The Complementarity of React and Web Components
 
Web components
Web componentsWeb components
Web components
 
Web Components
Web ComponentsWeb Components
Web Components
 
Build Reusable Web Components using HTML5 Web cComponents
Build Reusable Web Components using HTML5 Web cComponentsBuild Reusable Web Components using HTML5 Web cComponents
Build Reusable Web Components using HTML5 Web cComponents
 
Intro to html 5
Intro to html 5Intro to html 5
Intro to html 5
 
Web Components with Polymer (extra Polymer 2.0)
Web Components with Polymer (extra Polymer 2.0)Web Components with Polymer (extra Polymer 2.0)
Web Components with Polymer (extra Polymer 2.0)
 
Custom Elements with Polymer Web Components #econfpsu16
Custom Elements with Polymer Web Components #econfpsu16Custom Elements with Polymer Web Components #econfpsu16
Custom Elements with Polymer Web Components #econfpsu16
 
Web components the future is here
Web components   the future is hereWeb components   the future is here
Web components the future is here
 

Viewers also liked

Καβάφης Κωνσταντίνος
Καβάφης ΚωνσταντίνοςΚαβάφης Κωνσταντίνος
Καβάφης Κωνσταντίνος
nicolaidoumarina
 
ΟΙ ΖΟΥΛΟΥ Παναγιώτα
ΟΙ ΖΟΥΛΟΥ  ΠαναγιώταΟΙ ΖΟΥΛΟΥ  Παναγιώτα
ΟΙ ΖΟΥΛΟΥ Παναγιώτα
nicolaidoumarina
 
Mεσαιωνικο καστρο λεμεσου
Mεσαιωνικο καστρο λεμεσουMεσαιωνικο καστρο λεμεσου
Mεσαιωνικο καστρο λεμεσου
nicolaidoumarina
 
بحث د عهد حوري
بحث د عهد حوريبحث د عهد حوري
بحث د عهد حوري
محز اليسرى
 
Μάγια Ζαχαρίας
Μάγια ΖαχαρίαςΜάγια Ζαχαρίας
Μάγια Ζαχαρίας
nicolaidoumarina
 
49201940 schaffer-psihologia-copilului-partea-1
49201940 schaffer-psihologia-copilului-partea-149201940 schaffer-psihologia-copilului-partea-1
49201940 schaffer-psihologia-copilului-partea-1
Holhos Flavia
 
Το καστρο της λεμεσου
Το καστρο της λεμεσου Το καστρο της λεμεσου
Το καστρο της λεμεσου
nicolaidoumarina
 
What is a startup
What is a startupWhat is a startup
What is a startup
Mohammadreza Hosseini
 
Short film festivals
Short film festivalsShort film festivals
Short film festivals
pelboy123
 
Το μεσαιωνικό κάστρο λεμεσού
Το μεσαιωνικό κάστρο λεμεσούΤο μεσαιωνικό κάστρο λεμεσού
Το μεσαιωνικό κάστρο λεμεσού
nicolaidoumarina
 
Packpin SV2B presentation
Packpin SV2B presentationPackpin SV2B presentation
Packpin SV2B presentation
packpin
 
3d printing....science....
3d printing....science....3d printing....science....
3d printing....science....
ikbal ahmed
 
ΟΔΟΣ ΔΗΜΟΣΘΕΝΗ ΜΙΤΣΗ ΛΕΜΕΣΟΣ
ΟΔΟΣ ΔΗΜΟΣΘΕΝΗ ΜΙΤΣΗ ΛΕΜΕΣΟΣΟΔΟΣ ΔΗΜΟΣΘΕΝΗ ΜΙΤΣΗ ΛΕΜΕΣΟΣ
ΟΔΟΣ ΔΗΜΟΣΘΕΝΗ ΜΙΤΣΗ ΛΕΜΕΣΟΣ
nicolaidoumarina
 
Καβάφης Κωνσταντίνος
Καβάφης ΚωνσταντίνοςΚαβάφης Κωνσταντίνος
Καβάφης Κωνσταντίνος
nicolaidoumarina
 
Senarai nama tahun 1 (linus)
Senarai nama tahun 1 (linus)Senarai nama tahun 1 (linus)
Senarai nama tahun 1 (linus)
Ross Aaron
 
RENNIE COWAN - DIRECTOR REEL
RENNIE COWAN - DIRECTOR REEL RENNIE COWAN - DIRECTOR REEL
RENNIE COWAN - DIRECTOR REEL
Rennie_Cowan_Films_Art
 
ΟΔΟΣ Δ. ΜΙΤΣΗ ΛΕΜΕΣΟΣ
ΟΔΟΣ Δ. ΜΙΤΣΗ ΛΕΜΕΣΟΣΟΔΟΣ Δ. ΜΙΤΣΗ ΛΕΜΕΣΟΣ
ΟΔΟΣ Δ. ΜΙΤΣΗ ΛΕΜΕΣΟΣ
nicolaidoumarina
 
κάστρο του κολοσσιού
κάστρο του κολοσσιούκάστρο του κολοσσιού
κάστρο του κολοσσιού
nicolaidoumarina
 
RENNIE COWAN PHOTOGRAPHY
RENNIE COWAN PHOTOGRAPHYRENNIE COWAN PHOTOGRAPHY
RENNIE COWAN PHOTOGRAPHY
Rennie_Cowan_Films_Art
 

Viewers also liked (20)

Καβάφης Κωνσταντίνος
Καβάφης ΚωνσταντίνοςΚαβάφης Κωνσταντίνος
Καβάφης Κωνσταντίνος
 
ΟΙ ΖΟΥΛΟΥ Παναγιώτα
ΟΙ ΖΟΥΛΟΥ  ΠαναγιώταΟΙ ΖΟΥΛΟΥ  Παναγιώτα
ΟΙ ΖΟΥΛΟΥ Παναγιώτα
 
Mεσαιωνικο καστρο λεμεσου
Mεσαιωνικο καστρο λεμεσουMεσαιωνικο καστρο λεμεσου
Mεσαιωνικο καστρο λεμεσου
 
بحث د عهد حوري
بحث د عهد حوريبحث د عهد حوري
بحث د عهد حوري
 
Μάγια Ζαχαρίας
Μάγια ΖαχαρίαςΜάγια Ζαχαρίας
Μάγια Ζαχαρίας
 
49201940 schaffer-psihologia-copilului-partea-1
49201940 schaffer-psihologia-copilului-partea-149201940 schaffer-psihologia-copilului-partea-1
49201940 schaffer-psihologia-copilului-partea-1
 
Το καστρο της λεμεσου
Το καστρο της λεμεσου Το καστρο της λεμεσου
Το καστρο της λεμεσου
 
What is a startup
What is a startupWhat is a startup
What is a startup
 
Short film festivals
Short film festivalsShort film festivals
Short film festivals
 
Το μεσαιωνικό κάστρο λεμεσού
Το μεσαιωνικό κάστρο λεμεσούΤο μεσαιωνικό κάστρο λεμεσού
Το μεσαιωνικό κάστρο λεμεσού
 
Packpin SV2B presentation
Packpin SV2B presentationPackpin SV2B presentation
Packpin SV2B presentation
 
Passive voive
Passive voivePassive voive
Passive voive
 
3d printing....science....
3d printing....science....3d printing....science....
3d printing....science....
 
ΟΔΟΣ ΔΗΜΟΣΘΕΝΗ ΜΙΤΣΗ ΛΕΜΕΣΟΣ
ΟΔΟΣ ΔΗΜΟΣΘΕΝΗ ΜΙΤΣΗ ΛΕΜΕΣΟΣΟΔΟΣ ΔΗΜΟΣΘΕΝΗ ΜΙΤΣΗ ΛΕΜΕΣΟΣ
ΟΔΟΣ ΔΗΜΟΣΘΕΝΗ ΜΙΤΣΗ ΛΕΜΕΣΟΣ
 
Καβάφης Κωνσταντίνος
Καβάφης ΚωνσταντίνοςΚαβάφης Κωνσταντίνος
Καβάφης Κωνσταντίνος
 
Senarai nama tahun 1 (linus)
Senarai nama tahun 1 (linus)Senarai nama tahun 1 (linus)
Senarai nama tahun 1 (linus)
 
RENNIE COWAN - DIRECTOR REEL
RENNIE COWAN - DIRECTOR REEL RENNIE COWAN - DIRECTOR REEL
RENNIE COWAN - DIRECTOR REEL
 
ΟΔΟΣ Δ. ΜΙΤΣΗ ΛΕΜΕΣΟΣ
ΟΔΟΣ Δ. ΜΙΤΣΗ ΛΕΜΕΣΟΣΟΔΟΣ Δ. ΜΙΤΣΗ ΛΕΜΕΣΟΣ
ΟΔΟΣ Δ. ΜΙΤΣΗ ΛΕΜΕΣΟΣ
 
κάστρο του κολοσσιού
κάστρο του κολοσσιούκάστρο του κολοσσιού
κάστρο του κολοσσιού
 
RENNIE COWAN PHOTOGRAPHY
RENNIE COWAN PHOTOGRAPHYRENNIE COWAN PHOTOGRAPHY
RENNIE COWAN PHOTOGRAPHY
 

Similar to Web Components and Modular CSS

Polymer 1.0
Polymer 1.0Polymer 1.0
Polymer 1.0
Cyril Balit
 
Web components - An Introduction
Web components - An IntroductionWeb components - An Introduction
Web components - An Introduction
cherukumilli2
 
Introduction to Polymer and Firebase - Simon Gauvin
Introduction to Polymer and Firebase - Simon GauvinIntroduction to Polymer and Firebase - Simon Gauvin
Introduction to Polymer and Firebase - Simon Gauvin
Simon Gauvin
 
Polymer - Lego for the web!
Polymer - Lego for the web!Polymer - Lego for the web!
Polymer - Lego for the web!
Codemotion
 
Web Components: back to the future
Web Components: back to the futureWeb Components: back to the future
Web Components: back to the future
DA-14
 
Web components
Web componentsWeb components
Web components
Noam Kfir
 
Up & Running with Polymer
Up & Running with PolymerUp & Running with Polymer
Up & Running with Polymer
Fiyaz Hasan
 
Web Components: The future of Web Application Development
Web Components: The future of Web Application DevelopmentWeb Components: The future of Web Application Development
Web Components: The future of Web Application Development
Jermaine Oppong
 
Devoxx 2014-webComponents
Devoxx 2014-webComponentsDevoxx 2014-webComponents
Devoxx 2014-webComponents
Cyril Balit
 
e-suap - client technologies- english version
e-suap - client technologies- english versione-suap - client technologies- english version
e-suap - client technologies- english version
Sabino Labarile
 
Polytechnic 1.0 Granada
Polytechnic 1.0 GranadaPolytechnic 1.0 Granada
Polytechnic 1.0 Granada
Israel Blancas
 
Introduction to web compoents
Introduction to web compoentsIntroduction to web compoents
Introduction to web compoents
Ran Wahle
 
Web Components v1
Web Components v1Web Components v1
Web Components v1
Mike Wilcox
 
Orchard Harvest 2014 - The Future of Widgets?
Orchard Harvest 2014 - The Future of Widgets?Orchard Harvest 2014 - The Future of Widgets?
Orchard Harvest 2014 - The Future of Widgets?
Steve Taylor
 
Front End Good Practices
Front End Good PracticesFront End Good Practices
Front End Good PracticesHernan Mammana
 
Modern frontend development with VueJs
Modern frontend development with VueJsModern frontend development with VueJs
Modern frontend development with VueJs
Tudor Barbu
 
Polymer Code Lab in Dart - DevFest Kraków 2014
Polymer Code Lab in Dart - DevFest Kraków 2014Polymer Code Lab in Dart - DevFest Kraków 2014
Polymer Code Lab in Dart - DevFest Kraków 2014
jskvara
 
Web Components - The Future is Here
Web Components - The Future is HereWeb Components - The Future is Here
Web Components - The Future is Here
Gil Fink
 

Similar to Web Components and Modular CSS (20)

Polymer 1.0
Polymer 1.0Polymer 1.0
Polymer 1.0
 
Web components - An Introduction
Web components - An IntroductionWeb components - An Introduction
Web components - An Introduction
 
Introduction to Polymer and Firebase - Simon Gauvin
Introduction to Polymer and Firebase - Simon GauvinIntroduction to Polymer and Firebase - Simon Gauvin
Introduction to Polymer and Firebase - Simon Gauvin
 
Polymer - Lego for the web!
Polymer - Lego for the web!Polymer - Lego for the web!
Polymer - Lego for the web!
 
Web Components: back to the future
Web Components: back to the futureWeb Components: back to the future
Web Components: back to the future
 
Web components
Web componentsWeb components
Web components
 
Up & Running with Polymer
Up & Running with PolymerUp & Running with Polymer
Up & Running with Polymer
 
Web Components: The future of Web Application Development
Web Components: The future of Web Application DevelopmentWeb Components: The future of Web Application Development
Web Components: The future of Web Application Development
 
Devoxx 2014-webComponents
Devoxx 2014-webComponentsDevoxx 2014-webComponents
Devoxx 2014-webComponents
 
Dart Workshop
Dart WorkshopDart Workshop
Dart Workshop
 
e-suap - client technologies- english version
e-suap - client technologies- english versione-suap - client technologies- english version
e-suap - client technologies- english version
 
Knockout.js
Knockout.jsKnockout.js
Knockout.js
 
Polytechnic 1.0 Granada
Polytechnic 1.0 GranadaPolytechnic 1.0 Granada
Polytechnic 1.0 Granada
 
Introduction to web compoents
Introduction to web compoentsIntroduction to web compoents
Introduction to web compoents
 
Web Components v1
Web Components v1Web Components v1
Web Components v1
 
Orchard Harvest 2014 - The Future of Widgets?
Orchard Harvest 2014 - The Future of Widgets?Orchard Harvest 2014 - The Future of Widgets?
Orchard Harvest 2014 - The Future of Widgets?
 
Front End Good Practices
Front End Good PracticesFront End Good Practices
Front End Good Practices
 
Modern frontend development with VueJs
Modern frontend development with VueJsModern frontend development with VueJs
Modern frontend development with VueJs
 
Polymer Code Lab in Dart - DevFest Kraków 2014
Polymer Code Lab in Dart - DevFest Kraków 2014Polymer Code Lab in Dart - DevFest Kraków 2014
Polymer Code Lab in Dart - DevFest Kraków 2014
 
Web Components - The Future is Here
Web Components - The Future is HereWeb Components - The Future is Here
Web Components - The Future is Here
 

More from Andrew Rota

Integrating React.js Into a PHP Application: Dutch PHP 2019
Integrating React.js Into a PHP Application: Dutch PHP 2019Integrating React.js Into a PHP Application: Dutch PHP 2019
Integrating React.js Into a PHP Application: Dutch PHP 2019
Andrew Rota
 
Performant APIs with GraphQL and PHP (Dutch PHP 2019)
Performant APIs with GraphQL and PHP (Dutch PHP 2019)Performant APIs with GraphQL and PHP (Dutch PHP 2019)
Performant APIs with GraphQL and PHP (Dutch PHP 2019)
Andrew Rota
 
Getting Started with GraphQL && PHP
Getting Started with GraphQL && PHPGetting Started with GraphQL && PHP
Getting Started with GraphQL && PHP
Andrew Rota
 
Tutorial: Building a GraphQL API in PHP
Tutorial: Building a GraphQL API in PHPTutorial: Building a GraphQL API in PHP
Tutorial: Building a GraphQL API in PHP
Andrew Rota
 
Building a GraphQL API in PHP
Building a GraphQL API in PHPBuilding a GraphQL API in PHP
Building a GraphQL API in PHP
Andrew Rota
 
Ten practical ways to improve front-end performance
Ten practical ways to improve front-end performanceTen practical ways to improve front-end performance
Ten practical ways to improve front-end performance
Andrew Rota
 
Component Based UI Architectures for the Web
Component Based UI Architectures for the WebComponent Based UI Architectures for the Web
Component Based UI Architectures for the Web
Andrew Rota
 
Client-Side Performance Monitoring (MobileTea, Rome)
Client-Side Performance Monitoring (MobileTea, Rome)Client-Side Performance Monitoring (MobileTea, Rome)
Client-Side Performance Monitoring (MobileTea, Rome)
Andrew Rota
 
Integrating React.js Into a PHP Application
Integrating React.js Into a PHP ApplicationIntegrating React.js Into a PHP Application
Integrating React.js Into a PHP Application
Andrew Rota
 
Effectively Monitoring Client-Side Performance
Effectively Monitoring Client-Side PerformanceEffectively Monitoring Client-Side Performance
Effectively Monitoring Client-Side Performance
Andrew Rota
 
UI Rendering at Wayfair
UI Rendering at WayfairUI Rendering at Wayfair
UI Rendering at Wayfair
Andrew Rota
 
Better PHP-Frontend Integration with Tungsten.js
Better PHP-Frontend Integration with Tungsten.jsBetter PHP-Frontend Integration with Tungsten.js
Better PHP-Frontend Integration with Tungsten.js
Andrew Rota
 
Tungsten.js: Building a Modular Framework
Tungsten.js: Building a Modular FrameworkTungsten.js: Building a Modular Framework
Tungsten.js: Building a Modular Framework
Andrew Rota
 
Why Static Type Checking is Better
Why Static Type Checking is BetterWhy Static Type Checking is Better
Why Static Type Checking is Better
Andrew Rota
 
An Exploration of Frameworks – and Why We Built Our Own
An Exploration of Frameworks – and Why We Built Our OwnAn Exploration of Frameworks – and Why We Built Our Own
An Exploration of Frameworks – and Why We Built Our Own
Andrew Rota
 
Bem methodology
Bem methodologyBem methodology
Bem methodology
Andrew Rota
 

More from Andrew Rota (16)

Integrating React.js Into a PHP Application: Dutch PHP 2019
Integrating React.js Into a PHP Application: Dutch PHP 2019Integrating React.js Into a PHP Application: Dutch PHP 2019
Integrating React.js Into a PHP Application: Dutch PHP 2019
 
Performant APIs with GraphQL and PHP (Dutch PHP 2019)
Performant APIs with GraphQL and PHP (Dutch PHP 2019)Performant APIs with GraphQL and PHP (Dutch PHP 2019)
Performant APIs with GraphQL and PHP (Dutch PHP 2019)
 
Getting Started with GraphQL && PHP
Getting Started with GraphQL && PHPGetting Started with GraphQL && PHP
Getting Started with GraphQL && PHP
 
Tutorial: Building a GraphQL API in PHP
Tutorial: Building a GraphQL API in PHPTutorial: Building a GraphQL API in PHP
Tutorial: Building a GraphQL API in PHP
 
Building a GraphQL API in PHP
Building a GraphQL API in PHPBuilding a GraphQL API in PHP
Building a GraphQL API in PHP
 
Ten practical ways to improve front-end performance
Ten practical ways to improve front-end performanceTen practical ways to improve front-end performance
Ten practical ways to improve front-end performance
 
Component Based UI Architectures for the Web
Component Based UI Architectures for the WebComponent Based UI Architectures for the Web
Component Based UI Architectures for the Web
 
Client-Side Performance Monitoring (MobileTea, Rome)
Client-Side Performance Monitoring (MobileTea, Rome)Client-Side Performance Monitoring (MobileTea, Rome)
Client-Side Performance Monitoring (MobileTea, Rome)
 
Integrating React.js Into a PHP Application
Integrating React.js Into a PHP ApplicationIntegrating React.js Into a PHP Application
Integrating React.js Into a PHP Application
 
Effectively Monitoring Client-Side Performance
Effectively Monitoring Client-Side PerformanceEffectively Monitoring Client-Side Performance
Effectively Monitoring Client-Side Performance
 
UI Rendering at Wayfair
UI Rendering at WayfairUI Rendering at Wayfair
UI Rendering at Wayfair
 
Better PHP-Frontend Integration with Tungsten.js
Better PHP-Frontend Integration with Tungsten.jsBetter PHP-Frontend Integration with Tungsten.js
Better PHP-Frontend Integration with Tungsten.js
 
Tungsten.js: Building a Modular Framework
Tungsten.js: Building a Modular FrameworkTungsten.js: Building a Modular Framework
Tungsten.js: Building a Modular Framework
 
Why Static Type Checking is Better
Why Static Type Checking is BetterWhy Static Type Checking is Better
Why Static Type Checking is Better
 
An Exploration of Frameworks – and Why We Built Our Own
An Exploration of Frameworks – and Why We Built Our OwnAn Exploration of Frameworks – and Why We Built Our Own
An Exploration of Frameworks – and Why We Built Our Own
 
Bem methodology
Bem methodologyBem methodology
Bem methodology
 

Recently uploaded

Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
Alan Dix
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
Alpen-Adria-Universität
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
UiPathCommunity
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
Kari Kakkonen
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance
 
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfSAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
Peter Spielvogel
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
Alex Pruden
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
DanBrown980551
 
Enhancing Performance with Globus and the Science DMZ
Enhancing Performance with Globus and the Science DMZEnhancing Performance with Globus and the Science DMZ
Enhancing Performance with Globus and the Science DMZ
Globus
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
BookNet Canada
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
Kari Kakkonen
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
Dorra BARTAGUIZ
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
Guy Korland
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
sonjaschweigert1
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
Ralf Eggert
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
OnBoard
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
91mobiles
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
Aftab Hussain
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
Adtran
 

Recently uploaded (20)

Epistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI supportEpistemic Interaction - tuning interfaces to provide information for AI support
Epistemic Interaction - tuning interfaces to provide information for AI support
 
Video Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the FutureVideo Streaming: Then, Now, and in the Future
Video Streaming: Then, Now, and in the Future
 
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...
 
DevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA ConnectDevOps and Testing slides at DASA Connect
DevOps and Testing slides at DASA Connect
 
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdfFIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
FIDO Alliance Osaka Seminar: The WebAuthn API and Discoverable Credentials.pdf
 
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfSAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdf
 
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex ProofszkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
zkStudyClub - Reef: Fast Succinct Non-Interactive Zero-Knowledge Regex Proofs
 
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...
 
Enhancing Performance with Globus and the Science DMZ
Enhancing Performance with Globus and the Science DMZEnhancing Performance with Globus and the Science DMZ
Enhancing Performance with Globus and the Science DMZ
 
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...Transcript: Selling digital books in 2024: Insights from industry leaders - T...
Transcript: Selling digital books in 2024: Insights from industry leaders - T...
 
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdfFIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
FIDO Alliance Osaka Seminar: Passkeys at Amazon.pdf
 
Climate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing DaysClimate Impact of Software Testing at Nordic Testing Days
Climate Impact of Software Testing at Nordic Testing Days
 
Elevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object CalisthenicsElevating Tactical DDD Patterns Through Object Calisthenics
Elevating Tactical DDD Patterns Through Object Calisthenics
 
GraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge GraphGraphRAG is All You need? LLM & Knowledge Graph
GraphRAG is All You need? LLM & Knowledge Graph
 
A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...A tale of scale & speed: How the US Navy is enabling software delivery from l...
A tale of scale & speed: How the US Navy is enabling software delivery from l...
 
PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)PHP Frameworks: I want to break free (IPC Berlin 2024)
PHP Frameworks: I want to break free (IPC Berlin 2024)
 
Leading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdfLeading Change strategies and insights for effective change management pdf 1.pdf
Leading Change strategies and insights for effective change management pdf 1.pdf
 
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdfSmart TV Buyer Insights Survey 2024 by 91mobiles.pdf
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf
 
Removing Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software FuzzingRemoving Uninteresting Bytes in Software Fuzzing
Removing Uninteresting Bytes in Software Fuzzing
 
Pushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 daysPushing the limits of ePRTC: 100ns holdover for 100 days
Pushing the limits of ePRTC: 100ns holdover for 100 days
 

Web Components and Modular CSS

  • 1. Web Components and Modular CSS @AndrewRota | CSS Dev Conf 2014
  • 4. CSS Features Encapsulation Scope Interfaces Modularity
  • 5. Modular CSS Patterns BEM SMACSS Atomic CSS OOCSS
  • 6. BEM /* Block */ .nav { } /* Element */ .nav__item { } /* Block with Modifier */ .nav--hidden { } /* Element with Modifier */ .nav__item--current { }
  • 7. SMACSS /* Module */ .nav { } /* Module with State */ .nav.is-current { } /* Module with Semantic Element Selector */ .nav > h2 { } /* Layout Style */ .l-inline { }
  • 8. Web Components Web Components usher in a new era of web development based on encapsulated and interoperable custom elements that extend HTML itself. - Polymer
  • 9. Web Components APIs Custom Elements HTML Templates HTML Imports Shadow DOM
  • 10. Custom Elements <my-element>Hello World.</my-element> var MyElement = document.registerElement('my-element', { prototype: Object.create(HTMLElement.prototype) });
  • 11. HTML Templates <template id="my-template"> <p>Hello World.</p> <!-- This image won't be downloaded on page load --> <img src="example.jpg" alt="Example"> </template> document.importNode( document.getElementById('my-template').content, true );
  • 12. HTML Imports <link rel="import" href="/imports/my-component.html">
  • 13. Shadow DOM // Create Shadow Root document.getElementById('my-element').createShadowRoot(); // Access Shadow Root document.getElementById('my-element').shadowRoot;
  • 14. User Agent Shadow DOM <video src="#" controls></video> 0:00
  • 15. User Agent Shadow DOM <input type="date"> mm/dd/yyyy
  • 16. Shadow DOM Shadow DOM. Light DOM. <div id="my-first-element"></div><p>Light DOM.</p> // Create Shadow Root var s = document.getElementById('my-first-element').createShadowRoot // Add Styles and Text s.innerHTML += '<style>p { color: crimson; margin: 5px 0 5px 0;}</s.innerHTML += '<p>Shadow DOM.</p>';
  • 17. Content Insertion Points <div id="my-second-element"> <content></content> </div>
  • 18. Shadow DOM and <content> Shadow DOM Start. Hello! Shadow DOM End. <div id="my-second-element"><p>Hello!</p></div> var s = document.getElementById('my-second-element').createShadowRoot s.innerHTML += '<p>Shadow DOM Start.</p>'; s.innerHTML += '<style>p { color: crimson; margin: 5px 0; }</style>' s.innerHTML += '<content></content>'; s.innerHTML += '<p>Shadow DOM End.</p>';
  • 19. Into the Light /* pseudo-class for host element*/ :host { } /* functional pseudo-class, for host if it matches the selector argument :host() { } /* functional pseudo-class, for host context that matches selector :host-context() { } /* pseudo-element, for distributed notes rendered via a <content> ::content { }
  • 20. Into the Dark /* pseudo-element for shadow roots */ ::shadow { } /* combinator for selecting through shadow boundaries */ body /deep/ p { } [/deep/] is basically a super-descendant combinator. - CSS Scoping Module Draft, Issue 6
  • 21. Let's Write a Component Hello world, I am a web component. <link rel="import" href="../assets/hello-world.html"> <hello-world>I am a <strong>web component</strong></hello-world
  • 22. Let's Write a Component Hello world, I am a web component. <template id="hw"> <style> ::content strong { color: crimson; } p { margin: 2px 20px 2px 0; } :host { border: 1px solid FireBrick; display: block; margin-right .hello { color: #91D4D; } </style> <p><span class="hello">Hello world</span>, <content></content </template>
  • 23. Let's Write a Component Hello world, I am a web component. var importedDoc = document.currentScript.ownerDocument; var elementPrototype = Object.create(HTMLElement.prototype); elementPrototype.createdCallback = function() { var template = importedDoc.getElementById('hw').content; var clone = document.importNode(template, true); this.createShadowRoot().appendChild(clone); }; document.registerElement('hello-world', {prototype: elementPrototype
  • 24. Can I Use??? Custom Elements HTML Templates HTML Imports Shadow DOM - - - - - - - - Flag - Flag Flag X - X X X X X X
  • 26. When To Use Web Components? Third Party Widgets? Third Party UI Libraries? Internal UI Libraries? Web Component All the Things!?
  • 27. Third Party Widgets <google-map latitude="29.954356" longitude="-90.067863"> </google-map>
  • 28. Third Party UI Libraries CSS HTML JS <paper-radio-group selected="css"> <paper-radio-button name="css" label="CSS"></paper-radio-button </paper-radio-group> <paper-slider value="10"></paper-slider>
  • 29. Internal UI Libraries <acme-corp--menu> <acme-corp--menu-item>Home</acme-corp--menu-item> <acme-corp--menu-item selected>About</acme-corp--menu-item> <acme-corp--menu-item>Contact Us</acme-corp--menu-item> </acme-corp--menu> <acme-corp--login-form ajax url="login.php"> </acme-corp--login-form>
  • 30. Web Component Everything?? <acme-corp--app> <acme-corp--menu></acme-corp--menu> <acme-corp--content></acme-corp--content> <acme-corp--footer></acme-corp--footer> </acme-corp--app>
  • 31. Probably Not (and that's OK) I don't ever see us going all in on Custom Elements for every possible thing ... Use native elements and controls when possible and supplement with custom elements. - Joshua Peek, Github Programmer
  • 32. Small Open for Extension Documented Unit Tested Accessible Responsive Best Practices
  • 35. Towards a Component Driven Web
  • 36. Thanks! Resources - WebComponents.org - Web Components: A Tectonic Shift for Web Development by Eric Bidelman - Web Components by Jarrod Overson and Jason Strimpel - Ten Principles for Great General Purpose Web Components Colophon This presentation was built with Shadow DOM, HTML Templates, HTML Imports, and the Custom Elements <slide-show> and <slide-content> using Web Component Slides.