# Веб-компонент в сборе В этой главе мы посмотрим на итоговый пример веб-компонента, включающий в себя описанные ранее технологии: Custom Elements, Shadow DOM, CSS Scoping и, конечно же, Imports. [cut] ## Компонент ui-message Компонент `ui-message` будет описан в отдельном файле `ui-message.html`. Его использование будет выглядеть следующим образом: ```html *!* Доброе утро, страна! */!* *!* Внимание-внимание! Говорит информбюро! */!* ``` Этот код ничем не отличается от использования обычного элемента, поэтому перейдём дальше, к содержимому `ui-message.html` ## Шаблон для ui-message Файл `ui-message.html` можно начать с шаблона: ```html ``` Этот шаблон рисует `
` и заполняет его содержимым элемента-хозяина. Важные детали: ## Скрипт для ui-message В файле `ui-message.html` мы создадим новый элемент ``: ```js // (1) получить шаблон var localDocument = document.currentScript.ownerDocument; var tmpl = localDocument.getElementById('tmpl'); // (2) создать элемент var MessageProto = Object.create(HTMLElement.prototype); MessageProto.createdCallback = function() { var root = this.createShadowRoot(); root.appendChild(tmpl.content.cloneNode(true)); }; // (3) зарегистрировать в DOM document.registerElement('ui-message', { prototype: MessageProto }); ``` Все компоненты этого кода мы подробно разбирали ранее:
  1. Получаем шаблон из текущего документа, то есть из самого импорта.
  2. Описываем элемент. Он довольно прост -- при создании записывает в свой `Shadow DOM` шаблон. При этом содержимое исходного элемента будет показано в ``, но делать правила на сам `content` бессмысленно -- они не сработают. Нужно либо перейти внутрь `` при помощи `::content`-селектора, либо указать для внешнего элемента `.content`, что в данном случае и сделано.
  3. С момента регистрации все уже существующие элементы `` будут превращены в описанные здесь. И будущие, конечно, тоже.
Компонент в действии: [codetabs src="message" height=200] ## Компонент ui-slider с jQuery Компонент может использовать и внешние библиотеки. Для примера создадим слайдер с использованием библиотеки [jQuery UI](http://jqueryui.com). Компонент `ui-slider` будет показывать слайдер с минимальным и максимальным значением из атрибутов `min/max` и генерировать событие `slide` при его перемещении. Использование: ```html
0
``` ## Файл компонента ui-slider Файл `ui-slider.html`, задающий компонент, мы разберём по частям. ### Заголовок В начале подключим jQuery и jQuery UI. Мы импортируем в слайдер `jquery.html`, который содержит теги `