我无法让 Font Awesome 图标与 LitElement 一起使用,因为 CSS 样式不会穿透自定义元素的阴影边界。
是否可以在 LitElement 中使用 Font Awesome 或其他图标?
我无法让 Font Awesome 图标与 LitElement 一起使用,因为 CSS 样式不会穿透自定义元素的阴影边界。
是否可以在 LitElement 中使用 Font Awesome 或其他图标?
Polymer 材料库中有材料图标,那里使用的解决方案帮助我解决了字体真棒问题。
索引.html:
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<script type="module" src="./src/components/fa-icon.js"></script>
<title>Font Awesome test</title>
</head>
<body>
<h1>Hello world! <fa-icon iclass="far fa-thumbs-up"></fa-icon>
</body>
</html>
fa-icon.js:
import { LitElement, html } from '@polymer/lit-element';
import { FaStyles } from './css/fontawesome-all.css.js';
export class FaIcon extends LitElement {
static get properties() {
return {
iclass: String
}
}
constructor() {
super();
this.iclass="";
const fontEl = document.createElement('link');
fontEl.rel = 'stylesheet';
fontEl.href = 'https://use.fontawesome.com/releases/v5.0.13/css/all.css';
document.head.appendChild(fontEl);
}
_render({ iclass }) {
return html`${FaStyles}<i class$="${iclass}"></i>`;
}
}
customElements.define('fa-icon', FaIcon);
然后你需要自定义字体真棒css文件。下载 css 并将其重命名为“.js”。修改文件。
css/fontawesome-all.css.js:
import { LitElement, html } from '@polymer/lit-element';
export const FaStyles = html`
<style>
... the file's original content here ...
</style>
`;
然后你必须用'\\'替换所有'\'。例子:
.fa-yahoo:before {
content: "\f19e"; }
更换后:
.fa-yahoo:before {
content: "\\f19e"; }
试试https://www.npmjs.com/package/fa-icons,这个模块基于 LitElement
如果有人仍然有这个问题,这非常有帮助
https://www.npmjs.com/package/fa-icons
npm install fa-icons
然后在您的代码中,导入库,并使用以下图标:
<fa-icons> </fa-icons>
下面的例子
import { LitElement, html} from 'lit-element';
import 'fa-icons';
class SomeClass extends LitElement {
render() {
return html`
<div>
<fa-icon class="fas fa-address-card" color="#2980B9" size="2em"></fa-icon>
</div>
`;
}
}
customElements.define('custom-component', SomeClass );
我用于 LitElement 的另一种方法如下:
import { LitElement, html, customElement } from 'lit-element'
@customElement('font-awesomeness')
export class FontAwesomeness extends LitElement {
render() {
return html `
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.8.1/css/all.css"
integrity="sha384-50oBUHEmvpQ+1lW4y57PTFmhCaXp0ML5d60M1M7uH2+nqUivzIebhndOJK28anvf"
crossorigin="anonymous"/>
<i class="far fa-thumbs-up"></i>
`
}
}
<link>
您可以通过向模板添加元素来导入外部样式表。
这是我的可运行片段。
<html>
<head>
<title>Use Font Awesome 5 with LitElement</title>
<link rel="stylesheet"
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.0/css/all.min.css">
<script type="module" src="./my-element.js"></script>
</head>
<body>
<my-element></my-element>
</body>
</html>
import { LitElement, html, css } from 'lit-element';
class MyElement extends LitElement {
render() {
return html`
<link rel="stylesheet" href="./app-styles.css">
<div>
<i class="icon hat-wizard"></i>Hat Wizard
</div>
`;
}
}
customElements.define('my-element', MyElement);
您可以在 CSS 中为此使用 Unicode。有关Font Awesome中Unicode 字符代码的官方列表,请参见此处。
注意:确保为图标包含正确的权重和Unicode 值。
/* Step 1: Common Properties: All required to make icons render reliably */
.icon::before {
display: inline-block;
font-style: normal;
font-variant: normal;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
}
/* Step 2: Reference Individual Icons */
.hat-wizard::before {
font-family: 'Font Awesome 5 Free';
content: '\f6e8';
display: inline-block;
vertical-align: middle;
font-weight: 900;
}