Использование переменных полимера css

Я не могу понять, как использовать пользовательские переменные css с полимером. На данный момент я делаю наложение с "железом-наложением-поведением".

Это включает элемент "железо-наложение-фон", который имеет различные переменные css. В первую очередь меня интересует непрозрачность -iron-overlay-backdrop-opacity.

I может заставить их работать в моем основном файле index.html, добавив

  <style is="custom-style">
    :root {
      --iron-overlay-backdrop-opacity: 0.4;
    }
 </style>

Но я не хочу определять стили там! Я хочу определить их внутри моего пользовательского элемента overlay.

Как использовать их внутри моего пользовательского элемента?

Я пробовал использовать их вот так

<dom-module id="faq-overlay">

<style>

:host {
  --iron-overlay-backdrop-opacity: 0.3;
  --iron-overlay-backdrop-background-color: red;
}
...

Но это не работает. Есть ли способ сделать это?

Ответ 1

Я верю, что вы ищете: (в вашем файле темы)

<style is="custom-style">
  :root {
    --iron-overlay-backdrop-opacity: 0.7;
    --background-r: 0;
    --background-g: 0;
    --background-b: 255;
    --background-color: blue;
    --iron-overlay-backdrop-background-color: rgba(var(--background-r),var(--background-g),var(--background-b),var(--iron-overlay-backdrop-opacity));
  }
 </style>

и в вашем пользовательском элементе

<style is="custom-style">
    :host paper-material.custom {
       background-color: var(--iron-overlay-backdrop-background-color);
    }
</style>

Ответ 2

Полимер использует пользовательскую реализацию переменных css из-за ошибки в Safari (как сказал Полимер).

Смотрите здесь: https://www.polymer-project.org/1.0/docs/devguide/settings (внизу страницы).

Чтобы использовать реализацию браузера, скажите ему Полимер:

<script>
  window.Polymer = {
     useNativeCSSProperties: true
  };
</script>