聚合:将样式应用于Shadow DOM下的元素

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了聚合:将样式应用于Shadow DOM下的元素相关的知识,希望对你有一定的参考价值。

我使用的是Polymer 2.0。我需要在Shadow DOM下为类应用样式。

如果情况如此(iron-dropdown在阴影根下):

<paper-menu-button>

#shadow-root
<iron-dropdown></iron-dropdown>

</paper-menu-button>

iron-dropdown的风格我们可以像这样写:

paper-menu-button {
   --iron-dropdown: {   
     overflow:visible;
   }
} 

但是,在这种情况下:

<paper-menu-button>

#shadow-root
<iron-dropdown>
<div class="dropdown-content"> content </div>
</iron-dropdown>

</paper-menu-button>

我们如何为类.dropdown-content应用样式

答案

<paper-menu-button>允许使用CSS属性(即分别为<iron-dropdown>.dropdown-content)来设置内部--paper-menu-button-content--paper-menu-button-dropdown

<dom-module id="x-foo">
  <template>
    <style>
      paper-menu-button {
        /* applies to inner iron-dropdown */
        --paper-menu-button-dropdown: {
          overflow: visible;
        };

        /* applies to inner .dropdown-content */
        --paper-menu-button-content: {
          box-shadow: 5px 10px 20px lightblue;
          overflow: visible;
        };
      }
    </style>

    <paper-menu-button>
    ...

demo

<paper-menu-button> docs on styling可能会列出您可能会发现有用的其他CSS属性。

另一答案

你可以使用内联样式来设计.dropdown-content

不好但有效

以上是关于聚合:将样式应用于Shadow DOM下的元素的主要内容,如果未能解决你的问题,请参考以下文章

将全局样式应用到 Shadow DOM 的正确方法

阴影 dom 内的聚合物元素有效,但没有样式

如何使用 shadow dom 创建聚合物自定义元素,以便可以访问它的 shadowRoot?

通过selenium javascriptExecutor访问shadow DOM Elements(聚合物)

为原生 Shadow DOM 元素设置样式

有人知道如何使用 selenium webdriver 识别 shadow dom web 元素吗?