无法在媒体查询中设置阴影 dom 中的元素样式

Can't style element in shadow dom in media query

在我的 styles/app-theme.html 中,我试图在媒体查询中更改 paper-drawer-panel 的菜单图标大小。此元素在 index.html 中。由于它在阴影 dom 中,我似乎无法访问它。我试过:

可能不相关,但这是 index.html:

  <template is="dom-bind" id="app">
    <paper-drawer-panel force-narrow="true">
      <div drawer>
        <drawer-custom></drawer-custom>
      </div>
      <div main>
        <div id="header-v-center">
          <paper-icon-button id="paper-toggle" icon="menu" paper-drawer-toggle>

  @media (max-width: 600px) {
    iron-icon#icon::shadow {
      height: 6px;
      width: 5px;
    }
  } 

  @media (max-width: 600px) {

    :root {
      --iron-icon-height: 6px;
      --iron-icon-width: 50px;
    }
  } 

没有成功。有什么建议么?

Polymer 目前使用垫片(部分 polyfill)来评估自定义属性。因此,它们不会自动重新计算。但是,您可以对需要更新的元素使用 iron-media-query (or directly use matchMedia) to know when to call updateStyles

Here's an example of using updateStyles:

Polymer({

    is: 'seed-element',

    properties: {
      largeScreen: {
        type: Boolean,
        observer: '_largeScreenChanged'
      }
    },
    
    _largeScreenChanged: function(newValue) {
      this.updateStyles({
        '--h1-color': (newValue ? 'red' : 'blue')
      });
    }
  });
<dom-module id="seed-element">
  <template>
    <style>
      h1 {
        color: var(--h1-color, red);
      }
    </style>
    
    <h1>header</h1>
    
    <iron-media-query query="(max-width: 600px)" query-matches="{{largeScreen}}"></iron-media-query>
  </template>

</dom-module>

<seed-element id="topmenu"></seed-element>