Web Components

Web Components

Revoluce v HTML?

Ondřej Žára, Seznam.cz

Extensible web

Extensible web

Interoperability

Extensible web: Web Components

Web Components: jak zkoušet

Díl #1: <template>

Začněme s tím nejjednodušším

<template>

<template>

Díl #2: HTML imports

HTML dohání CSS

HTML imports

HTML imports

HTML imports: master→import

<head> <link rel="import" href="/path/to/stuff.html" /> </head> var link = document.querySelector("link[rel=import]"); var node = link.import.querySelector("..."); document.body.appendChild(node);

HTML imports: import→master

<!-- importovaný dokument --> <div>hi there</div> var masterDoc = document; var importDoc = document.currentScript.ownerDocument; var div = importDoc.querySelector("div"); masterDoc.body.appendChild(div);

HTML imports: využití

Díl #3: Custom Elements

Hej, to už jsme za půlkou? Ani náhodou.

Custom Elements: cíl

<szn-map x="..." y="..." controls="keyboard mouse zoom pan" /> var map1 = new SznMap({x:..., y:..., control: ...}); var map2 = document.createElement("szn-map"); document.body.appendChild(map1); map1.appendChild(map2);

Custom Elements: princip

Custom Elements: registerElement

Custom Elements: descriptor

Custom Elements: ukázka

var proto = Object.create(HTMLDivElement.prototype); var SznMap = document.registerElement("szn-map", {prototype:proto});

Custom Elements: rozšíření existujícího

var proto = Object.create(HTMLButtonElement.prototype); var SznButton = document.registerElement("szn-button", { prototype: proto, extends: "button" }); var button = document.createElement("button", "szn-button"); <button is="szn-button" />

Custom Elements: callbacky

Díl #4: Shadow DOM

Skoro by si zasloužil vlastní přednášku

Shadow DOM

Shadow DOM: realizace

Shadow DOM: CSS

Shadow DOM: Události

Shadow DOM: (Re)Distribuce

Shadow DOM: <content>

Shadow DOM: <content>

<template> <ul class="important"> <content select=".important"></content> </ul> <ul> <content></content> </ul> </template> <ul is="szn-list"> <li>...</li> <li class="important">...</li> </ul>

Shadow DOM: opakovaná distribuce

Závěrem

Odkazy a další čtení

Prostor pro otázky
Ondřej Žára, Prgač UI – důchodce, ondrej.zara@firma.seznam.cz