Polymer 无法将::after伪元素添加到阴影dom中的时隙元素

Polymer 无法将::after伪元素添加到阴影dom中的时隙元素,polymer,web-component,shadow-dom,Polymer,Web Component,Shadow Dom,我在试验Eric Bidelman的阴影dom示例: 并试图向其添加材质设计样式,这需要在选项卡中添加:after伪元素 经过一些实验,我发现应用伪元素的内部样式在使用聚合物时确实有效,但在使用vanilla JS时却无效 聚合物示例: 示例: 在第二个示例中,应用:after伪元素在shadowdom中不起作用,显然需要在外部进行设置 所以我的问题是,您应该如何在不需要使用外部样式的情况下将伪元素添加到slotted/light dom元素中 (已经在Chrome和Safari上尝试过这些

我在试验Eric Bidelman的
阴影dom示例:

并试图向其添加材质设计样式,这需要在选项卡中添加:after伪元素

经过一些实验,我发现应用伪元素的内部样式在使用聚合物时确实有效,但在使用vanilla JS时却无效

聚合物示例:

示例:

在第二个示例中,应用:after伪元素在shadowdom
中不起作用,显然需要在外部进行设置

所以我的问题是,您应该如何在不需要使用外部样式的情况下将伪元素添加到slotted/light dom元素中


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

如果它似乎在聚合物中起作用,那是因为聚合物1.0实际上没有使用原生的
::开槽的
伪元素

事实上,聚合物使用天然阴影DOM“v0”和。您可以在开发工具中看到它

正如您所注意到的,您可以从外部在
伪元素之后添加
::


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

shadowdom的主要目的是将CSS样式从外部分离出来。按你的要求去做,实际上会适得其反。如果在shadow DOM内部有light DOM元素,则应在shadow DOM外部设置它们的样式。该规范允许您修改“分布式”节点的样式(即,用户贡献的light DOM插入元素的阴影树中)我要问的问题是,它是否还允许您修改CSS伪元素属性:after和:before。也许这被认为是“向灯光dom添加框”,因此是不允许的。我被它在上面给出的聚合物示例中确实起作用的事实所震惊,但这可能是实现本身的一个问题?谢谢。我确实注意到了
::content
::slotted
转换,我想知道发生了什么!Slotted实际上可以与伪元素一起使用,例如
之后(例如
::Slotted(输入)::after
),