Ich entwickle eine Webseite und gefunden FontAwesome als eine ziemlich nette Möglichkeit, schöne Symbole zu Dingen hinzuzufügen, jedoch standardmäßig Schriftart Downloads werden von der NoScript plugin für Firefox blockiert. Dies ist kein Problem für normale Fonts, aber FontAwesome verwendet Unicode-Zeichen, die bewusst außerhalb des üblichen druckbaren Bereichs der meisten Fonts liegen. Daher wird das Hinzufügen eines Font-Stacks zum CSS (EG: font-family: FontAwesome, sans-serif;
) nicht so funktionieren Symbole werden nur als Hex-Quadrate dargestellt.Fallback von FontAwesome, wenn Font-Download gesperrt
Ich realisiere, dass ich NoScript optimieren kann, um Schriftdownloads zu erlauben, aber das ist nicht die ideale Lösung für alle Benutzer - ich würde die Seite lieber degradieren.
Natürlich wäre es einfach, dies zu tun mit Javascript/jQuery, aber natürlich, wenn es NoScript welche die blockierende tun, die keine Hilfe entweder ist, und es den Test nicht besteht, wenn der Benutzer nicht über Javascript aktiviert .
Was wäre ideal wäre, hätte einige CSS-Stil/Regel, die als Fallback für alle FontAwesome-Objekte fungiert, ersetzt sie durch einige grundlegende Zeichen oder auch nur nichts angezeigt.
Für diejenigen, die nicht mit FontAwesome/TL; DR:
Alle FontAwesome Symbole haben die CSS-Klasse "fa":
.fa {
display: inline-block;
font-family: FontAwesome;
font-style: normal;
font-weight: normal;
line-height: 1;
}
FontAwesome lädt die benutzerdefinierte Schriftart wie folgt aus (I entfernt
@font-face {
font-family: "FontAwesome";
font-style: normal;
font-weight: normal;
src: url("../fonts/fontawesome-webfont.eot?#iefix&v=4.0.3") format("embedded-opentype"), url("../fonts/fontawesome-webfont.woff?v=4.0.3") format("woff"), url("../fonts/fontawesome-webfont.ttf?v=4.0.3") format("truetype"), url("../fonts/fontawesome-webfont.svg?v=4.0.3#fontawesomeregular") format("svg");
}
Und dann wird ein bestimmtes FontAwesome-Symbol eine eigene spezifische Klasse haben, die das entsprechende Unicode-Zeichen einfügt, zum Beispiel:
.fa-star:before {
content: "";
}
Der HTML-Code für das Symbol wird wie folgt aussehen:
<i class="fa fa-star"></i>
So ist das Problem hier: wir eine Möglichkeit brauchen, vorzugsweise in CSS, zu ersetzen, entfernen oder den Inhalt verstecken von Elementen mit der CSS-Klasse "fa", wenn die Schriftart "FontAwesome" NICHT geladen ist.
Ich glaube nicht, es möglich ist, in CSS –
Sie können die Standard-font- Familie: sans-serif, FontAwesome; Wenn css geladen wird und Sie JS verwenden, können Sie es in font-family konvertieren: FontAwesome, sans-serif; Wenn JS blockiert ist, funktioniert die Standardschriftart. – Faraz
@Faraz Wie funktioniert der Standard "Sans-Serif"? FontAwesome verwendet spezielle Unicode-Zeichen ... – BenM