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/3-shadow-dom/article.md
+18-20Lines changed: 18 additions & 20 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,8 +1,8 @@
1
-
# سایه DOM
1
+
# DOM سایه
2
2
3
-
دلیل استفاده از Shadow DOM جداسایزی یا (کپسوله کردن) است. Shadow DOM به یک المنت اجازه می دهد تا سند DOM "سایهی" خود را داشته باشد، که به طور کامل از سند DOM اصلی قابل دسترسی نیست،سند Shadow DOM میتواند قوانین خاص خود را داشته باشد مثل style محلی مربوط به خود.
3
+
دلیل استفاده از DOM سایه جداسازی یا کپسوله کردن است.DOM سایه به یک المنت اجازه می دهد تا سند DOM "سایهی" خود را داشته باشد، که به طور کامل از DOM سند اصلی جداسازی شده است، سند DOM سایه میتواند قوانین خاص خود را داشته باشد مثل style محلی مربوط به خود.
4
4
5
-
## سایه DOM های داخلی (Built-in)
5
+
## DOM سایه های داخلی (Built-in)
6
6
7
7
آیا تا به حال فکر کردهاید که چگونه کنترلرهای پیچیده مرورگر مثل المان زیر (ورودی محدود) ایجاد شده و style دهی میشوند؟
8
8
@@ -18,15 +18,15 @@
18
18
19
19

