Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
900 views
in Technique[技术] by (71.8m points)

css - Polymer @import theme file with :host in styles has no affect

Back with another Polymer question, I have a Polymer/Electron app that I'm trying to style.

I want to create a theme.css that contains a :host block with my entire theme in it that I can then import into my modules stylesheet but I've tried a few different things and tried finding anything in the documentation to no avail.

So far, I have tried in, and outside of the <template> definition:

<link rel="stylesheet" href="./account-list.css"> with an @import
<style>@import 'my-theme.css';</style> just above my <link>
:root instead of :host in my theme.css

But neither seem to work, the theme.css is definitely being requested but has no affect on the module's style.

Is there anyway to have a theme like this for Polymer, I really don't want to have a build step.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

There's a new concept called style module (actually a dom-module element behind the scene) introduced in Polymer 1.1 (read it here) and the old way of including external stylesheets has been deprecated (read it here).

Basically, you need to create an html file like how you normally create an element to store your styles. The id defines the name of this file that will be referenced later on.

<!-- shared-styles.html -->
<dom-module id="shared-styles">
  <template>
    <style>
      .red { color: red; }
    </style> 
  </template>
</dom-module>

Then obviously you need to import this file in your page.

<link rel="import" href="shared-styles.html">

Now, there are two scenarios.

  1. If you are using custom-style at the document level, you need to include the style module you previously defined like this -

    <style is="custom-style" include="shared-styles"></style>

  2. If you simply want to include the style module inside one of your elements, do this -

    <dom-module id="my-element"> <style include="shared-styles"></style>

Have a look at this plunker that demonstrates both scenarios.

Keep in mind that in your particular example, since you are using :host, I assume you will go with scenario 2. So this plunker should be a bit more clearer.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...