|
1 | | -# DOM سایه |
| 1 | +# Shadow DOM |
2 | 2 |
|
3 | 3 | دلیل استفاده از shadow DOM جداسازی یا کپسوله کردن است. shadow DOM به یک المنت اجازه می دهد تا سند DOM نهان(shadow) خود را داشته باشد، که به طور کامل از DOM سند اصلی جداسازی شده است، سند shadow DOM میتواند قوانین خاص خود را داشته باشد مثل style محلی مربوط به خود. |
4 | 4 |
|
5 | | -## DOM سایه های داخلی (Built-in) |
| 5 | +## Shadow DOM های داخلی (Built-in) |
6 | 6 |
|
7 | 7 | آیا تا به حال فکر کردهاید که چگونه کنترلرهای پیچیده مرورگر مثل المان زیر (ورودی محدود) ایجاد شده و style دهی میشوند؟ |
8 | 8 |
|
@@ -43,7 +43,7 @@ input::-webkit-slider-runnable-track { |
43 | 43 |
|
44 | 44 | یک المان DOM میتواند دو نوع زیرمجموعه DOM داشته باشد: |
45 | 45 |
|
46 | | -1. light tree -- یک زیر مجموعه معمولی از DOM است که از زیرمجموعه HTML ساخته شده است. تمام مثالهای که در فصول قبل دیدیم از نوع روشن بودند. |
| 46 | +1. light tree -- یک زیر مجموعه معمولی از DOM است که از زیرمجموعه HTML ساخته شده است. تمام مثالهای که در فصول قبل دیدیم از نوع light بودند. |
47 | 47 | 2. shadow tree -- یک زیرمجموعه پنهان از DOM است که در HTML نمایش داده نمیشود و از چشم مخفی است. |
48 | 48 |
|
49 | 49 | اگر المانی هر دو زیرمجموعه را داشت مرورگر فقط قسمت shadow را نمایش خواهد داد. اما می توانیم نوعی ترکیب بندی بین shadow trees و light ایجاد کنیم. جزیات بیشتر را در <info:slots-composition> خواهیم خواند. |
@@ -98,7 +98,7 @@ alert(elem.shadowRoot.host === elem); // true |
98 | 98 |
|
99 | 99 | دسترسی shadow DOM به طول کامل از سند اصلی گرفته شده است. |
100 | 100 |
|
101 | | -1. المانهای shadow DOM توسط `querySelector` های DOM روشن قابل شناسایی نیستنتد. به طور دقیقتر المانهای داخلی shadow DOM ممکن است id هایی یکسانی با المانهای DOM روشن داشته باشند اما این idها باید در shadow tree یکتا باشند. |
| 101 | +1. المانهای shadow DOM توسط `querySelector` های light DOM قابل شناسایی نیستنتد. به طور دقیقتر المانهای داخلی shadow DOM ممکن است id هایی یکسانی با المانهای light DOM داشته باشند اما این idها باید در shadow tree یکتا باشند. |
102 | 102 | 2. سند stylesheet, DOM shadow مجزای مخصوص به خود را دارد. قوانین style خارجی (light DOM) در آن عمل نمیکنند. |
103 | 103 |
|
104 | 104 | به مثال زیر توجه کنید: |
@@ -146,12 +146,12 @@ alert(elem.shadowRoot.host === elem); // true |
146 | 146 |
|
147 | 147 | DOM روشی است برای ایجاد یک المان محلی برای shadow DOM. |
148 | 148 |
|
149 | | -1. `shadowRoot = elem.attachShadow({mode: open|closed})` --یک دام سایه برای `elem` میسازد. اگر "mode="open باشد این المان با ویژگی `elem.shadowRoot` قابل دسترسی است. |
| 149 | +1. `shadowRoot = elem.attachShadow({mode: open|closed})` --یک shadow DOM برای `elem` میسازد. اگر "mode="open باشد این المان با ویژگی `elem.shadowRoot` قابل دسترسی است. |
150 | 150 | 2. با استفاده از ویژگی `innerHtml` یا ویژگی های دیگر DOM موجود در `shadowRoot` میتوان اجزای جدید به آن اضافه کرد. |
151 | 151 |
|
152 | | -المانهای DOM سایه: |
| 152 | +المانهایshadow DOM: |
153 | 153 | - داری فضای مجزای خود هستند. |
154 | 154 | - از انتخابگرهای جاوا اسکریپت موجد در DOM اصلی مثل `querySelector` پنهان هستند. |
155 | 155 | - از استایلهای موجود در shadow tree خود استفاده میکنند و نه از استایل موجود در DOM اصلی. |
156 | 156 |
|
157 | | -اگر المانی در صفحه دارای DOM سایه بود، مرورگر به صورت پیشفرض المانهای موجود در shadow tree را نمایش میدهد و از المانهای DOM روشن یا همان زیرمجموعههای HTML معمول صرف نظر میکند. در فصل <info:slots-composition> در مورد ترکیب این دو بیشتر مطالعه میکنیم. |
| 157 | +اگر المانی در صفحه دارایshadow DOM بود، مرورگر به صورت پیشفرض المانهای موجود در shadow tree را نمایش میدهد و از المانهای light DOM یا همان زیرمجموعههای HTML معمول صرف نظر میکند. در فصل <info:slots-composition> در مورد ترکیب این دو بیشتر مطالعه میکنیم. |
0 commit comments