我需要为app使用常见样式,但<custom-style>
不起作用。 include
中的属性<style></style>
也不起作用。怎么做?
答案 0 :(得分:9)
编辑:替代方法,使用模板文字。
我意识到有,我觉得更好,更多 现在正在使用模板文字。
在shared-styles.js
:
import { html } from @polymer/polymer/polymer-element.js;
export const sharedStyles = html`
<style>
... various styles here ...
</style>
`;
现在,您要在自定义元素文件中使用它(my-element.js
):
import { PolymerElement, html } from @polymer/polymer/polymer-element.js;
import { sharedStyles } from './shared-styles.js';
class MyElement extends PolymerElement {
... element code ...
get template() {
return html`
${sharedStyles}
<style>
... your element custom styles here ...
</style>
`;
}
... rest of your element code ...
}
对我而言,这更有意义,因为我们使用原生的javascript和
避免include=""
可能需要的任何额外的填充物
功能。
由于include=""
语法,我还认为这是未来的证据
是不是真的在规范,我不指望它会? (任何人都可以纠正我
如果我错了吗?)
END(替代方法)
OLD以下答案
3.0上线后,升级指南中已经记录了这一点。
请参阅此页面上“不太常见的升级任务”下的第一部分: https://www.polymer-project.org/3.0/docs/upgrade
另外,请记住,您需要先将custom-style
导入js模块才能生效。
应位于此处:polymer/lib/elements/custom-style.js
答案 1 :(得分:2)
有同样的问题,通过手动解决它:
const documentContainer = document.createElement('div');
documentContainer.setAttribute('style', 'display: none;');
documentContainer.innerHTML = `
<dom-module id="shared-styles">
<template>
<style>...</style>
</template>
</dom-module>`;
document.head.appendChild(documentContainer);
然后您只需导入并包含它即可使用它。
import './shared-styles.js';
...
static get template() {
return `<style include="shared-styles"></style>...`;
}
我从polymer-modulizer得到了这个解决方案,但我希望将来会有更好的方法。
答案 2 :(得分:0)
如果我们遵循聚合物团队已经完成的工作,那么您需要如下的 myapp-styles.js
import {html} from '@polymer/polymer/lib/utils/html-tag.js';
/*
custom classes for my application
*/
const template = html`
<dom-module id="myapp-styles">
<template>
<style>
.bold{
font-weight: bold;
}
</style>
</template>
</dom-module>
`;
template.setAttribute('style', 'display: none;');
document.head.appendChild(template.content);
然后在组件页面中,您需要导入'myapp-styles.js'; ,并将其与自定义样式标记一起添加
<style is="custom-style" include="myapp-styles iron-flex iron-flex-alignment"></style>