Polymer 1.0 应用程序主题仅影响 index.html 而不是自定义元素

Polymer 1.0 app-theme only affecting index.html and not on custom elements

我正在使用 Polymer Starter Kit,我想将支架移动到它自己的元素中 <main-scaffold>。在我将它从 index.html 移动到它自己的元素之前,app-theme.html 中有一些样式应用于它,但现在应用了 none 样式。我放入自己的自定义元素中的任何一组元素都是这种情况。从 app-theme.html 应用于 <paper-material> 的自定义样式未应用于我的 <home-page> 元素。我希望某些元素在全球范围内应用主题。 app-theme.html 中唯一适用于其他任何地方的样式是 CSS 自定义属性,例如 --dark-primary-color.

有什么方法可以创建适用于整个项目的主题吗?我已经尝试专门将 app-theme.html 导入到我的元素中,但没有任何区别。提前致谢。

polymerthemes.com 中的主题应适用于您的整个项目。

只需下载一个预制主题(或使用 Polymer Theme Builder 创建您自己的主题)并 link 像这样在您的 <head>:

<style is="custom-style">
    @import url("path/to/theme.css");
</style>

或者,查看样式在该站点上的应用方式。

免责声明:我是 polymerthemes.com 的创建者之一。

我遇到了同样的问题,以下方法对我有用。在你的 dom-module 添加:

<link rel="import" type="css" href="../styles/app-theme.css">

例如:

<dom-module id="my-element">
  <link rel="import" type="css" href="../styles/app-theme.css">
  <template>
    <paper-button raised class="primary">Click Me!</paper-button>
  </template>
</dom-module>

这似乎只对某些纸张元素才需要。没有它,纸张复选框也可以工作。可以肯定的是,这不是一个理想的解决方案。

发现在我的自定义元素中添加以下内容会导致 gulpfile.js 中的硫化任务崩溃(其余任务不会 运行)。

<link rel="import" href="/styles/app-theme.html">

使用相对路径解决了这个问题

<link rel="import" href="../../../../styles/app-theme.html">

以某种方式工作,但我认为这不是正确的做法。 app-theme.html 包含我的自定义元素不需要的许多 css 代码。 使用 mixins ( @apply(--mixin-name); ) 看起来是个好方法,但还没有尝试过。我认为修改 app-theme.html 无论如何都是必要的。

我希望 Polymer Starter Kit 引入最佳实践,为 paper-material/etc 应用默认值 margins/paddings/etc。


编辑 7 月 2 日

未应用以下内容。

应用-theme.html

:root {
…
--app-paper-material-theme: {
   border-radius: 2px;
   height: 100%;
   padding: 16px 0 16px 0;
   width: calc(98.66% - 16px);
   margin: 16px auto;
   background: white;
 };
}

我的客户元素使用-papermaterial.html

<style>
paper-material {
  @apply(--app-paper-material-theme);
}
</style>

这几个小时我的研究搞砸了,发布了错误的结果,所以我决定删除这些部分。为那些看到他们并采取某种行动的人感到抱歉。