不能将:: after伪元素添加到阴影dom中的slotted元素

时间:2017-02-20 18:26:19

标签: polymer web-component shadow-dom

我正在尝试使用Eric Bidelman的<fancy-tabs>影子dom示例:https://developers.google.com/web/fundamentals/getting-started/primers/shadowdom

并且正在尝试向其添加Material Design样式,这需要在标签中添加:after伪元素。

经过一些实验,我发现应用伪元素的内部样式在使用Polymer时似乎有效,但在使用vanilla JS时却没有...

聚合物示例: https://jsbin.com/maqaze/edit?html,output

Vanilla JS例子:

在第二个例子中,应用:after伪元素在影子dom <style>内不起作用,显然需要在外部设置。

https://jsbin.com/toxalu/edit?html,output

所以我的问题是,你应该如何将一个伪元素添加到slotted / light dom元素中,而不需要使用外部样式?

(在Chrome和Safari上试过这些例子)

1 个答案:

答案 0 :(得分:1)

如果它似乎在Polymer中起作用,那是因为Polymer 1.0并不真正使用原生的::slotted伪元素。

事实上,Polymer使用原生的Shadow DOM“v0”和converts ::slotted to ::content。你可以在开发工具中看到它。

如您所知,您可以从外部添加::after个伪元素。

我认为伪元素被视为复杂选择器,因此在::slotted()中不受支持。