我想在我的 Gatsby 项目中使用 Font Awesome Icons。我很想在 CDN 中包含很棒的字体。
仅将其包含在脚本标记中是行不通的。我想我需要用它来导入它,import ... from '../fontawesome.css'
但我无法让它工作,并且还想为此使用 CDN。还是我需要用 gatsby 的 css 库来解析它?
请给我建议或提示如何做到这一点。
我想在我的 Gatsby 项目中使用 Font Awesome Icons。我很想在 CDN 中包含很棒的字体。
仅将其包含在脚本标记中是行不通的。我想我需要用它来导入它,import ... from '../fontawesome.css'
但我无法让它工作,并且还想为此使用 CDN。还是我需要用 gatsby 的 css 库来解析它?
请给我建议或提示如何做到这一点。
对于 2018 年末访问此页面的任何人,我强烈建议使用react-icons。
import { FaBeer } from 'react-icons/fa';
class Question extends React.Component {
render() {
return <h3> Lets go for a <FaBeer />? </h3>
}
}
最好将应用程序所需的每个模块都包含在一个 JS 中。但如果你仍然想使用 CDN,只需复制并编辑默认模板即可:
cp .cache/default-html.js src/html.js
如果你想在项目包中打包 font-awesome,你可以选择:
对于最后一个选项,您必须将 css 和字体移动到 pages 文件夹中,然后将 fa 包含在您的 js 文件中。
import './css/font-awesome.css'
要使用 font-awesome 类,请使用 className 属性
<i className="fa fa-twitter"></i>
如果您正在寻找从 CDN 获取 js 代码,请使用Netlify
以下是在 Gatsby中使用Font-Awesome图标的推荐方法:
在您的高级组件中添加以下代码片段(在官方react-fontawesome 文档Layout
中提到)或Page
.
import { library } from '@fortawesome/fontawesome-svg-core'
import { fab } from '@fortawesome/free-brands-svg-icons'
import { faCheckSquare, faCoffee } from '@fortawesome/free-solid-svg-icons'
library.add(fab, faCheckSquare, faCoffee)
第一个
npm install -S
和import
free-brands-svg-icons 或/和 free-solid-svg-icons 仅当您需要它们的图标时。
然后在每个组件中使用图标的地方,添加如下代码:
import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"
现在在您的组件中使用它,如下所示:
<FontAwesomeIcon icon={["fab", "apple"]} style={{color:"#000000"}} />
我相信正是在这一步出现问题。如果要添加品牌图标,则需要在道具中包含“fab”,
icon
如上所示。否则,如果使用(比方说)实心图标,则只需输入图标的脊柱大小写(例如方格)样式名称,而不用 [] 将括号括在icon
prop 而不是 camelCase (checkSquare) 中,并且您不需要包含 ' fa' 开头。
只是对最后评论的补充。您需要传递一个array
to属性的原因icon
是因为 FontAwesomeIcon 组件中使用的默认前缀是fas
. 因此,如果您从@fortawesome/free-solid-svg-icons
(例如 faHome)提供图标,则无需添加前缀。
<FontAwesomeIcon icon={home} />
对于所有其他包,例如'@fortawesome/free-brands-svg-icons'
,您必须为图标指定前缀提供数组
<FontAwesomeIcon icon={["fab", "laravel"]} />
另外,很高兴知道,您不需要将所有fab
图标导入到您的库中。与实体图标('fas')一样,您可以只导入所需的图标,然后将它们添加到库中。就像是:
// fab icon (brand)
import { faLaravel } from "@fortawesome/free-brands-svg-icons"
// fas icon (solid)
import { faHome } from "@fortawesome/free-solid-svg-icons"
library.add(faHome, faLaravel)
最简单的解决方案是在layout.js < Helmet > 标签中添加 font-awesome 脚本:
<Helmet>
<html lang={site.lang} />
<link
rel="shortcut icon"
type="image/x-icon"
href={Favicon}
></link>
{/* adding google fonts */}
<link href="https://fonts.googleapis.com/css?family=Caveat" rel="stylesheet"/>
{/* adding font-awesome icons */}
<script src="https://kit.fontawesome.com/02130b3d51.js" crossorigin="anonymous"></script>
<style type="text/css">{`${site.codeinjection_styles}`}</style>
<body className={bodyClass} />
</Helmet>
现在简单地添加你喜欢的字体真棒图标:
<h2 onClick={scrollToBottom} style={buttonStyle} className="scroll-btn" aria-label="to bottom" component="span">
{/* adding font-awesome icon */}
<i class="fas fa-arrow-alt-circle-down"></i>
</h2>
真的就是这么简单!!