摘要:使用的一個主要好處是樣式隔離。假設(shè)我們?nèi)匀皇褂脕頀旖舆@個,如下所示請注意,元素位于模板元素內(nèi)部,并與一起克隆到內(nèi)。這允許在陰影根中定義的樣式規(guī)則作用域。封閉模式的設(shè)計目標(biāo)是禁止對來自外部世界的中的節(jié)點進(jìn)行任何訪問。
使用shadow DOM的一個主要好處是樣式隔離。 要了解這意味著什么,讓我們來假設(shè)我們要創(chuàng)建自定義進(jìn)度條組件。 我們可以使用兩個嵌套的DIV來顯示條形,使用另一個DIV來顯示文本以顯示百分比,如下所示:
0%
請注意模板元素的使用:
它允許作者包含HTML片段,以后可以通過克隆內(nèi)容來實例化
模板元素可以出現(xiàn)在文檔中的任何位置(例如,在表格和tr元素之間)
模板元素中的內(nèi)容是惰性的,不運行腳本或加載圖像和其他類型的子資源。
這個進(jìn)度條實現(xiàn)的問題是它的兩個內(nèi)部div可以被用戶自由訪問,它的樣式規(guī)則也不局限于進(jìn)度條。 例如,為進(jìn)度條定義的樣式規(guī)則將應(yīng)用于進(jìn)度條外部的內(nèi)容,其類名為progress:
Pending an approval
同樣的,為其他元素定義的樣式規(guī)則可以覆蓋進(jìn)度條中的規(guī)則:
雖然我們可以通過使用自定義元素名稱(如custom-progressbar)來規(guī)范規(guī)則,然后通過以下方式初始化所有其他屬性來解決這些問題
all: initial
但Shadow DOM提供了更優(yōu)雅的解決方案,外部div處引入封裝層,以便進(jìn)度條組件的用戶看不到其內(nèi)部實現(xiàn)(例如為標(biāo)簽和條創(chuàng)建的div)。還有為進(jìn)度條定義的CSS樣式不會干擾頁面的其余部分,反之亦然。 為此,我們首先通過調(diào)用在進(jìn)度條上創(chuàng)建一個ShadowRoot:
attachShadow({mode: "closed"})
然后在其下附加其實現(xiàn)所需的各種DOM實現(xiàn)。 假設(shè)我們?nèi)匀皇褂胐iv來掛接這個Shadow Root,如下所示:
0%
請注意,style元素位于模板元素內(nèi)部,并與div一起克隆到Shadow Root內(nèi)。這允許在陰影根中定義的樣式規(guī)則作用域。 在陰影根之外定義的樣式規(guī)則就無法適用于Shadow Root內(nèi)的元素。
使用打開模式,您可以通過HTML元素的shadowRoot屬性訪問Shadow DOM。關(guān)閉模式你不能。 shadowRoot將返回null。封閉模式的設(shè)計目標(biāo)是禁止對來自外部世界的Shadow Root中的節(jié)點進(jìn)行任何訪問。
翻譯來自:Introducing Slot-Based Shadow DOM API | WebKit
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/99718.html
摘要:生命周期和回調(diào)在這個的基礎(chǔ)上,標(biāo)準(zhǔn)提供了一系列控制自定義元素的方法。生命周期和自定義元素標(biāo)簽的保持一致。否則,這個屬性會返回一個表示引入的文件的文檔對象,類似于。相關(guān)的東西不多,而且它現(xiàn)在已經(jīng)是納入生效的標(biāo)準(zhǔn)文檔中了。 前端組件化這個主題相關(guān)的內(nèi)容已經(jīng)火了很久很久,angular 剛出來時的 Directive 到 angular2 的 components,還有 React 的 co...
摘要:生命周期和回調(diào)在這個的基礎(chǔ)上,標(biāo)準(zhǔn)提供了一系列控制自定義元素的方法。生命周期和自定義元素標(biāo)簽的保持一致。否則,這個屬性會返回一個表示引入的文件的文檔對象,類似于。相關(guān)的東西不多,而且它現(xiàn)在已經(jīng)是納入生效的標(biāo)準(zhǔn)文檔中了。 前端組件化這個主題相關(guān)的內(nèi)容已經(jīng)火了很久很久,angular 剛出來時的 Directive 到 angular2 的 components,還有 React 的 co...
摘要:生命周期和回調(diào)在這個的基礎(chǔ)上,標(biāo)準(zhǔn)提供了一系列控制自定義元素的方法。生命周期和自定義元素標(biāo)簽的保持一致。否則,這個屬性會返回一個表示引入的文件的文檔對象,類似于。相關(guān)的東西不多,而且它現(xiàn)在已經(jīng)是納入生效的標(biāo)準(zhǔn)文檔中了。 前端組件化這個主題相關(guān)的內(nèi)容已經(jīng)火了很久很久,angular 剛出來時的 Directive 到 angular2 的 components,還有 React 的 co...
摘要:定制元素可以在原生元素外創(chuàng)建定制元素。此定制元素內(nèi)部有一個加號按鈕,一個減號按鈕,一個顯示當(dāng)前值。此主題會在下一部分內(nèi)介紹。定制元素的屬性元素的屬性被稱為,對象內(nèi)的屬性被稱為。做響應(yīng)的同步處理。 Web Components 全攬 Web Components技術(shù)可以把一組相關(guān)的HTML、JS代碼和CSS風(fēng)格打包成為一個自包含的組件,只要使用大家熟悉的標(biāo)簽即可引入此組件。Web Com...
摘要:而從技術(shù)實現(xiàn)角度,微前端架構(gòu)解決方案大概分為兩類場景單實例即同一時刻,只有一個子應(yīng)用被展示,子應(yīng)用具備一個完整的應(yīng)用生命周期。為了解決產(chǎn)品研發(fā)之間各種耦合的問題,大部分企業(yè)也都會有自己的解決方案。 原文鏈接:https://zhuanlan.zhihu.com/p/... Techniques, strategies and recipes for building a modern ...
閱讀 564·2023-04-25 16:00
閱讀 1598·2019-08-26 13:54
閱讀 2497·2019-08-26 13:47
閱讀 3402·2019-08-26 13:39
閱讀 1037·2019-08-26 13:37
閱讀 2734·2019-08-26 10:21
閱讀 3534·2019-08-23 18:19
閱讀 1601·2019-08-23 18:02