WebComponents LT at AQ

19
WebComponents iwanaga

Transcript of WebComponents LT at AQ

Page 1: WebComponents LT at AQ

WebComponentsiwanaga

Page 2: WebComponents LT at AQ

Who am I

Working at

Twitter bot@quake_alert@quake_alert_en

Yoshihiro Iwanaga

Page 3: WebComponents LT at AQ

What is WebComponents?

Provides mechanismfor the declaration of markup prototype.

(W3C Working Draft)

Makes reusing and composing HTML components much easier

Page 4: WebComponents LT at AQ
Page 5: WebComponents LT at AQ
Page 6: WebComponents LT at AQ

The component modelfor the WebComponents

1. Templates

2. Decorators

3. Custom Elements

4. Shadow DOM

5. Imports

Page 7: WebComponents LT at AQ

Templates

<template id="t">  <div>    <h2>デフォルトテキスト</h2>    <figure>      <img alt="image">      <figcaption>キャプション</figcaption>      <button>イイネ!</button>    </figure>  </div></template>

Page 8: WebComponents LT at AQ

insert template to DOM

var t = document.getElementById('t');var clone = t.content.cloneNode(true);clone.querySelector('h2').textContent = 'テキスト ';clone.querySelector('img').src = 'image.png';clone.querySelector('figcaption').textContent = 'キャプション ';document.body.appendChild(clone);

<template id="t">  <div>    <h2>デフォルトテキスト</h2>    <figure>      <img alt="image">      <figcaption>キャプション</figcaption>      <button>イイネ!</button>    </figure>  </div></template>

Page 9: WebComponents LT at AQ

demo

Page 10: WebComponents LT at AQ

Shadow DOM

Establishes functional boundariesin document tree.

Document tree boundary

Shadow tree

Page 11: WebComponents LT at AQ

Shadow DOM<div id="target"></div>

<script> document.addEventListener("DOMContentLoaded", function(){ /* not supported */ //var shadow = document.getElementById("target”) .createShadowRoot();

/* deprecated. Webkit Only */ //var shadow = new WebKitShadowRoot( document.getElementById("target"));

/* Webkit Only */ var shadow = document.getElementById("target") .webkitCreateShadowRoot(); shadow.innerHTML = '<h2>this is shadow tree</h2>' + '<img src="image.jpg">'; }, false);</script>

Page 12: WebComponents LT at AQ

demo

Page 13: WebComponents LT at AQ

Wait !!How is the Style inheritance?

Page 14: WebComponents LT at AQ

<script> document.addEventListener("DOMContentLoaded", function(){ /* not supported */ //var shadow = document.getElementById("target”) .createShadowRoot();

/* Webkit Only */ var shadow = document.getElementById("target") .webkitCreateShadowRoot();

/* resetStyleInheritance */

shadow.resetStyleInheritance = true;

shadow.innerHTML = '<h2>this is shadow tree</h2>' + '<img src="image.jpg">'; }, false);</script>

Preventing the CSS inheritance

Page 15: WebComponents LT at AQ

demo

Page 16: WebComponents LT at AQ

How is the browser compatibility?

Page 17: WebComponents LT at AQ

Browser Compatibility

lol

Page 18: WebComponents LT at AQ

Frameworks

http://www.polymer-project.org/

Polymer

Brickhttp://mozilla.github.io/brick/

Page 19: WebComponents LT at AQ

Thanks

@quake_alert@quake_alert_en

please follow