css FF、Chrome和Safari中会显示一些FA图标,但没有浏览器会全部显示

h79rfbju  于 2023-04-13  发布在  其他
关注(0)|答案(2)|浏览(201)

我使用的是Pixelarity(https://pixelarity.com/ethereal)的模板,他们在那里实现了font awesome v4。因为我也想使用“brands”,所以我需要连接v5。
在尝试将FA v5 CSS与模板的CSS相结合后,它不知何故崩溃了(我不是CSS-Pro)。
特别是,有一个由六个圆圈组成的网格,每个圆圈都包含一个图标。Firefox显示其中的五个,Chrome显示其中的三个,Safari只显示一个图标。该网站上还有几个较小的图标(社交媒体),只有Firefox能够正确显示它们。
我真的没有办法了,我希望你们中的一些人能帮助我。
恕我直言,现在提供我所有的代码是没有帮助的,因为它也可以通过浏览器中的开发工具看到,对吗?如果有人需要我的 *.css或 *.html中的特定行,请告诉我
先谢谢你了。
祝你在德国一切顺利,马塞尔
编辑:
我按照建议做了。尝试排除故障并重现错误可能是使用我的本地apache(mac上的Mamp)。恐怕我仍然没有任何解释,但至少我发现了浏览器行为的一种模式。
我的fontawesome.css包含以下行,它可以正常工作

  • 像一个魅力在火狐.所有图标显示正确
  • 部分在safari中。仅显示Font Awesome 5 Brands以外的图标
  • 部分在chrome中。仅显示Font Awesome 5 BrandsFont Awesome 5 Free (solid)之外的图标
.sr-only {
  border: 0;
  clip: rect(0, 0, 0, 0);
  height: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute;
  width: 1px; }

.sr-only-focusable:active, .sr-only-focusable:focus {
  clip: auto;
  height: auto;
  margin: 0;
  overflow: visible;
  position: static;
  width: auto; }
@font-face {
  font-family: 'Font Awesome 5 Brands';
  font-style: normal;
  font-weight: normal;
  src: url("../fonts/fa-brands-400.eot");
  src: url("../fonts/fa-brands-400.eot?#iefix") format("embedded-opentype"), url("../fonts/fa-brands-400.woff2") format("woff2"), url("../fonts/fa-brands-400.woff") format("woff"), url("../fonts/fa-brands-400.ttf") format("truetype"), url("../fonts/fa-brands-400.svg#fontawesome") format("svg"); }

.fab {
  font-family: 'Font Awesome 5 Brands';
  font-weight: 400;  
@font-face 
  font-family: 'Font Awesome 5 Brands';
  font-style: normal;
  font-weight: 400;
  src: url("../fonts/fa-brands-400.eot");
  src: url("../fonts/fa-brands-400.eot?#iefix") format("embedded-opentype"), url("../fonts/fa-brands-400.woff2") format("woff2"), url("../fonts/fa-brands-400.woff") format("woff"), url("../fonts/fa-brands-400.ttf") format("truetype"), url("../fonts/fa-brands-400.svg#fontawesome") format("svg"); }

.far {
  font-family: 'Font Awesome 5 Free';
  font-weight: 400; 
@font-face 
  font-family: 'Font Awesome 5 Free';
  font-style: normal;
  font-weight: 400;
  src: url("../fonts/fa-regular-400.eot");
  src: url("../fonts/fa-regular-400.eot?#iefix") format("embedded-opentype"), url("../fonts/fa-regular-400.woff2") format("woff2"), url("../fonts/fa-regular-400.woff") format("woff"), url("../fonts/fa-regular-400.ttf") format("truetype"), url("../fonts/fa-regular-400.svg#fontawesome") format("svg"); }

.fas {
  font-family: 'Font Awesome 5 Free';
  font-weight: 900; 
@font-face 
  font-family: 'Font Awesome 5 Free';
  font-style: normal;
  font-weight: 900;
  src: url("../fonts/fa-regular");
  src: url("../fonts/fa-solid-900.eot?#iefix") format("embedded-opentype"), url("../fonts/fa-solid-900.woff2") format("woff2"), url("../fonts/fa-solid-900.woff") format("woff"), url("../fonts/fa-solid-900.ttf") format("truetype"), url("../fonts/fa-solid-900.svg#fontawesome") format("svg"); }

如果我现在删除.fas.far.fab,那么代码如下所示,它可以工作

  • 部分在firefox中。只显示Font Awesome 5 BrandsFont Awesome 5 Free (solid)之外的图标。
  • 就像Safari中的魅力。所有图标都正确显示。
  • 部分在chrome中。仅显示Font Awesome 5 BrandsFont Awesome 5 Free (solid)之外的图标。
.sr-only {
  border: 0;
  clip: rect(0, 0, 0, 0);
  height: 1px;
  margin: -1px;
  overflow: hidden;
  padding: 0;
  position: absolute;
  width: 1px; }

.sr-only-focusable:active, .sr-only-focusable:focus {
  clip: auto;
  height: auto;
  margin: 0;
  overflow: visible;
  position: static;
  width: auto; }
@font-face {
  font-family: 'Font Awesome 5 Brands';
  font-style: normal;
  font-weight: normal;
  src: url("../fonts/fa-brands-400.eot");
  src: url("../fonts/fa-brands-400.eot?#iefix") format("embedded-opentype"), url("../fonts/fa-brands-400.woff2") format("woff2"), url("../fonts/fa-brands-400.woff") format("woff"), url("../fonts/fa-brands-400.ttf") format("truetype"), url("../fonts/fa-brands-400.svg#fontawesome") format("svg"); }

@font-face {
  font-family: 'Font Awesome 5 Free';
  font-style: normal;
  font-weight: 400;
  src: url("../fonts/fa-regular-400.eot");
  src: url("../fonts/fa-regular-400.eot?#iefix") format("embedded-opentype"), url("../fonts/fa-regular-400.woff2") format("woff2"), url("../fonts/fa-regular-400.woff") format("woff"), url("../fonts/fa-regular-400.ttf") format("truetype"), url("../fonts/fa-regular-400.svg#fontawesome") format("svg"); }

@font-face {
  font-family: 'Font Awesome 5 Free';
  font-style: normal;
  font-weight: 900;
  src: url("../fonts/fa-regular");
  src: url("../fonts/fa-solid-900.eot?#iefix") format("embedded-opentype"), url("../fonts/fa-solid-900.woff2") format("woff2"), url("../fonts/fa-solid-900.woff") format("woff"), url("../fonts/fa-solid-900.ttf") format("truetype"), url("../fonts/fa-solid-900.svg#fontawesome") format("svg"); }

我按照www.example.com的说明fontawesome.com将整个字体包含到页面的 *.css中,并三次检查字体的路径。
在这里添加一个括号,chrome可以工作,在那里删除一个括号,safari可以工作……我完全被卡住了,不知道该怎么办,因为我不知道为什么三个不同的浏览器的行为方式如此不同。

qyswt5oh

qyswt5oh1#

我怀疑有人会像我一样愚蠢,但尽管如此,我还是让你知道我的代码中的错误。
Font Awesome由三种免费使用的字体组成。

  • FA品牌
  • FA常规
  • FA固体

在 *.css中,它们用@font-face调用,在内部,它们用font-family: <Font Name>分隔。
如果你看我之前的代码,每一种字体(品牌,regular and solid)是用单独的@font-face-参数单独调用的。这就是神奇的地方!由于FA RegularFA Solid都是Font Awesome 5 Free家族的一部分,如果有两种不同的字体声明为同一家族,那么几个浏览器似乎很难找到正确的字体。FA Brands正确显示的原因是其家族名为Font Awesome 5 Brands
长话短说,出了

@font-face {
  font-family: 'Font Awesome 5 Brands';
  font-style: normal;
  font-weight: normal;
  src: url("../fonts/fa-brands-400.eot");
  src: url("../fonts/fa-brands-400.eot?#iefix") format("embedded-opentype"), url("../fonts/fa-brands-400.woff2") format("woff2"), url("../fonts/fa-brands-400.woff") format("woff"), url("../fonts/fa-brands-400.ttf") format("truetype"), url("../fonts/fa-brands-400.svg#fontawesome") format("svg"); }

@font-face {
  font-family: 'Font Awesome 5 Free';
  font-style: normal;
  font-weight: 400;
  src: url("../fonts/fa-regular-400.eot");
  src: url("../fonts/fa-regular-400.eot?#iefix") format("embedded-opentype"), url("../fonts/fa-regular-400.woff2") format("woff2"), url("../fonts/fa-regular-400.woff") format("woff"), url("../fonts/fa-regular-400.ttf") format("truetype"), url("../fonts/fa-regular-400.svg#fontawesome") format("svg"); }

@font-face {
  font-family: 'Font Awesome 5 Free';
  font-style: normal;
  font-weight: 900;
  src: url("../fonts/fa-regular");
  src: url("../fonts/fa-solid-900.eot?#iefix") format("embedded-opentype"), url("../fonts/fa-solid-900.woff2") format("woff2"), url("../fonts/fa-solid-900.woff") format("woff"), url("../fonts/fa-solid-900.ttf") format("truetype"), url("../fonts/fa-solid-900.svg#fontawesome") format("svg"); }

我做了

@font-face {
  font-family: 'Font Awesome 5 Brands';
  font-style: normal;
  font-weight: normal;
  src: url("../fonts/fa-brands-400.eot");
  src: url("../fonts/fa-brands-400.eot?#iefix") format("embedded-opentype"), url("../fonts/fa-brands-400.woff2") format("woff2"), url("../fonts/fa-brands-400.woff") format("woff"), url("../fonts/fa-brands-400.ttf") format("truetype"), url("../fonts/fa-brands-400.svg#fontawesome") format("svg"); }

@font-face {
  font-family: 'Font Awesome 5 Free';
  font-style: normal;
  font-weight: 400, 900;
  src: url("../fonts/fa-regular-400.eot");
  src: url("../fonts/fa-regular-400.eot?#iefix") format("embedded-opentype"), url("../fonts/fa-regular-400.woff2") format("woff2"), url("../fonts/fa-regular-400.woff") format("woff"), url("../fonts/fa-regular-400.ttf") format("truetype"), url("../fonts/fa-regular-400.svg#fontawesome") format("svg");

  src: url("../fonts/fa-solid-900.eot");
  src: url("../fonts/fa-solid-900.eot?#iefix") format("embedded-opentype"), url("../fonts/fa-solid-900.woff2") format("woff2"), url("../fonts/fa-solid-900.woff") format("woff"), url("../fonts/fa-solid-900.ttf") format("truetype"), url("../fonts/fa-solid-900.svg#fontawesome") format("svg"); }

现在它对所有浏览器都很有吸引力。
谢谢你的建议和帮助!
祝你愉快,马塞尔

iqih9akk

iqih9akk2#

既然我们在这里讨论我们的错误,我想与像我这样的新手分享我的问题解决方案。
首先,我在他们的网站上创建了一个免费工具包后,使用CDN链接添加了FA:

<script src="https://kit.fontawesome.com/xxxxxx.js" crossorigin="anonymous"></script>

因为我使用的是免费版本,不是所有的图标都能在我的浏览器中显示。正如我后来发现的,你只能使用免费版本中提供的特定图标样式。即,如果

<i class="fa-solid fa-circle-chevron-left"></i>

是以固体风格提供的,我应该这样使用它,不能改变它,让我们说,“fa-light”。
在我的代码中,我混淆了**“far”(代表常规)和“fas”**(固体),不知道它们之间的区别是什么。
长话短说,下面的代码在Safari中显示图标,而不是在Chrome中:

<i class="far fa-circle-chevron-left"></i>

修复样式后,图标开始在两个浏览器中正确显示:

<i class="fas fa-circle-chevron-left"></i>

相关问题