【问题标题】:Polymer: Styling <content> elements with custom CSS propertiesPolymer:使用自定义 CSS 属性为 <content> 元素设置样式
【发布时间】:2016-11-29 19:17:27
【问题描述】:

我有一个与 ::content 选择器和自定义 CSS 属性的样式有关的问题。任何反馈将不胜感激。

这是问题的简化版本。这里我有一个使用内容标签的 Polymer 组件。内容将始终是纸质输入:

<template>
  <style>
    #container ::content paper-input {
      --paper-input-container-focus-color: #ddd;
      margin: 8px;
    }     
  </style>
  <div id="container">
    <content></content>
  </div>
</template>

当我对此进行测试时,应用了边距,但没有应用自定义 css 属性。

我想要完成的事情是不可能的吗?

【问题讨论】:

  • 尝试将 style is="custom-style" 添加到您的样式标签
  • 你有没有看到polymer-project.org/1.0/docs/devguide/…关于自定义css属性,也许是相关的
  • 您使用的是哪个版本的 Polymer?

标签: css polymer shadow-dom


【解决方案1】:

如果您使用的是 Polymer 1.6+。您可以使用useNativeCSSProperties 打开native css 来完成这项工作。如果您使用的是 1.7,那么我建议您使用 slot 而不是 content,因为这是聚合物在 V2.0+ 中迁移到的内容,它是 shadow dom v1 的一部分。虽然不确定它是否可以在IE 中工作,或者不能像在 IE 中那样工作 useNativeCssProperties 没有效果

<base href="https://polygit.org/components/">
<script src="webcomponentsjs/webcomponents-lite.js"></script>
<script>
  window.Polymer = {
    lazyRegister: true,
    useNativeCSSProperties: true
  }
</script>
<link rel="import" href="paper-input/paper-input.html">
<dom-module id="light-dom">
  <template>
    <style>
      #container ::slotted(paper-input) {
        --paper-input-container-focus-color: #ddd;
      }
    </style>
    <div id="container">
      <slot></slot>
    </div>
  </template>
</dom-module>
<script>
  Polymer({
    is: 'light-dom'
  })
</script>




<light-dom>
  <paper-input label="hello"></paper-input>
</light-dom>

【讨论】:

  • 感谢您的帮助。目前使用的是旧版本的聚合物 (1.2.3),但我们很快就会升级到 1.7。我一直在阅读将 useNativeCSSProperties 设置为 'true' 将允许在大多数浏览器中使用这种方法。话虽如此,显然 Edge 和 Safari 目前不支持 css 属性。由于这些浏览器将回退到 Polymers shim,因此我假设它们无法正确呈现上述示例。
猜你喜欢
  • 2017-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多