20
20
21
-
همه اجزای زیرمجموعهی `#shadow-root` را میتوان "shadow DOM" نامید.
21
+
همه اجزای زیرمجموعهی `shadow-root#` را میتوان "shadow DOM" نامید.
22
22
23
-
چون المانهای Shadow DOM داخلی (built-in) از المانهای معمول DOM جدا سازی شدهاند نمیتوان با استفاده از انتخابگراهای جاوااسکریپت مرورگر به آنها دسترسی پیدا کرد.
23
+
چون المانهای Shadow DOM داخلی (built-in) از المانهای معمول DOM جدا سازی شدهاند نمیتوان با استفاده از انتخابگرهای معمول جاوااسکریپت مرورگر به آنها دسترسی پیدا کرد.
24
24
25
25
اگر در مثال بالا توجه کنید یک attribute به نام `pseudo` میبینید.`pseudo` یک ویژگی غیر استاندارد است که وجود آن دلایل تاریخی دارد اما با استفاده از آن میتوانیم المانهای زیرمجموعه را به شکل زیر style دهی کنیم.
26
26
27
27
```html run autorun
28
28
<style>
29
-
/*make the slider track red*/
29
+
/*رنگ ریل را به قرمز تغییر میدهد*/
30
30
input::-webkit-slider-runnable-track {
31
31
background: red;
32
32
}
@@ -35,11 +35,11 @@
35
35
<inputtype="range" />
36
36
```
37
37
38
-
فراموش نکنید که `pseudo` یک ویژگی غیر استاندارد است. مرورگرها در ابتدا به پیادهسازی آزمایشی کنترلهای داخلی با استفاده از المانهای DOM کردند بعد از گذشت زمان shadow DOM استاندارد سازی شد تا توسعه دهندگان بتوانند المانهای کنترلی خود را بسازند.
38
+
فراموش نکنید که `pseudo` یک ویژگی غیر استاندارد است. مرورگرها در ابتدا به پیادهسازی آزمایشی کنترلهای داخلی با استفاده از المانهای DOM کردند بعد از گذشت زمان DOM سایه استاندارد سازی شد تا توسعه دهندگان بتوانند المانهای کنترلی خود را بسازند.
39
39
40
-
در ادامه از shadow DOM استاندارد استفاده خواهیم کرد که در [DOM spec](https://dom.spec.whatwg.org/#shadow-trees) توضیحات کاملی از آن موجود است.
40
+
در ادامه از DOM سایه استاندارد استفاده خواهیم کرد که در [DOM spec](https://dom.spec.whatwg.org/#shadow-trees) توضیحات کاملی از آن موجود است.
41
41
42
-
## درخت Sadow
42
+
## درخت سایه (Shadow Tree)
43
43
44
44
یک المان DOM میتواند دو نوع زیرمجموعه DOM داشته باشد:
45
45
@@ -50,7 +50,7 @@
50
50
51
51
میتوان از درخت سایه برای پنهان سازی المانهای داخلی استفاده کرد و از استایل دهی محلی برای المان جدید استفاده کرد.
52
52
53
-
برای مثال`<show-hello>` المانهای داخلی خود را در سایه تاریک پنهان میکند و مقدار نمایش داده شده را به عنوان ویژگی دریافت میکند.
53
+
برای مثال`<show-hello>` المانهای داخلی خود را در درخت سایه پنهان میکند و مقدار نمایش داده شده را به عنوان ویژگی دریافت میکند.
54
54
55
55
```html run autorun height=60
56
56
<script>
@@ -70,7 +70,7 @@
70
70
<show-helloname="John"></show-hello>
71
71
```
72
72
73
-
خروجی DOM بالا در Chrome dev tool به شکل زیر نشان داده میشود و تمام اجزا زیر مجموعه "#shadow-root" خواهد بود.
73
+
خروجی DOM بالا در Chrome dev tool به شکل زیر نشان داده میشود و تمام اجزا زیر مجموعه "shadow-root#" خواهد بود.
74
74
75
75

76
76
@@ -92,12 +92,10 @@
92
92
93
93
-`"closed"` -- است `null` همیشه `elem.shadowRoot`.
94
94
95
-
فقط با استفاده از مقدار(refrance) براگردانده شده از `attachShadow`(که احتمالا یک کلاس پنهان داخلی دارد) میتوانیم به DOM تاریک دسترسی پیدا کنیم. اما در مورد درختهای تاریک بومی مرورگر مثل `<input type="range">` که بسته(`"closed"`) هستند٬ هیچ راهی برای دسترسی به این درختهای تاریک وجود ندارد.
95
+
فقط با استفاده از مقدار(refrance) براگردانده شده از `attachShadow`(که احتمالا یک کلاس پنهان داخلی دارد) میتوانیم به DOM سایه دسترسی پیدا کنیم. اما در مورد درختهای سایه بومی مرورگر مثل `<input type="range">` که بسته(`"closed"`) هستند٬ هیچ راهی برای دسترسی به این درختهای سایه وجود ندارد.
96
96
97
97
با [shadow root](https://dom.spec.whatwg.org/#shadowroot) که خروجی `attachShadow` است میتوان مثل یک المان معمولی برخورد کرد و از `innerHTML` یا `append` برای پر کردن آن استفاده کرد.
98
98
99
-
The element with a shadow root is called a "shadow tree host", and is available as the shadow root `host` property:
100
-
101
99
به المانی که دارای shadow root باشد "shadow tree host" گفته میشود و با استفاده از ویژگی "host" قابل دسترسی است:
دسترسی DOM سایه به طول کامل از سند اصلی گرفته شده است.
111
109
112
-
1. المانهای DOM سایه توسط `querySelector` های DOM روشن قابل شناسایی نیستنتد. به طور دقیقتر المانهای داخلی DOM سایه ممکن است id هایی یکسانی با المانهای DOM روشن داشته باشند اما این idها باید در درخت تاریک یکتا باشند.
110
+
1. المانهای DOM سایه توسط `querySelector` های DOM روشن قابل شناسایی نیستنتد. به طور دقیقتر المانهای داخلی DOM سایه ممکن است id هایی یکسانی با المانهای DOM روشن داشته باشند اما این idها باید در درخت سایه یکتا باشند.
113
111
114
-
2.دام تاریک stylesheet مجزای مخصوص به خود را دارد. قوانین style خارجی (light DOM) در آن عمل نمیکنند.
112
+
2.سند DOM سایه stylesheet مجزای مخصوص به خود را دارد. قوانین style خارجی (light DOM) در آن عمل نمیکنند.
یک دام سایه برای `elem` میسازد. اگر "mode="open باشد این المان با ویژگی `elem,shadowRoot` قابل دسترسی است.
163
+
یک دام سایه برای `elem` میسازد. اگر "mode="open باشد این المان با ویژگی `elem.shadowRoot` قابل دسترسی است.
166
164
167
-
2. با استفاده از ویژگی `innerHtml` یا ویژگی های دیگر DOM موجود در `shadowRoor` میتوان اجزای جدید به آن اضافه کرد.
165
+
2. با استفاده از ویژگی `innerHtml` یا ویژگی های دیگر DOM موجود در `shadowRoot` میتوان اجزای جدید به آن اضافه کرد.
168
166
169
-
المانهای سایه DOM:
167
+
المانهای DOM سایه:
170
168
171
169
- داری فضای مجزای خود هستند.
172
170
- از انتخابگرهای جاوا اسکریپت موجد در DOM اصلی مثل `querySelector` پنهان هستند.
173
171
- از استایلهای موجود در درخت تاریک خود استفاده میکنند و نه از استایل موجود در DOM اصلی.
174
172
175
-
اگر المانی در صفحه دارای DOM سایه بود، مرورگر به صورت پیشفرض المانهای موجود در درخت تاریک را نمایش میدهد و از المانهای DOM روشن یا همان زیرمجموعههای HTML معمول صرف نظر میکند. در فصل <info:slots-composition> در مورد ترکیب این ۲ بیشتر مطالعه میکنیم.
173
+
اگر المانی در صفحه دارای DOM سایه بود، مرورگر به صورت پیشفرض المانهای موجود در درخت تاریک را نمایش میدهد و از المانهای DOM روشن یا همان زیرمجموعههای HTML معمول صرف نظر میکند. در فصل <info:slots-composition> در مورد ترکیب این دو بیشتر مطالعه میکنیم.
0 commit comments