You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: 8-web-components/6-shadow-dom-style/article.md
+13-13
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,6 @@
1
1
# Стилізація тіньового DOM
2
2
3
-
Тіньовий DOM може включати в себе обидва теги `<style>` та `<link rel="stylesheet" href="…">`. В останньому випадку, таблиці стилів зберігаються в кеші HTTP, тому вони не завантажуються наново для кількох компонентів, які використовують один і той самий шаблон.
3
+
Тіньовий DOM може включати в себе обидва теги `<style>` та `<link rel="stylesheet" href="…">`. В останньому випадку, таблиці стилів зберігаються в кеші HTTP, тому вони не завантажуються наново для кількох компонентів, які використовують один і той самий шаблон.
4
4
5
5
Як правило, локальні стилі працюють лише всередині тіньового дерева та стилі документу працюють ззовні. Але є декілька винятків.
6
6
@@ -15,7 +15,7 @@
15
15
```html run autorun="no-epub" untrusted height=80
16
16
<templateid="tmpl">
17
17
<style>
18
-
/*стиль буде застосовано зсередини до елементу custom-dialog */
18
+
/*стилі буде застосовано зсередини до елементу custom-dialog */
19
19
:host {
20
20
position: fixed;
21
21
left: 50%;
@@ -46,7 +46,7 @@ customElements.define('custom-dialog', class extends HTMLElement {
46
46
47
47
Тіньовий хост (безпосередньо `<custom-dialog>`) розташований в світлому DOM, тому на нього впливають CSS-правила документу.
48
48
49
-
Якщо деяка властивість має стилі в `:host` локально та в документі, тоді пріоритет мають стилі документу.
49
+
Якщо властивість задана як локально через `:host`, так і глобально в документі, пріоритет мають стилі документу.
50
50
51
51
Наприклад, якщо в документі ми маємо:
52
52
```html
@@ -58,9 +58,9 @@ custom-dialog {
58
58
```
59
59
...Тоді `<custom-dialog>` не матиме відступів.
60
60
61
-
Це дуже зручно, оскільки ми можемо встановити типові стилі компоненту всередині його `:host` правила, та легко перевизначити їх в документі опісля.
61
+
Це дуже зручно, оскільки ми можемо встановити типові стилі компоненту локально всередині його `:host` правила, та легко перетерти їх стилями документу.
62
62
63
-
Винятком є ситуація, в якій локальна властивість позначена як `!important`, для таких властивостей, пріоритет надається локальним стилям.
63
+
Винятком є ситуація, коли локальна властивість позначена як `!important`, для таких властивостей, пріоритет надається локальним стилям.
64
64
65
65
66
66
## :host(selector)
@@ -111,15 +111,15 @@ customElements.define('custom-dialog', class extends HTMLElement {
111
111
112
112
Тепер додаткові стилі центрування застосовуються лише до першого діалогу: `<custom-dialog centered>`.
113
113
114
-
Підсумовуючи, ми можемо використовувати сімейство селекторів `:host` для стилізації основного елементу компоненту. Ці стилі (окрім позначених як `!important`) можуть бути перевизначені всередині документу.
114
+
Підсумовуючи, ми можемо використовувати сімейство селекторів `:host` для стилізації основного елементу компоненту. Ці стилі (окрім позначених як `!important`) можуть бути перевизначені глобальними стилями документу.
115
115
116
116
## Стилізація контенту слотів
117
117
118
118
Розглянемо ситуацію зі слотами.
119
119
120
120
Елементи слотів приходять зі світлого DOM, тому вони використовують стилі документу. Локальні стилі не впливають на вміст слотів.
121
121
122
-
У наведеному нижче прикладі, `<span>` має жирний шрифт, згідно стилю документу, але не приймає `background` з локального стилю:
122
+
У наведеному нижче прикладі, `<span>` має жирний шрифт, згідно стилю документу, але не приймає `background` з локального стилю:
123
123
```html run autorun="no-epub" untrusted height=80
124
124
<style>
125
125
*!*
@@ -178,12 +178,12 @@ customElements.define('user-card', class extends HTMLElement {
178
178
179
179
В даному випадку, `<p>Петро Щур</p>` має жирний шрифт, оскільки CSS успадкування діє між `<slot>` та його наповненням. Але в самому CSS не всі властивості успадковуються.
180
180
181
-
Другою опцією є використання псевдо-класу `::slotted(selector)`. Він співвідносить елементи відповідно двом умовам:
181
+
Другою опцією є використання псевдо-класу `::slotted(selector)`. Він застосовує стилі відповідно до двох умов:
182
182
183
-
1. Це елемент, що приходить зі світлого DOM. Назва слоту не має значення. Будь-який елемент, але лише цей елемент, а не його діти.
183
+
1. Це елемент-слот, що приходить зі світлого DOM. Назва слоту не має значення. Будь-який слот, але саме цей елемент, а не його діти.
184
184
2. Елемент збігається з `selector`.
185
185
186
-
В нашому прикладі, `::slotted(div)` обирає саме `<div slot="username">`, без дочірніх елементів:
186
+
В нашому прикладі, `::slotted(div)` застосовується саме до `<div slot="username">`, без дочірніх елементів:
187
187
188
188
```html run autorun="no-epub" untrusted height=80
189
189
<user-card>
@@ -229,7 +229,7 @@ customElements.define('user-card', class extends HTMLElement {
229
229
230
230
Селектори по типу `:host` застосовують правила до елементу `<custom-dialog>` чи `<user-card>`, але як стилізувати елементи тіньового DOM всередині нього?
231
231
232
-
Жоден селектор не може напряму вплинути на стилі тіньового DOM зсередини документу. Але так само, як ми надали доступ до методів, аби ті взаємодіяли з нашим компонентом, ми можемо відкрити для стилізації CSS змінні(кастомні CSS властивості).
232
+
Жоден селектор не може напряму вплинути на стилі тіньового DOM з глобальних стилів документу. Але так само, як ми надали доступ до методів, щоб взаємодіяти з нашим компонентом, ми можемо відкрити CSS змінні(кастомні CSS властивості) для його стилізації.
233
233
234
234
**Кастомні CSS властивості існують на всіх рівнях, як в світловому, так і в тіньовому.**
235
235
@@ -303,11 +303,11 @@ customElements.define('user-card', class extends HTMLElement {
303
303
Локальні стилі можуть впливати на:
304
304
- тіньове дерево,
305
305
- тіньовий хост з псевдокласами `:host` та `:host()`,
306
-
- елементи(приходять зі світлого DOM), `::slotted(selector)` дозволяє обрати лише їх, без дочірніх елементів.
306
+
- елементи-слоти (які приходять зі світлого DOM), `::slotted(selector)` дозволяє обрати лише їх, без дочірніх елементів.
307
307
308
308
Стилі документу можуть впливати на:
309
309
- тіньовий хост (через його перебування в зовнішньому документі)
310
-
- елементи та їх вміст (також через перебування в зовнішньому документі)
310
+
- елементи-слоти та їх вміст (також через перебування в зовнішньому DOM документа)
311
311
312
312
Коли CSS властивості суперечать одна одній, зазвичай стилі документу мають перевагу, якщо дана властивість не позначена як `!important`. Тоді перевага надається локальним стилям.
0 commit comments