Skip to content

Commit 1f4868e

Browse files
committed
fix(shadow-dom): remove formater
1 parent 202893c commit 1f4868e

1 file changed

Lines changed: 28 additions & 36 deletions

File tree

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

Lines changed: 28 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -54,17 +54,14 @@
5454

5555
```html run autorun height=60
5656
<script>
57-
customElements.define(
58-
"show-hello",
59-
class extends HTMLElement {
60-
connectedCallback() {
61-
const shadow = this.attachShadow({ mode: "open" });
62-
shadow.innerHTML = `<p>
63-
Hello, ${this.getAttribute("name")}
57+
customElements.define('show-hello', class extends HTMLElement {
58+
connectedCallback() {
59+
const shadow = this.attachShadow({mode: 'open'});
60+
shadow.innerHTML = `<p>
61+
Hello, ${this.getAttribute('name')}
6462
</p>`;
65-
}
66-
}
67-
);
63+
}
64+
});
6865
</script>
6966

7067
<show-hello name="John"></show-hello>
@@ -77,16 +74,13 @@
7774
در ابتدا `elem.attachShadow({mode: …})` یک درخت سایه ایجاد می‌کند.
7875

7976
ما در این جا ۲ محدودیت داریم:
80-
8177
1. هر المان در صفحه فقط می‌تواند یک سایه داشته باشد.
82-
2. المان `elem` باید یک المان سفارشی سازی شده(custom) یا یکی از المان های "article", "aside", "blockquote", "body", "div", "footer", "h1..h6", "header", "main" "nav", "p", "section", "span" باشد. دیگر المان ها مثل `<imb>` نمی‌توانند سایه داشته باشند.
83-
84-
گزینه `mode` سطح جداسازی (encapsulation) را مشخص می‌کند. و باید یکی از دو مقدار زیر را داشته باشد:
78+
2. المان `elem` باید یک المان سفارشی سازی شده(custom) یا یکی از المان های "article", "aside", "blockquote", "body", "div", "footer", "h1..h6", "header", "main" "nav", "p", "section", "span" باشد. دیگر المان ها مثل `<img>` نمی‌توانند سایه داشته باشند.
8579

80+
گزینه `mode` سطح جداسازی (encapsulation) را مشخص می‌کند. و باید یکی از دو مقدار زیر را داشته باشد:
8681
- `"open"` -- قابل دسترس باشد `elem.shadowRoot` که باعث می‌شود سایه تحت.
8782

8883
هر کدی قابلیت دسترسی به درخت سایه المان `elem` را دارد.
89-
9084
- `"closed"` -- است `null` همیشه `elem.shadowRoot`.
9185

9286
فقط با استفاده از مقدار(refrance) براگردانده شده از `attachShadow`(که احتمالا یک کلاس پنهان داخلی دارد) می‌توانیم به DOM سایه دسترسی پیدا کنیم. اما در مورد درخت‌های سایه بومی مرورگر مثل `<input type="range">` که بسته(`"closed"`) هستند٬ هیچ راهی برای دسترسی به این درخت‌های سایه وجود ندارد.
@@ -111,32 +105,30 @@ alert(elem.shadowRoot.host === elem); // true
111105

112106
```html run untrusted height=40
113107
<style>
114-
/*
115-
* اجرا نمی‌شود (۱) #elem استایل سند بر درخت تاریک در
116-
*/
117-
p {
118-
color: red;
119-
}
108+
*!*
109+
/* اجرا نمی‌شود (۱) #elem استایل سند بر درخت تاریک در
110+
*/!*
111+
p { color: red; }
120112
</style>
121113

122114
<div id="elem"></div>
123115

124116
<script>
125-
elem.attachShadow({ mode: "open" });
126-
/*
127-
* درخت تاریک استایل خود را دارد (۲)
128-
*/
117+
elem.attachShadow({mode: 'open'});
118+
*!*
119+
// درخت تاریک استایل خود را دارد (۲)
120+
*/!*
129121
elem.shadowRoot.innerHTML = `
130-
<style> p { font-weight: bold; } </style>
131-
<p>Hello, John!</p>
132-
`;
133-
134-
/*
135-
* (۳) ‌های داخل درخت تاریک قابل دسترسی است qury فقط از
136-
*/
137-
alert(document.querySelectorAll("p").length); // 0
138-
alert(elem.shadowRoot.querySelectorAll("p").length); // 1
139-
</script>
122+
<style> p { font-weight: bold; } </style>
123+
<p>Hello, John!</p>
124+
`;
125+
126+
*!*
127+
// (۳) ‌های داخل درخت تاریک قابل دسترسی است qury فقط از <p>
128+
*/!*
129+
alert(document.querySelectorAll('p').length); // 0
130+
alert(elem.shadowRoot.querySelectorAll('p').length); // 1
131+
</script>
140132
```
141133

142134
1. استایل از سند اصلی هیچ تاثیری روی درخت تاریک ندارد.
@@ -149,6 +141,7 @@ alert(elem.shadowRoot.host === elem); // true
149141
- Compatibility: <https://caniuse.com/#feat=shadowdomv1>
150142
- Shadow DOM is mentioned in many other specifications, e.g. [DOM Parsing](https://w3c.github.io/DOM-Parsing/#the-innerhtml-mixin) specifies that shadow root has `innerHTML`.
151143

144+
152145
## خلاصه
153146

154147
سایه DOM روشی است برای ایجاد یک المان محلی برای DOM.
@@ -157,7 +150,6 @@ alert(elem.shadowRoot.host === elem); // true
157150
2. با استفاده از ویژگی `innerHtml` یا ویژگی های دیگر DOM موجود در `shadowRoot` می‌توان اجزای جدید به آن اضافه کرد.
158151

159152
المان‌های DOM سایه:
160-
161153
- داری فضای مجزای خود هستند.
162154
- از انتخابگر‌های جاوا اسکریپت موجد در DOM اصلی مثل `querySelector` پنهان هستند.
163155
- از استایل‌های موجود در درخت تاریک خود استفاده می‌کنند و نه از استایل موجود در DOM اصلی.

0 commit comments

Comments
 (0)