/ deep /和:: shadow在CSS选择器中的含义是什么?

时间:2014-09-01 16:13:30

标签: css html5 polymer web-component shadow-dom

在查看Polymer时,我在Chrome 37的开发人员工具的样式标签中看到以下CSS选择器:

enter image description here

我还看到了一个带有伪选择器::shadow的选择器。

那么,CSS选择器中的/deep/::shadow是什么意思?

1 个答案:

答案 0 :(得分:70)


正如Joel H.在评论中指出的那样,Chrome已经弃用了/deep/组合器,并且在IE中出现语法错误。


HTML5 Web Components提供CSS样式的完全封装。

这意味着:

  • 组件中定义的样式不会泄漏并影响页面的其余部分
  • 在页面级别定义的样式不会修改组件自己的样式

但是,有时您希望使用页面级规则来操纵在其shadow DOM中定义的组件元素的表示。为此,您需要将/deep/添加到CSS选择器。

因此,在显示的示例中,html /deep/ [self-end]正在选择具有html属性的self-end(顶级)元素下的所有元素,包括那些隐藏在Web组件的阴影DOM根中的元素

如果要求所选元素存在于影子根目录中,则可以在其父元素上使用::shadow伪选择器。

考虑:

<div>
  <span>Outer</span>
  #shadow-root
  <my-component>
    <span>Inner</span>
  </my-component>
</div>

选择器html /deep/ span将同时选择<span>个元素。

选择器::shadow span将仅选择内部<span>元素。

在W3C的CSS Scoping Module规范中了解更多相关信息。