diff --git a/3-more/1-webcomponents/3-shadow-dom/article.md b/3-more/1-webcomponents/3-shadow-dom/article.md index cbdb0bfe..0a32ebc3 100644 --- a/3-more/1-webcomponents/3-shadow-dom/article.md +++ b/3-more/1-webcomponents/3-shadow-dom/article.md @@ -1,4 +1,4 @@ -# Shadow DOM, шаблоны и стили +# Shadow DOM Спецификация [Shadow DOM](http://w3c.github.io/webcomponents/spec/shadow/) является отдельным стандартом. Частично он уже используется для обычных DOM-элементов, но также применяется для создания веб-компонентов. @@ -44,7 +44,7 @@ Shadow DOM можно создать внутри любого элемента Например: ```html - +
Доброе утро, страна!
- - - -``` - -У нас получилось, что: -Жили мы тихо-мирно, и тут...
- -Доброе утро, страна!
- - -*!* - -*/!* -Привет из подполья!
- - - -``` - -При запуске окрашенным в красный цвет окажется только `` внутри Shadow DOM. - -...Но при помощи специальных селекторов переходить через эту границу! - -### Извне стиль для Shadow DOM - -Если нужно со страницы стилизовать или выбрать элементы внутри Shadow DOM, то можно использовать селекторы: - -
` внутри Shadow DOM, причём второй -- только если у хозяина стоит класс `important`. -
Доброе утро, страна!
- - -Привет из подполья!
- - - -``` - -В примере выше заголовок "Доброе утро, страна!", который пришёл как `` из внешнего документа, будет подчёркнут, - -...Но, поскольку эти узлы показываются внутри Shadow DOM, то ему тоже может понадобится к ним доступ. - -**Для обращения к "содержимому" `Доброе утро, страна!
- - - -Привет из подполья!
- - - -``` - -Если запустить пример выше, то текст внутри `0
- - - - - \ No newline at end of file diff --git a/3-more/1-webcomponents/4-template-tag/article.md b/3-more/1-webcomponents/4-template-tag/article.md new file mode 100644 index 00000000..221c1bec --- /dev/null +++ b/3-more/1-webcomponents/4-template-tag/article.md @@ -0,0 +1,58 @@ + +# Шаблоны + +Элемент `` предназначен для хранения "образца" разметки, невидимого и предназначенного для вставки куда-либо. + +Конечно, есть много способов записать произвольный невидимый текст в HTML. В чём же особенность ``? + +Его отличие от обычных тегов в том, что его содержимое обрабатывается особым образом. Оно не только скрыто, но и считается находящимся вообще "вне документа". А при вставке автоматически "оживает", выполняются из него скрипты, начинает проигрываться видео и т.п. + +[cut] + +Содержимое тега ``, в отличие, к примеру, от шаблонов или ` + + + +``` + +У нас получилось, что: +Жили мы тихо-мирно, и тут...
+ +Доброе утро, страна!
+ + +*!* + +*/!* +Привет из подполья!
+ + + +``` + +При запуске окрашенным в красный цвет окажется только `` внутри Shadow DOM. Обратим внимание, окрасился именно тот элемент, который находится непосредственно в Shadow DOM. А элементы, которые отображены в Shadow DOM при помощи ` ` первого уровня внутри Shadow DOM.
+ `:
+
+```html
+
+*!*
+ Доброе утро, страна! Привет из подполья! Доброе утро, страна! 0
+
+
+[warn header="Нельзя получить содержимое встроенных элементов"]
+Описанные CSS-селекторы можно использовать не только в CSS, но и в `querySelector`.
+
+Исключением являются встроенные элементы типа ``, для которых CSS-селекторы работают, но получить их содержимое нельзя.
+
+Например:
+
+```html
+
+
+
+
+```
+[/warn]
+
+## Стиль в зависимости от хозяина
+
+Следующие селекторы позволяют изнутри Shadow DOM выбрать внешний элемент ("элемент-хозяин"):
+
+
+
+
+Пример использования селектора `:host()` для разной расцветки Shadow DOM-сообщения, в зависимости от того, в каком оно `
+
+
+
+```
+
+## Стиль для content
+
+Тег `
+
+ Привет из подполья!
+
+
+
+```
+
+Текст внутри `` -- зелёный и подчёркнутый одновременно, но стилизуется именно тот ``, который показан в `
+
+
+
+
diff --git a/3-more/1-webcomponents/5-webcomponent-build/ui-slider.view/jquery.html b/3-more/1-webcomponents/5-webcomponent-build/ui-slider.view/jquery.html
deleted file mode 100755
index 94cbf7a8..00000000
--- a/3-more/1-webcomponents/5-webcomponent-build/ui-slider.view/jquery.html
+++ /dev/null
@@ -1,2 +0,0 @@
-
-
diff --git a/3-more/1-webcomponents/4-link-import/article.md b/3-more/1-webcomponents/6-link-import/article.md
similarity index 66%
rename from 3-more/1-webcomponents/4-link-import/article.md
rename to 3-more/1-webcomponents/6-link-import/article.md
index 0090fbfb..fe4d6dfd 100644
--- a/3-more/1-webcomponents/4-link-import/article.md
+++ b/3-more/1-webcomponents/6-link-import/article.md
@@ -16,9 +16,11 @@
Это хорошо, когда нужно действительно в одной странице отобразить содержимое другой.
-А что, если нужно встроить другой документ как естественную часть текущего? С единым скриптовым пространством, едиными стилями. И желательно не иметь проблем с разными доменами: если уж мы действительно хотим подключить HTML с одного домена в страницу на другом -- мы должны иметь возможность это сделать без "плясок с бубном".
+А что, если нужно встроить другой документ как естественную часть текущего? С единым скриптовым пространством, едиными стилями, но при этом -- другой документ.
-Именно для этого предназначен ``.
+Например, это нужно для подгрузки внешних частей документа (веб-компонент) снаружи. И желательно не иметь проблем с разными доменами: если уж мы действительно хотим подключить HTML с одного домена в страницу на другом -- мы должны иметь возможность это сделать без "плясок с бубном".
+
+Иначе говоря, `` -- это аналог `
-
-
-```
-
Это можно использовать, чтобы не подгружать одинаковые зависимости много раз. И сама страница и её импорты, и их подимпорты, и так далее, могут подключать `libs.html` без опасения лишний раз перезагрузить и выполнить скрипты.
Например:
@@ -137,7 +108,7 @@
```
-0
```
-Файл `ui-slider.html` мы разберём по частям.
+## Файл компонента ui-slider
+
+Файл `ui-slider.html`, задающий компонент, мы разберём по частям.
### Заголовок
@@ -153,22 +156,21 @@ document.registerElement('ui-message', {
Содержимое `jquery.html`:
```html
-
-
+
```
### Шаблон
Шаблон будет помещён в Shadow DOM. В нём должны быть стили и элементы, необходимые слайдеру.
-Конкретно для слайдера из разметки достаточно одного элемента `, который затем будет обработан jQuery UI.
+Конкретно для слайдера из разметки достаточно одного элемента ``, который затем будет обработан jQuery UI.
Кроме того, в шаблоне должны быть стили:
```html