View
226
Download
1
Category
Tags:
Preview:
Citation preview
WEB COMPONENTS
DESIGNING WITH
@jasonadelia
NASDAQ DESIGN
@jasonadelia
CONSISTENCY REUSABILITY MAINTENANCE
CONSISTENCY
@jasonadelia
widget
widget
widget
CONSISTENCY
@jasonadelia
widget
widget
widget
CONSISTENCY
@jasonadelia
widget
widget
widget
• style guides
• shared codebases
• homebrew bootstrap
REUSABILITY
@jasonadelia
page
<widget/>
page
<widget/>
page
<widget/>
page
<widget/>
REUSABILITY
@jasonadelia
page
<widget/>
page page
page
REUSABILITY
@jasonadelia
page
<widget/>
page page
page
• atomic design
• knockout
• oocss
MAINTENANCE
@jasonadelia
page
<widget/>
page
<widget/>
page page
<widget/> <widget/>
MAINTENANCE
@jasonadelia
page
<widget/>
page
<widget/>
page page
<widget/> <widget/>
MAINTENANCE
@jasonadelia
page
<widget/>
page
<widget/>
page
<widget/>
page
<widget/>
MAINTENANCE
@jasonadelia
page
<widget/>
page
<widget/>
page
<widget/>
page
<widget/>
MAINTENANCE
@jasonadelia
page page
page page
<widget/>
MAINTENANCE
@jasonadelia
• requirejs
page page
page page
<widget/>
WEB COMPONENTS
@jasonadelia
Web Components?
• html imports
• Templating
• shadow dom
• custom elements
HTML IMPORTS TEMPLATING
SHADOW DOM CUSTOM ELEMENTS
CUSTOM ELEMENTS
@jasonadelia
@jasonadelia
//markup
<my-lucha></my-lucha>
@jasonadelia
//markup
<my-lucha></my-lucha>
//styles
my-lucha {
background: red;
}
@jasonadelia
//markup
<my-lucha></my-lucha>
//styles
my-lucha {
background: red;
transform: rotate(45deg);
}
@jasonadelia
//markup
<my-lucha></my-lucha>
<my-lucha></my-lucha>
<my-lucha></my-lucha>
<my-lucha></my-lucha>
<my-lucha></my-lucha>
<my-lucha></my-lucha>
<my-lucha></my-lucha>
//markup<my-lucha>
<h1>Ready For Business</h1>
</my-lucha>
@jasonadelia
Ready For Business
//markup<my-lucha say=“#WebComponentsFTW”>
<h1>Ready For Business</h1>
</my-lucha>
@jasonadelia
Ready For Business
#WebComponentsFTW
<!DOCTYPE html>
<html>
<head>
<style type="text/css">
html, body, #map-canvas { height: 100%; margin: 0; padding: 0; }
</style>
<script type="text/javascript"
src="https://maps.googleapis.com/maps/api/js?key=API_KEY">
</script>
<script type="text/javascript">
function initialize() {
var mapOptions = {
center: { lat: -34.397, lng: 150.644},
zoom: 8
};
var map = new google.maps.Map(document.getElementById('map-canvas'),
mapOptions);
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
</head>
<body>
<div id="map-canvas"></div>
</body>
</html>
<div id="map-canvas"></div>
<style type="text/css">
html, body, #map-canvas { height: 100%; margin: 0; padding: 0; }
</style>
<div id="map-canvas"></div>
<style type="text/css">
html, body, #map-canvas { height: 100%; margin: 0; padding: 0; }
</style>
<script type="text/javascript"
src="https://maps.googleapis.com/maps/api/js?key=API_KEY">
</script>
<div id="map-canvas"></div>
<style type="text/css">
html, body, #map-canvas { height: 100%; margin: 0; padding: 0; }
</style>
<script type="text/javascript"
src="https://maps.googleapis.com/maps/api/js?key=API_KEY">
</script>
<script type="text/javascript">
function initialize() {
var mapOptions = {
center: { lat: -34.397, lng: 150.644},
zoom: 8
};
var map = new google.maps.Map(document.getElementById('map-canvas'),
mapOptions);
}
google.maps.event.addDomListener(window, 'load', initialize);
</script>
<div id="map-canvas"></div>
@jasonadelia
<google-map></google-map>
<google-map lat=“40.756219” lng=“-73.986007”></google-map>
<google-map lat=“40.756219” lng=“-73.986007”
zoom=“19”></google-map>
LET US KNOW
webcomponents.org
polymer-project.org
x-tags.org
@jasonadelia
@NasdaqDesign
TRY IT YOURSELF
Recommended