Skip to content

Commit a9bd245

Browse files
committed
enhance some parts
1 parent c282b74 commit a9bd245

1 file changed

Lines changed: 18 additions & 20 deletions

File tree

8-web-components/3-shadow-dom/article.md

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
# سایه‌ DOM
1+
# DOM سایه
22

3-
دلیل استفاده از Shadow DOM جداسایزی یا (کپسوله کردن) است. Shadow DOM به یک المنت اجازه می دهد تا سند DOM "سایه‌ی" خود را داشته باشد، که به طور کامل از سند DOM اصلی قابل دسترسی نیست،سند Shadow DOM می‌تواند قوانین خاص خود را داشته باشد مثل style محلی مربوط به خود.
3+
دلیل استفاده از DOM سایه جداسازی یا کپسوله کردن است.DOM سایه به یک المنت اجازه می دهد تا سند DOM "سایه‌ی" خود را داشته باشد، که به طور کامل از DOM سند اصلی جداسازی شده است، سند DOM سایه می‌تواند قوانین خاص خود را داشته باشد مثل style محلی مربوط به خود.
44

5-
## سایه DOM های داخلی (Built-in)
5+
## DOM سایه های داخلی (Built-in)
66

77
آیا تا به حال فکر کرده‌اید که چگونه کنترلرهای پیچیده مرورگر مثل المان زیر (ورودی محدود) ایجاد شده و style دهی می‌شوند؟
88

@@ -18,15 +18,15 @@
1818

1919
![](shadow-dom-range.png)
2020

21-
همه اجزای زیرمجموعه‌ی `#shadow-root` را می‌توان "shadow DOM" نامید.
21+
همه اجزای زیرمجموعه‌ی `shadow-root#` را می‌توان "shadow DOM" نامید.
2222

23-
چون المان‌های Shadow DOM داخلی (built-in) از المان‌های معمول DOM جدا سازی شده‌اند نمی‌توان با استفاده از انتخابگراهای جاوااسکریپت مرورگر به آنها دسترسی پیدا کرد.
23+
چون المان‌های Shadow DOM داخلی (built-in) از المان‌های معمول DOM جدا سازی شده‌اند نمی‌توان با استفاده از انتخابگرهای معمول جاوااسکریپت مرورگر به آنها دسترسی پیدا کرد.
2424

2525
اگر در مثال بالا توجه کنید یک attribute به نام `pseudo` می‌بینید.`pseudo` یک ویژگی غیر استاندارد است که وجود آن دلایل تاریخی دارد اما با استفاده از آن می‌توانیم المان‌های زیرمجموعه را به شکل زیر style دهی کنیم.
2626

2727
```html run autorun
2828
<style>
29-
/* make the slider track red */
29+
/* رنگ ریل را به قرمز تغییر می‌دهد */
3030
input::-webkit-slider-runnable-track {
3131
background: red;
3232
}
@@ -35,11 +35,11 @@
3535
<input type="range" />
3636
```
3737

38-
فراموش نکنید که `pseudo` یک ویژگی غیر استاندارد است. مرورگر‌ها در ابتدا به پیاده‌سازی آزمایشی کنترل‌های داخلی با استفاده از المان‌های DOM کردند بعد از گذشت زمان shadow DOM استاندارد سازی شد تا توسعه دهندگان بتوانند المان‌های کنترلی خود را بسازند.
38+
فراموش نکنید که `pseudo` یک ویژگی غیر استاندارد است. مرورگر‌ها در ابتدا به پیاده‌سازی آزمایشی کنترل‌های داخلی با استفاده از المان‌های DOM کردند بعد از گذشت زمان DOM سایه استاندارد سازی شد تا توسعه دهندگان بتوانند المان‌های کنترلی خود را بسازند.
3939

