简体   繁体   English

聚合物无法在重复模板中设置自定义标签的样式

[英]polymer could not style custom tag in repeat template

trying to style the paper-button inside the template, I've tried different sectors and only one is worked so how can i do the styling correctly. 尝试对模板中的纸质按钮进行样式设置,我尝试了不同的扇区,但仅工作了一个扇区,因此如何正确进行样式设置。 so in the index.html i call iron-ajax element and one the last-response i call a dom-repeat template 因此在index.html中,我将其称为iron-ajax元素,将最后一个响应称为一个dom-repeat模板

 <iron-ajax id="aj" auto
                url="url"
                handle-as="json"
                last-response="{{ajaxResponse}}"
                contentType="text/HTML"
                debounce-duration="300"></iron-ajax>
                <div   class="video">
                <template is="dom-repeat" items="[[ajaxResponse]]" >
                   <paper-card image="[[item.fields.image]]">
                      <feed-bdy items="[[item]]"></feed-bdy>

and in the feed-bdy.html : 并在feed-bdy.html中:

<link rel="import" href="../../bower_components/polymer/polymer.html">
 <link rel="import" href="../../bower_components/paper-styles/typography.html">
<dom-module is="feed-bdy">
     <style >  
     :host{
     --paper-button-ink-color: var(--paper-pink-a200);
  paper-button.custom:hover{ background-color: var(--paper-indigo-100)        !import; }   
  }
  :host paper-button.rea:hover{
  --paper-button-ink-color: var(--paper-pink-a200);
  color: red
  }
  --paper-button.custom:hover {
  background-color: var(--paper-indigo-100) !import;
  color: white !important;
  }
  paper-button:hover{
  background-color:red !important;
  }
</style>
<template id="repeater" is="dom-repeat" items="{{items}}">
  <div class="card-content">
     <div class="ar-header">
        <h3><a href="#">    [[items.fields.title]]</a></h3>
     </div>
     <div class="content-bdy"></div>
  </div>
  [[_renderHTML(items)]]
  <div class="card-actions">
     <paper-button  class="custom">إقراء المزيد !</paper-button>
     <paper-button>
        شارك 
        <iron-icon icon="reply"></iron-icon>
     </paper-button>
  </div>
</template>
<script>
  Polymer({
   is: 'feed-bdy',
   properties: {
       artId:{ 
        type : String,
        observer: '_renderHTML'

       }
     },
   listeners :{

   },
   _renderHTML: function(items) {
    // firstp to get only the first pargarph to put in the home page
    var ss= items.fields.body;
    //console.log(this.$$(".card-content"));
    var firstp = ss.substring(0,ss.search("</p>")+4);
    this.$$(".content-bdy").innerHTML += firstp;


   },
   _toggle : function(e){
    var id = Polymer.dom(e).localTarget.title;
    //console.log(id);
    var moreInfo = document.getElementById(id);
   //   console.log(moreInfo);
    var iconButton = Polymer.dom(e).localTarget;
         iconButton.icon = moreInfo.opened ? 'hardware:keyboard-arrow-up'
                                           : 'hardware:keyboard-arrow-down';
        moreInfo.toggle();
   }
  });
</script>
 </dom-module>

There are a few issues with your CSS: CSS存在一些问题:

  1. import! should be important! 应该很important!
  2. Mixins and custom properties need to be defined within a selector: 需要在选择器中定义Mixins和自定义属性:

INCORRECT 不正确

<style>
  --paper-button: {
    /** Some styles */
  }

   --paper-button-ink-color: blue;
</style>

CORRECT 正确

<style>
  :host {
    --paper-button: {
      /** Some styles */
    }

     --paper-button-ink-color: blue;
  }
</style>
  1. Mixins and custom properties are not selectors: Mixins和自定义属性不是选择器:

INCORRECT 不正确

<style>
  --paper-button.special-css-class {
    /** Some styles */
  }
</style>

Instead, you can use the .special-css-class as your selector, and define your mixin/custom property for any element that matches: 相反,您可以使用.special-css-class作为选择器,并为任何匹配的元素定义mixin / custom属性:

CORRECT 正确

<template>
  <style>
    .special-css-class {
      --paper-button: {
        /** Some styles */
      }

      --paper-button-ink-color: blue;
    }
  </style>

  <paper-button class="special-css-class"></paper-button>

  <!-- This button won't have your custom styles! -->
  <paper-button></paper-button>
</template>
  1. At least for paper-button, you need not use custom properties/mixins if you just want to specify the color and background color: 至少对于纸质按钮,如果只想指定颜色和背景色,则无需使用自定义属性/混合:

 <base href="https://polygit.org/components/"> <script src="webcomponentsjs/webcomponents-lite.min.js"></script> <link href="polymer/polymer.html" rel="import"> <link href="paper-button/paper-button.html" rel="import"> <x-foo></x-foo> <dom-module id="x-foo"> <template> <style> paper-button { background-color: purple; color: red; } </style> <template is="dom-repeat" items="{{items}}"> <paper-button>Click Me</paper-button> </template> </template> <script> Polymer({ is: 'x-foo', properties: { items: { value: [1, 2, 3, 4] } } }); </script> </dom-module> 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM