【问题标题】:Styling Polymer paper-slider造型聚合物纸滑块
【发布时间】:2016-01-07 08:00:04
【问题描述】:

所以我基本上是用自定义元素包装标准paper-slider 元素,并希望包含一些样式。以下是我目前拥有的:

<dom-module id="my-slider">
<template>
    <style>
      /* Works */
      paper-slider {
        --paper-slider-active-color: red;
        --paper-slider-knob-color: red;
        --paper-slider-height: 3px;
      }

      /* Doesn't work */
      paper-slider #sliderContainer.paper-slider {
        margin-left: 0;
      }

      /* Also doesn't work */
      .slider-input {
        width: 100px;
      }
    </style>

    <div>
        <paper-slider editable$="[[editable]]" disabled$="[[disabled]]" value="{{value}}" min="{{min}}" max="{{max}}"></paper-slider>
    </div>
</template>

<script>
    Polymer({
        is: "my-slider",
        properties: {
            value: {
                type: Number,
                value: 0,
                reflectToAttribute: true
            },
            min: {
                type: Number,
                value: 0
            },
            max: {
                type: Number,
                value: 100
            },
            editable: Boolean,
            disabled: Boolean
        }
    });
</script>
</dom-module>

JSFiddle:https://jsfiddle.net/nhy7f8tt/

定义paper-slider 使用的变量按预期工作,但是当我尝试通过其选择器直接处理其中的任何内容时,它不起作用。

我对 Polymer 很陌生,所以这可能是一个非常简单/愚蠢的问题,但我真的很困惑,非常感谢任何帮助!

次要(但相关的)问题是当值为 100 时,可编辑 paper-slider 元素右侧的输入被剪切。

【问题讨论】:

  • 您可能正在尝试修改已在 &lt;link rel="import" href="paper-slider/paper-slider.html"/&gt; &lt;link rel="import" href="polymer/polymer.html"/&gt; 中声明的内容

标签: javascript css polymer web-component paper-elements


【解决方案1】:

您可以使用 ::shadow/deep/ 之类的选择器,但它们已被弃用。如果一个元素没有提供钩子(CSS 变量和 mixins),那么你基本上就不走运了。

您可以做的是在 elements GitHub 存储库中创建一个功能请求以支持其他选择器。

我已经成功使用的另一个解决方法是添加style module

var myDomModule = document.createElement('style', 'custom-style');
myDomModule.setAttribute('include', 'mySharedStyleModuleName');
Polymer.dom(sliderElem.root).appendChild(myDomModule);

我希望语法正确。我只在 Dart 中使用 Polymer。 dom-module 必须是 custom-style,尽管通常只有在 Polymer 元素之外使用时才需要这样做。

另请参阅https://github.com/Polymer/polymer/issues/2681,了解我在使用这种方法时遇到的问题。

【讨论】:

  • 谢谢,我还发现polymer-project.org/1.0/docs/devguide/… 很有帮助。马上,我想我可以只使用/deep/,它工作得很好。在我得到一些喘息的空间之后,我可以寻找一种更好的方法来做到这一点,也许可以使用样式模块 :)
  • 我建议创建一个功能请求,同时使用/deep/ 直到它被实施。
【解决方案2】:

以下代码对我有用,

attached: function(){
  var sliderContainer = document.querySelector("#sliderContainer.editable.paper-slider");
  sliderContainer.style.marginTop = "5px"; 
  sliderContainer.style.marginBottom = "5px";
},

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-24
    • 2015-12-16
    • 2014-09-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多