【问题标题】:Polymer deep CSS聚合物深度 CSS
【发布时间】:2015-04-30 13:37:17
【问题描述】:

我正在构建一个包含大量自定义元素的 Polymer 单页界面。

现在我希望我的元素具有某种主样式,我可以在 index.html 或我的主要内容元素中定义它。可以这样想:

index.html

<style>
    .classWhichWillBeUsedInCustomElements {
        mainColor: #e0e0e0;
    }
</style>

<script>
    mainColor = "#e0e0e0";
</script>

my-cool-element.html

<polymer-element name="my-cool-element">
    <template>
        <paper-button style="color: {{mainColor}}"></paper-button>
    </template>
</polymer-element>

<polymer-element name="my-cool-element">
    <template>
        <style>
            .coolButton {
                width: 300px;
                color: {{mainColor}};
            }
        </style>
        <paper-button class="coolButton"></paper-button>
    </template>
</polymer-element>

除非这不起作用。

我试过了:

  • 创建一个全局变量window.defaultColor 并像color: {{defaultColor}}; 一样使用它
  • 在父元素中使用core-style,运气不佳
  • 在我的 index.html 中创建一个 css 类并在自定义元素中调用它

实现这一目标的正确方法是什么?我试图避免使用Less

【问题讨论】:

  • 我知道 Polymer 是一个奇怪的新库(哎呀,它仍处于 alpha 阶段),但我认为它不会改变你编写 CSS 的方式。例如,样式仍然需要有一个选择器(如paper-button {})和其中的一个样式,如paper-button { color: #e0e0e0; }。或者,您可以将一个类应用于您的 paper-button 元素并将该类用作您的 CSS 选择器,而不是 paper-button 元素本身。
  • 我把它写成一个小例子来展示我想要实现的目标。我知道这不是有效的 CSS。至于使用类,这是不可行的。因为我只想使用预定义的颜色,同时仍然能够为我的其他属性(例如宽度/高度)使用一个类
  • 你可以给元素多个类; &lt;paper-button class="first second third"&gt; 是有效的并且一直在发生。您还可以将内联样式与类结合起来。
  • 我试过了,但是当我在 index.html 中编写 css 类时,我无法在我的自定义元素中使用它。
  • 这可能是因为您将 CSS 放在 index.html 文件中的 &lt;style&gt; 标记中。为什么不使用实际的 CSS 文件,然后你可以将它导入到任何你想要的 HTML 文件中?

标签: css polymer


【解决方案1】:

在 index.html 或全局样式表中使用以下模式:

<style>
    body /deep/ .classWhichWillBeUsedInCustomElements {
        mainColor: #e0e0e0;
    }
</style>

然后您可以在自定义元素中使用该类。全局样式会打阴影边界。您可以将 body 替换为您想要在其下打阴影 dom 边界的任何其他元素或选择器。

更多信息请点击此处:https://www.polymer-project.org/0.5/articles/styling-elements.html#cat

【讨论】:

  • 谢谢!但这几乎是正确的。我必须像这样指定我的主要内容元素:ap-content /deep/ .mainColor { background-color: #e0e0e0; },现在可以在我指定class="mainColor" 的任何地方使用它。请按正确的顺序/使用 (parent-element /deep/ className) 进行编辑,我会接受您的回答 :)
  • 另外请添加 body /deep/ .mainColor 也可以工作,并将导致所有带有 class="mainColor" 的元素使用该 css
  • 已更新。感谢您指出回复的不准确之处。无法访问使此工作正常运行的代码,并且在回答时记忆对我没有帮助;)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-17
  • 1970-01-01
  • 2016-09-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多