2017-02-28 37 views
1

我應該說,我真的沒有,我正在努力工作,通過一個問題開始。我對Shadow Dom和CSS3 :target選擇器可能/應該/當前如何一起工作感興趣。陰影大教堂和CSS3:目標選擇

我知道HTML規範說,應該永遠只能是一個有效的HTML文檔中的特定ID值的一個要素。但是當我們開始使用帶有陰影dom的webcomponents時,我們可以很容易地使用具有相同ID的多個元素來發現自己。當我們在同一頁面中多次使用相同的組件時,情況尤其如此。所以,問題是我是這樣的:應該發生到具有相匹配的當前哈希和其風格與:target規則的ID值陰影DOM區域內的要素是什麼?

例如,如果我寫了一個WebComponent的包含

<style> 
#debug {display:none} 
#debug:target { display:block; background-color:yellow; border 2px solid red; } 
</style> 
<div id="debug">some debug data</div> 

應該發生在我的元素的所有實例,我把一個頁面上,並導航到#調試什麼(我的元素)?每個組件中的調試元素應該顯示?他們都不應該顯示?應該只顯示第一個元素的調試div(我期望瀏覽器嘗試導航到的那一個)?

我的意見是,如果頁面沒有與任何滾動導航應該出現在頁面上的ID=debug值的元素。由於影子dom與頁面的其餘部分是獨立的,因此瀏覽器不應該嘗試導航到嵌套在shadow dom中的這樣一個元素。每個my-element實例都應該能夠看到當前頁面的URL,並且應該應用任何匹配:目標規則,以便每個my-elements的調試div都應該可見。

如果這是它將使用於所有組件的共享頁面的狀態,如上面的調試的實例一些有趣的可能性的情況下。不過,我懷疑Chrome是如何實現這些目標的。而且我很確定這個Shadow Dom填充不會正確地處理事情,因爲它基本上將所有東西都塞進了頁面的Dom樹中,並且會破壞html規範。

如果任何人有這個應該怎麼工作的一個答案,它目前的工作方式......

(從我的電腦編輯,以添加格式...很難從我的手機做)

回答

2

只是好奇我認爲你可以像嵌套文檔一樣看到陰影DOM。 CSS無法處理來自外部的陰影DOM中的元素(先前存在的陰影穿透CSS選擇器已被棄用)。 這也封裝ID和因此包含與ID的元件將不導致衝突或重複的多個組件。

如果您在組件樣式中有:target選擇器的CSS,它應該能夠使用匹配的id來尋址元素,否則它不應該。