40-
در ادامه از shadow DOM استاندارد استفاده خواهیم کرد که در [DOM spec](https://dom.spec.whatwg.org/#shadow-trees) توضیحات کاملی از آن موجود است.
40+
در ادامه از DOM سایه استاندارد استفاده خواهیم کرد که در [DOM spec](https://dom.spec.whatwg.org/#shadow-trees) توضیحات کاملی از آن موجود است.
4141

42-
## درخت Sadow
42+
## درخت سایه (Shadow Tree)
4343

4444
یک المان DOM می‌تواند دو نوع زیرمجموعه DOM داشته باشد:
4545

@@ -50,7 +50,7 @@
5050

5151
می‌توان از درخت سایه برای پنهان سازی المان‌های داخلی استفاده کرد و از استایل دهی محلی برای المان جدید استفاده کرد.
5252

53-
برای مثال`<show-hello>` المان‌های داخلی خود را در سایه تاریک پنهان می‌کند و مقدار نمایش داده شده را به عنوان ویژگی دریافت می‌کند.
53+
برای مثال`<show-hello>` المان‌های داخلی خود را در درخت سایه پنهان می‌کند و مقدار نمایش داده شده را به عنوان ویژگی دریافت می‌کند.
5454

5555
```html run autorun height=60
5656
<script>
@@ -70,7 +70,7 @@
7070
<show-hello name="John"></show-hello>
7171
```
7272

73-
خروجی DOM بالا در Chrome dev tool به شکل زیر نشان داده می‌شود و تمام اجزا زیر مجموعه "#shadow-root" خواهد بود.
73+
خروجی DOM بالا در Chrome dev tool به شکل زیر نشان داده می‌شود و تمام اجزا زیر مجموعه "shadow-root#" خواهد بود.
7474

7575
![](shadow-dom-say-hello.png)
7676

@@ -92,12 +92,10 @@
9292

9393
- `"closed"` -- است `null` همیشه `elem.shadowRoot`.
9494

95-
فقط با استفاده از مقدار(refrance) براگردانده شده از `attachShadow`(که احتمالا یک کلاس پنهان داخلی دارد) می‌توانیم به DOM تاریک دسترسی پیدا کنیم. اما در مورد درخت‌های تاریک بومی مرورگر مثل `<input type="range">` که بسته(`"closed"`) هستند٬ هیچ راهی برای دسترسی به این درخت‌های تاریک وجود ندارد.
95+
فقط با استفاده از مقدار(refrance) براگردانده شده از `attachShadow`(که احتمالا یک کلاس پنهان داخلی دارد) می‌توانیم به DOM سایه دسترسی پیدا کنیم. اما در مورد درخت‌های سایه بومی مرورگر مثل `<input type="range">` که بسته(`"closed"`) هستند٬ هیچ راهی برای دسترسی به این درخت‌های سایه وجود ندارد.
9696

9797
با [shadow root](https://dom.spec.whatwg.org/#shadowroot) که خروجی `attachShadow` است می‌توان مثل یک المان معمولی برخورد کرد و از `innerHTML` یا `append` برای پر کردن آن استفاده کرد.
9898

99-
The element with a shadow root is called a "shadow tree host", and is available as the shadow root `host` property:
100-
10199
به المانی که دارای shadow root باشد "shadow tree host" گفته می‌شود و با استفاده از ویژگی "host" قابل دسترسی است:
102100

103101
```js
@@ -109,9 +107,9 @@ alert(elem.shadowRoot.host === elem); // true
109107

110108
دسترسی DOM سایه به طول کامل از سند اصلی گرفته شده است.
111109

112-
1. المان‌های DOM سایه توسط `querySelector` های DOM روشن قابل شناسایی نیستنتد. به طور دقیق‌تر المان‌های داخلی DOM سایه ممکن است id هایی یکسانی با المان‌های DOM روشن داشته باشند اما این idها باید در درخت تاریک یکتا باشند.
110+
1. المان‌های DOM سایه توسط `querySelector` های DOM روشن قابل شناسایی نیستنتد. به طور دقیق‌تر المان‌های داخلی DOM سایه ممکن است id هایی یکسانی با المان‌های DOM روشن داشته باشند اما این idها باید در درخت سایه یکتا باشند.
113111

114-
2. دام تاریک stylesheet مجزای مخصوص به خود را دارد. قوانین style خارجی (light DOM) در آن عمل نمی‌کنند.
112+
2. سند DOM سایه stylesheet مجزای مخصوص به خود را دارد. قوانین style خارجی (light DOM) در آن عمل نمی‌کنند.
115113

116114
به مثال زیر توجه کنید:
117115

@@ -162,14 +160,14 @@ alert(elem.shadowRoot.host === elem); // true
162160

163161
1. `shadowRoot = elem.attachShadow({mode: open|closed})` --
164162

165-
یک دام سایه برای `elem` می‌سازد. اگر "mode="open باشد این المان با ویژگی `elem,shadowRoot` قابل دسترسی است.
163+
یک دام سایه برای `elem` می‌سازد. اگر "mode="open باشد این المان با ویژگی `elem.shadowRoot` قابل دسترسی است.
166164

167-
2. با استفاده از ویژگی `innerHtml` یا ویژگی های دیگر DOM موجود در `shadowRoor` می‌توان اجزای جدید به آن اضافه کرد.
165+
2. با استفاده از ویژگی `innerHtml` یا ویژگی های دیگر DOM موجود در `shadowRoot` می‌توان اجزای جدید به آن اضافه کرد.
168166

169-
المان‌های سایه DOM:
167+
المان‌های DOM سایه:
170168

171169
- داری فضای مجزای خود هستند.
172170
- از انتخابگر‌های جاوا اسکریپت موجد در DOM اصلی مثل `querySelector` پنهان هستند.
173171
- از استایل‌های موجود در درخت تاریک خود استفاده می‌کنند و نه از استایل موجود در DOM اصلی.
174172

175-
اگر المانی در صفحه دارای DOM سایه بود، مرورگر به صورت پیشفرض المان‌های موجود در درخت تاریک را نمایش می‌دهد و از المان‌های DOM روشن یا همان زیرمجموعه‌های HTML معمول صرف نظر می‌کند. در فصل <info:slots-composition> در مورد ترکیب این ۲ بیشتر مطالعه می‌کنیم.
173+
اگر المانی در صفحه دارای DOM سایه بود، مرورگر به صورت پیشفرض المان‌های موجود در درخت تاریک را نمایش می‌دهد و از المان‌های DOM روشن یا همان زیرمجموعه‌های HTML معمول صرف نظر می‌کند. در فصل <info:slots-composition> در مورد ترکیب این دو بیشتر مطالعه می‌کنیم.

0 commit comments

Comments
 (0)