2016-04-07 12 views
4

Ich habe die neue style modules Empfehlung in Polymer 1.1 gelesen und es funktioniert wunderbar.Gemeinsame Stile und externe Stylesheets in Polymer 1.1

Mein Problem hier wieder, wie mit dem alten Ansatz ist, wie könnte ich alle meine CSS in eine CSS-Datei verschieben und nicht nur zwischen einem <style> Tag im HTML?

Hier ist ein Beispiel.

Ich habe eine benutzerdefinierte <ot-subscribe> Element, das wie folgt aussieht:

<dom-module id="ot-subscribe"> 
    <template> 
     <style> 
      paper-input { 
       --paper-input-container-underline: { 
        display: none; 
       }; 
       --paper-input-container-underline-focus: { 
        display: none; 
       }; 
      } 
     </style> 
     <form is="iron-form"> 
      <paper-input placeholder="{{labelPlaceholder}}" no-label-float></paper-input> 
      <ot-button submit class="button-secondary">{{labelSubscribe}}</ot-button> 
     </form> 
    </template> 
</dom-module> 

Wie Sie sehen, ich habe eine paper-input, für die ich die Unterstreichungen ausblenden möchten.

Dieses Beispiel funktioniert gut.

Nun, ich brauche, dass CSS in einer externen CSS-Datei zu bewegen, aber halten sie alle genau funktioniert gleich. Das finale Markup würde also ungefähr so ​​aussehen (ich habe Kommentare hinzugefügt, um die verschiedenen Ansätze zu erklären, die ich versucht habe).

<dom-module id="ot-subscribe"> 
    <template> 
     <!-- Both of these have absolutely no effect --> 
     <style type="text/css" src="external.css"></style> 
     <style src="external.css"></style> 

     <!-- This DOES work, however only for regular CSS, no custom properties or mixins would work --> 
     <!-- Also, it's deprecated: https://www.polymer-project.org/1.0/docs/devguide/styling.html#external-stylesheets --> 
     <link rel="import" type="css" src="external.css"> 

     <!-- Using a style module DOES work, however we're just moving the issue, not solving it, since the CSS must still be in the HTML not in an external CSS file --> 
     <style include="shared"></style> 

     <form is="iron-form"> 
      <paper-input placeholder="{{labelPlaceholder}}" no-label-float></paper-input> 
      <ot-button submit class="button-secondary">{{labelSubscribe}}</ot-button> 
     </form> 
    </template> 
</dom-module> 

Warum brauche ich das? Ein Wort: Sass.

Hat sonst noch jemand jemals dieses Problem gestoßen? Hat jemand eine Lösung gefunden?

Oder meine Frage zusammenfassen, wie das Heck benutzt man Sass mit Polymer?

Antwort

3

Soweit ich weiß, wird dies nicht unterstützt. Es gibt Werkzeuge, die automatisch Style-Module aus CSS-Dateien erstellen.

https://github.com/Polymer/polymer/issues/2429

+1

Yup, ich am Ende eines benutzerdefinierten Wrapper für die sass Compiler schreiben, die dies berücksichtigt, und die entsprechende Art Modul erzeugt HTML-Dateien für jede in Frage kommende CSS-Datei. Scheint so etwas wie eine natürliche Sache zu sein (für mich) im Moment, da ich bereits einen solchen Wrapper verwende, um Unterstützung für die Polymer-CSS-Mixins hinzuzufügen, was in SASS noch keine gültige Syntax ist (was ich meine: Mixin: {Farbe: Rot;};). –

+0

Ich habe gerade ein ähnliches Problem, aber mein Anwendungsfall kann nicht durch das Schluckmodul oder Poly-Stil abgedeckt werden ... Ich baue eine Komponente nicht Anwendung, die eine Abhängigkeit von einer CSS-Bibliothek hat ... –

+0

Möglicherweise haben Sie mehr Glück mit einem Kommentar zu Ihrem Anwendungsfall zu dem verknüpften Problem (2429). Ich kenne keine Problemumgehung. –

Verwandte Themen