如何将 Font Awesome 添加到 Blazor 客户端(Razor 组件)应用程序?

Posted

技术标签:

【中文标题】如何将 Font Awesome 添加到 Blazor 客户端(Razor 组件)应用程序?【英文标题】:How to add Font Awesome to Blazor client (Razor component) app? 【发布时间】:2020-03-30 12:37:06 【问题描述】:

我在 .NET Core 3.1 中创建了一个 Blazor WebAssembly 托管模板。然后右键单击 project.Client/wwwroot/css 文件夹并单击 Add client side library。然后选择 Font Awesome 库并安装它。我将以下行添加到 index.html <head>.

 <link href="css/font-awesome/css/fontawesome.css" rel="stylesheet"/>

我有 libman.json 的:


  "version": "1.0",
  "defaultProvider": "cdnjs",
  "libraries": [
    
      "library": "font-awesome@5.11.2",
      "destination": "wwwroot/css/font-awesome/"
    
  ]

我只在默认的 Blazor 模板页面 Counter.razor(Razor 组件)中添加了以下行。 IntelliSense 找到字体:

@page "/counter"

<h1>Counter</h1>

<span class="fa fa-save"></span>

@code 

但我只看到一个正方形:

【问题讨论】:

我已将这个从 w3schools 复制的脚本元素添加到 _Host.cshtml 文件 &lt;script src="https://kit.fontawesome.com/a076d05399.js"&gt;&lt;/script&gt; 中,它可以工作。我对这些玩具不熟悉,但我想您需要获得类似 a076d05399 的代码才能启用它。我在这里使用 w3schools 示例中的代码。我不清楚使用 wwwroot 中的文件时应该如何完成。 @Isaac 我将您的代码添加到 index.html 文件中并且可以正常工作。但正如你所说,它没有使用 wwwroot 内容。这个脚本向我指出了这种使用 fontawesome blog.fontawesome.com/introducing-font-awesome-kits 的有趣方式 【参考方案1】:

您还需要包含 javascript

<link rel="stylesheet" href="css/font-awesome/css/fontawesome.min.css" />
<script src="css/font-awesome/js/all.min.js"></script>

您可以将&lt;script&gt; 标签放在文件底部的另一个标签下方,但我怀疑您会注意到任何速度差异。

来自现已删除的评论:

JS 只是一个选项(首选选项),但 CSS only 仍然是一个选项。另外,您不要同时使用两者。要么是 CSS 要么是 JS

在 Blazor 中,我只能让 JS 版本工作。只有 CSS 不起作用(文件是 200-OK)。

【讨论】:

~/ 是由智能感知添加的。它当然不需要,但我认为它也不疼。 它不适用于 ~/ 对我来说。 VS2019 16.4 Net Core 3.1,模板来自运行命令 dotnet new -i Microsoft.AspNetCore.Blazor.Templates::3.1.0-preview4.19579.2 我错过了客户端标签。 ~/ 在服务器端工作,但最好将它们排除在外。 Intellisense 也应该更新。 高亮显示的文字是正确的。我删除了 css 行,只留下脚本并以光速工作。 我正在使用 Blazor,它仅在 js 文件存在时才有效。【参考方案2】:

fa 前缀在版本 5 中已弃用。新的默认值是 fas 实体样式和品牌的 fab 样式。 ref

添加到 _hosts.cshtml(用于服务器端)

  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.1/css/all.min.css">

使用fas如下:

@page "/counter"

<h1>Counter</h1>

<span class="fas fa-save"></span>  <!--fas not fa-->

@code 

这是在 blazor Net5 中测试的

【讨论】:

【参考方案3】:

您可以使用 libman(或从 Fontawesome 网站上提供的 zip 手动复制文件)。然后仅将 all.min.css 和 webfonts 文件夹的全部内容安装/复制到 wwwroot/css/font-awesome 子文件夹中。像这样:

然后将其放入 Pages/_Host.cshtml(对于 Blazor Server)或 wwwroot/index.html(Blazor Web Assembly)到 head 部分:

<link rel="stylesheet" href="css/font-awesome/css/all.min.css" />

或者,作为替代方案,在 site.css 的开头添加:

@import url('font-awesome/css/all.min.css');

不需要 JS。它有效。

【讨论】:

我发现这是最干净的解决方案。在我的 Blazor Web Assembly 应用程序中工作就像一个魅力。 我有一个引用 FA 的简单按钮,例如 &lt;button class="fas fa-angle-double-up"&gt;Up&lt;/button&gt;,我只是得到一个脉动的小问号。出于某种原因,Blazor 决定它找不到任何东西。我有上面的确切链接。【参考方案4】:

您必须在 HTML 页面中实际引用样式表。这通常在布局中完成 (_Layout.csthml)。您需要在 &lt;head&gt; 中添加类似以下内容:

<link rel="stylesheet" href="/css/font-awesome/font-awesome.min.css" />

【讨论】:

我在 blazor 客户端应用程序项目文件夹中找不到 _Layout.cshtml。我找到的最接近的是 MainLayout.razor。我在 中添加了它,没有,都没有工作。 在 Blazor 中,您有 _Host.cshtml。不要在 _MainLayout 中放置 &lt;head&gt;。 _Layout用于MVC项目。 我正在使用托管的 Blazor 客户端应用程序 (wasm)。我找不到 _Host.cshtml。 wasm 是 wwwroot 上的 index.html 如果看到方括号,请将 font-awesome.min.css 切换为 all.min.css

以上是关于如何将 Font Awesome 添加到 Blazor 客户端(Razor 组件)应用程序?的主要内容,如果未能解决你的问题,请参考以下文章

尝试将 Font-Awesome 图标添加到我的导航栏中的选项卡

如何在 SwiftUI 中使用 Font Awesome 作为自定义字体?

将 Solid and Light Font Awesome Pro 添加到 React 站点

可以将自定义图标添加到 font-awesome-react

为网站文字前面添加图标 在线调用 Font Awesome 字体图标 美化网站

将 Font Awesome 集成到 Kendo UI CSS 中