Font Awesome 图标在 Gatsby 中使用 Bulma 不显示
Font Awesome icons not showing up using Bulma in Gatsby
我正在使用 Gatsby 和 Bulma 构建一个网站。在我的 Nav.js
文件中,我为网站顶部的按钮创建了一个通用格式,我有几个使用 Bulma 的按钮,我想在其中添加图标。我关闭了使用 Font Awesome 图标添加 Bulma 按钮的文档:https://bulma.io/documentation/elements/button/。我的代码完全相同,除了我将按钮包裹在 <a>
标记中以 link 标记到我网站的其他页面之外。我在文档中列出了包含的 <script>
文件以提供 Font Awesome 图标,我的代码如下所示:
const Nav = () => {
return (
<div style={{ margin: `3rem auto`, maxWidth: 650, padding: `0 1rem` }}>
<nav>
<script defer src="https://use.fontawesome.com/releases/v5.3.1/js/all.js"></script>
<p class="buttons is-outlined is-centered">
<a href="/"><button class="button is-outlined"> <span class="icon">
<i class="fas fa-home"></i>
</span>
<span>Home</span>
</button></a>
<a href="/projects"><button class="button is-outlined">Projects</button></a>
<a href="/experience"><button class="button is-outlined">Experience</button></a>
</p>
</nav>
</div>
)
}
我不确定 script
是否位于文件的正确部分,我只是尝试为我的主页按钮放置一个图标,如下所示:
"Home" 左边的空隙是我猜应该是图标的地方。对于图标未显示或显示为空白的原因,我将不胜感激。谢谢!
在朋友的帮助下,解决问题的方法是将<script>
标签放在项目的public/index.html
文件中,然后精确复制并命名为index.html
并将其放入项目中的 static
文件夹中。这样,每次 Gatsby 服务器 运行 时,它都会在 public
存储库 中创建 index.html
文件的副本,并使用 字体 Awesome包含图标脚本 。
我 运行 亲自解决了这个问题,所以在这里发帖给任何正在寻找答案的人。有几种方法可以让它工作,包括使用图标作为库的组件,例如 react-fontawesome
。但是,如果您使用的是 Bulma,那么很可能您特别 不想这样做 ,而是想使用 class 名称。
所以首先安装包:
npm i @fortawesome/fontawesome-free
然后在您的 index.js / app.js / 您拥有的任何样式包装器组件中:
import '@fortawesome/fontawesome-free/css/all.min.css'
这是我面前的一个 Typescript 示例。这是一个包装器组件,它导入了我所有的全局样式供嵌套子组件使用:
import React from 'react';
import 'bulma/css/bulma.css';
import '@fortawesome/fontawesome-free/css/all.min.css';
import NavMenu from '../nav-menu';
import Footer from '../footer';
import './layout.css';
const Layout: React.FC<{ light: boolean }> = ({ light, children }) => {
return (
<div className="layout-wrapper">
<NavMenu light={light} />
{children}
<Footer light={light} />
</div>
);
};
export default Layout;
我正在使用 Gatsby 和 Bulma 构建一个网站。在我的 Nav.js
文件中,我为网站顶部的按钮创建了一个通用格式,我有几个使用 Bulma 的按钮,我想在其中添加图标。我关闭了使用 Font Awesome 图标添加 Bulma 按钮的文档:https://bulma.io/documentation/elements/button/。我的代码完全相同,除了我将按钮包裹在 <a>
标记中以 link 标记到我网站的其他页面之外。我在文档中列出了包含的 <script>
文件以提供 Font Awesome 图标,我的代码如下所示:
const Nav = () => {
return (
<div style={{ margin: `3rem auto`, maxWidth: 650, padding: `0 1rem` }}>
<nav>
<script defer src="https://use.fontawesome.com/releases/v5.3.1/js/all.js"></script>
<p class="buttons is-outlined is-centered">
<a href="/"><button class="button is-outlined"> <span class="icon">
<i class="fas fa-home"></i>
</span>
<span>Home</span>
</button></a>
<a href="/projects"><button class="button is-outlined">Projects</button></a>
<a href="/experience"><button class="button is-outlined">Experience</button></a>
</p>
</nav>
</div>
)
}
我不确定 script
是否位于文件的正确部分,我只是尝试为我的主页按钮放置一个图标,如下所示:
"Home" 左边的空隙是我猜应该是图标的地方。对于图标未显示或显示为空白的原因,我将不胜感激。谢谢!
在朋友的帮助下,解决问题的方法是将<script>
标签放在项目的public/index.html
文件中,然后精确复制并命名为index.html
并将其放入项目中的 static
文件夹中。这样,每次 Gatsby 服务器 运行 时,它都会在 public
存储库 中创建 index.html
文件的副本,并使用 字体 Awesome包含图标脚本 。
我 运行 亲自解决了这个问题,所以在这里发帖给任何正在寻找答案的人。有几种方法可以让它工作,包括使用图标作为库的组件,例如 react-fontawesome
。但是,如果您使用的是 Bulma,那么很可能您特别 不想这样做 ,而是想使用 class 名称。
所以首先安装包:
npm i @fortawesome/fontawesome-free
然后在您的 index.js / app.js / 您拥有的任何样式包装器组件中:
import '@fortawesome/fontawesome-free/css/all.min.css'
这是我面前的一个 Typescript 示例。这是一个包装器组件,它导入了我所有的全局样式供嵌套子组件使用:
import React from 'react';
import 'bulma/css/bulma.css';
import '@fortawesome/fontawesome-free/css/all.min.css';
import NavMenu from '../nav-menu';
import Footer from '../footer';
import './layout.css';
const Layout: React.FC<{ light: boolean }> = ({ light, children }) => {
return (
<div className="layout-wrapper">
<NavMenu light={light} />
{children}
<Footer light={light} />
</div>
);
};
export default Layout;