wake-up-neo.com

Wie kann ich ein 'Reload'-Symbol in HTML anzeigen, ohne ein Bild über HTTP zu laden?

Ich möchte in einer von mir erstellten HTML/JavaScript-App ein Aktualisierungssymbol anzeigen, aber ich möchte keine HTTP-Anforderungen zum Laden eines Bildes erstellen. Wie kann ich dies in allen gängigen Browsern zuverlässig tun?

Der nächste Unicode-Wert, den ich finden könnte, ist: ↺ (↺) Der Pfeil zeigt jedoch in die falsche Richtung.

Gibt es einen anderen Unicode-Wert, der funktioniert?

Gibt es eine Webdings-Schriftart, die funktioniert? (Normalerweise funktionieren sie nicht in Opera und Firefox.)

Gibt es eine Möglichkeit, ein Bild in JS mithilfe einer Base64-Bildquelle zu erstellen, die von einem String aus dem JavaScript bereitgestellt wird?

BEARBEITEN:

Der Grund dafür ist KEIN Overhead. Die zu erstellende App muss in einer einzigen Javascript-Datei enthalten sein, ohne andere Abhängigkeiten. Es ist ein Entwicklungsdienstprogramm, das zu jedem Projekt hinzugefügt werden kann, ohne dass ein Netzwerk erforderlich ist.

35
John Fowler

Wenn der Browser das Laden von Bilddaten aus einer Base64-Zeichenfolge unterstützt, können Sie img verwenden und deren src auf das folgende Format setzen:

data:[<mediatype>][;base64],<data>

zum Beispiel:

data:image/gif;base64,R0lGODl...

JSFiddle Demo

10
fardjad

Wenn Sie das Zeichen &#8635; (↻) finden, d. H. U + 21BB CLOCKWISE OPEN CIRCLE ARROW, das für Ihre Anforderungen akzeptabel ist (der Pfeil wird möglicherweise nicht auf die gleiche Weise wie in den üblichen Reload-Symbolen platziert), können Sie es sicher verwenden:

<style>
.reload { font-family: Lucida Sans Unicode }
</style>

<span class=reload>&#x21bb;</span>

Die Lucida Sans Unicode-Schrift enthält das Symbol und ist in praktisch jedem Windows-System verfügbar, das Sie heutzutage finden. Laut MS info war es sogar in Windows 98 (und Windows 95 plus) enthalten.

Bei anderen Systemen als Windows kann vernünftigerweise davon ausgegangen werden, dass das Symbol in der Schriftart some und Browser vorhanden sind, die wissen, wie sie von einigen von ihnen verwendet werden können. Und Schriftarten, die es enthalten haben ziemlich ähnliche Formen dafür. (Wenn das Symbol jedoch stilistisch mit dem Text Ihres Dokuments übereinstimmen muss, müssen Sie die Situation genauer untersuchen und sicherstellen, dass alle Zeichensätze in Ihrer Zeichensatzliste oder der "Schriftstapel" diesen enthalten.)

83

Unicode-Zeichen

Es gibt mindestens zwei Unicode-Zeichen, die als Symbole für Refresh oder Reload dienen können:

  • CLOCKWISE GAPPED CIRCLE PFEIL
    U + 27F3
  • CLOCKWISE OFFENER KREISPFEIL
    U + 21BB

Die erste Version erscheint weder in iOS 7 noch in Version 8 oder 9 in Safari oder Chrome. In Anbetracht dessen und gegeben der Antwort von Paul D. White , empfehle ich den zweiten, CLOCKWISE OPEN CIRCLE ARROW .

Tipp: Wenn Sie ein Mac-Benutzer sind, erhalten Sie die kostenlose App UnicodeChecker . Sie können anhand des Namens nach Zeichen suchen und eine Liste der Schriftarten (auf Ihrem Mac) mit einer Glyphe für dieses Zeichen anzeigen.

Symbolschriftart

Einige Schriftarten wurden mit skalierbaren vektorbasierten Symbolen anstelle von regulären Zeichen-Glyphen erstellt. 

39
Basil Bourque

Das im Uhrzeigersinn entsprechende Äquivalent zu Ihrem Unicode-Zeichen ist &#8635;, ↻ (obwohl als David C. Bishop in den Kommentaren angegeben, Chromebooks #27f2, ⟳ ).

Die Verwendung eines Textzeichens ist eine Option, aber in Windows XP wird das Zeichen möglicherweise nicht angezeigt (abhängig von dem verwendeten Zeichen und der Schriftart, in der Sie es anzeigen). @Jukka K. Korpela merkt an, dass dieses Zeichen in der Lucida Sans Unicode-Schrift enthalten ist, sodass es auch unter Windows XP problemlos funktionieren sollte.

Um Wingdings-Schriftarten zu vermeiden, müssen Sie zur Vermeidung einer HTTP-Anforderung sicher sein, dass die betreffende Schrift auf den Computern des Endbenutzers installiert wird. Ich glaube nicht, dass es eine gemeinsame plattformübergreifende Wingdings-Schriftart gibt (ich könnte jedoch völlig falsch sein).

Sie können tatsächlich ein Bild aus einer Zeichenfolge erstellen, die die Base64-kodierte Darstellung des Bildes mithilfe von JavaScript enthält. Das könnte man so machen:

var image = new Image();
image.src = 'data:image/gif;base64,' + BASE64_ENCODED_STRING; // Replace gif with whatever image format it actually is

Die Daten-URI funktioniert in Internet Explorer 8 und früheren Versionen möglicherweise nicht besonders gut, auf denen Windows XP - Benutzer möglicherweise hängen bleiben. (Und dazu benötigen Sie kein JavaScript: Sie können einfach ein <img>-Tag mit diesem src-Attribut in Ihre Seite einfügen.)

13
Paul D. Waite

Unicode 6-Zeichen

'UHRZEITWÄRME UND NACH OBEN AUFGEZOGENE PFEILEN' (U + 1F503) ????

Leider ist die Fontunterstützung für die Glyphe nicht die beste, daher könnten "alle gängigen Browser" eine Dehnung sein ...: - /

9
Leia

Sie erwähnen "alle gängigen Browser". Nehmen wir an, dass

  1. nicht jeder hat Javascript
  2. nicht jeder kann Schriftarten einbetten (Blackberry etc)
  3. nicht jeder unterstützt alle UNCODE-Darstellungen (Windows XP)
  4. nicht jeder unterstützt Inline-Datenuris (IE7-)

Was ist also noch übrig? Ich würde ein HTML1-konformes IMG-Element vorschlagen, das nach dem ersten Laden ebenfalls zwischengespeichert wird:

<img src="/refresh.gif" alt="refresh">

Es funktioniert in jedem einzelnen Browser, den ich kenne, außer LYNX und anderen reinen textbasierten Browsern. Sie zeigen jedoch stattdessen "Aktualisieren" an.

Wenn Sie die zusätzliche 2-Byte-Anforderung für "moderne" Browser wirklich vermeiden möchten, können Sie bedingte Kommentare für IE7 verwenden:

<!--[if lte IE 7]>
<img src="refresh.gif" alt="refresh">
<![endif]-->

Und so etwas für den Rest:

<img src="data:image/gif;base64,..." alt="refresh">

Wenn Sie sich auf dem neuesten Stand befinden, können Sie CSS-Box-Schatten ( demo ) verwenden:

.refresh{
    border-radius: 0;
    display: inline-block;
    width: 1px;
    height: 1px;
    box-shadow: 0px 0px rgba(0,0,0,0),0px 1px rgba(0,0,0,0),0px 2px rgba(0,0,0,0),0px 3px rgba(0,0,0,0),0px 4px rgba(0,0,0,0),0px 5px rgba(0,0,0,0),0px 6px rgba(0,0,0,0),0px 7px rgba(0,0,0,0),0px 8px rgba(0,0,0,0),0px 9px rgba(0,0,0,0),0px 10px rgba(0,0,0,0),0px 11px rgba(0,0,0,0),0px 12px rgba(0,0,0,0),0px 13px rgba(0,0,0,0),0px 14px rgba(0,0,0,0),0px 15px rgba(0,0,0,0),1px 0px rgba(0,0,0,0),1px 1px rgba(0,0,0,0),1px 2px rgba(0,0,0,0),1px 3px rgba(0,0,0,0),1px 4px rgba(0,0,0,0),1px 5px rgba(0,0,0,0),1px 6px rgba(0,0,0,0),1px 7px rgba(0,0,0,0),1px 8px rgba(0,0,0,0),1px 9px rgba(0,0,0,0),1px 10px rgba(0,0,0,0),1px 11px rgba(0,0,0,0),1px 12px rgba(0,0,0,0),1px 13px rgba(0,0,0,0),1px 14px rgba(0,0,0,0),1px 15px rgba(0,0,0,0),2px 0px rgba(0,0,0,0),2px 1px rgba(0,0,0,0),2px 2px rgba(0,0,0,0),2px 3px rgba(0,0,0,0),2px 4px rgba(0,0,0,0),2px 5px rgba(0,0,0,0.06),2px 6px rgba(0,0,0,0.55),2px 7px rgba(0,0,0,0.79),2px 8px rgba(0,0,0,0.86),2px 9px rgba(0,0,0,0.86),2px 10px rgba(0,0,0,0.65),2px 11px rgba(0,0,0,0.31),2px 12px rgba(0,0,0,0),2px 13px rgba(0,0,0,0),2px 14px rgba(0,0,0,0),2px 15px rgba(0,0,0,0),3px 0px rgba(0,0,0,0),3px 1px rgba(0,0,0,0),3px 2px rgba(0,0,0,0),3px 3px rgba(0,0,0,0),3px 4px rgba(0,0,0,0.25),3px 5px rgba(0,0,0,0.83),3px 6px rgba(0,0,0,0.86),3px 7px rgba(0,0,0,0.83),3px 8px rgba(0,0,0,0.69),3px 9px rgba(0,0,0,0.74),3px 10px rgba(0,0,0,0.86),3px 11px rgba(0,0,0,0.86),3px 12px rgba(0,0,0,0.6),3px 13px rgba(0,0,0,0.06),3px 14px rgba(0,0,0,0),3px 15px rgba(0,0,0,0),4px 0px rgba(0,0,0,0),4px 1px rgba(0,0,0,0),4px 2px rgba(0,0,0,0),4px 3px rgba(0,0,0,0.25),4px 4px rgba(0,0,0,0.83),4px 5px rgba(0,0,0,0.83),4px 6px rgba(0,0,0,0.43),4px 7px rgba(0,0,0,0),4px 8px rgba(0,0,0,0),4px 9px rgba(0,0,0,0),4px 10px rgba(0,0,0,0.13),4px 11px rgba(0,0,0,0.69),4px 12px rgba(0,0,0,0.86),4px 13px rgba(0,0,0,0.6),4px 14px rgba(0,0,0,0),4px 15px rgba(0,0,0,0),5px 0px rgba(0,0,0,0),5px 1px rgba(0,0,0,0),5px 2px rgba(0,0,0,0),5px 3px rgba(0,0,0,0.69),5px 4px rgba(0,0,0,0.86),5px 5px rgba(0,0,0,0.25),5px 6px rgba(0,0,0,0),5px 7px rgba(0,0,0,0),5px 8px rgba(0,0,0,0),5px 9px rgba(0,0,0,0),5px 10px rgba(0,0,0,0),5px 11px rgba(0,0,0,0),5px 12px rgba(0,0,0,0.69),5px 13px rgba(0,0,0,0.86),5px 14px rgba(0,0,0,0.25),5px 15px rgba(0,0,0,0),6px 0px rgba(0,0,0,0),6px 1px rgba(0,0,0,0),6px 2px rgba(0,0,0,0.13),6px 3px rgba(0,0,0,0.86),6px 4px rgba(0,0,0,0.6),6px 5px rgba(0,0,0,0),6px 6px rgba(0,0,0,0),6px 7px rgba(0,0,0,0),6px 8px rgba(0,0,0,0),6px 9px rgba(0,0,0,0),6px 10px rgba(0,0,0,0),6px 11px rgba(0,0,0,0),6px 12px rgba(0,0,0,0.13),6px 13px rgba(0,0,0,0.86),6px 14px rgba(0,0,0,0.65),6px 15px rgba(0,0,0,0),7px 0px rgba(0,0,0,0),7px 1px rgba(0,0,0,0),7px 2px rgba(0,0,0,0.43),7px 3px rgba(0,0,0,0.86),7px 4px rgba(0,0,0,0.31),7px 5px rgba(0,0,0,0),7px 6px rgba(0,0,0,0),7px 7px rgba(0,0,0,0),7px 8px rgba(0,0,0,0),7px 9px rgba(0,0,0,0),7px 10px rgba(0,0,0,0),7px 11px rgba(0,0,0,0),7px 12px rgba(0,0,0,0),7px 13px rgba(0,0,0,0.75),7px 14px rgba(0,0,0,0.83),7px 15px rgba(0,0,0,0),8px 0px rgba(0,0,0,0),8px 1px rgba(0,0,0,0.43),8px 2px rgba(0,0,0,0.69),8px 3px rgba(0,0,0,0.86),8px 4px rgba(0,0,0,0.6),8px 5px rgba(0,0,0,0.31),8px 6px rgba(0,0,0,0),8px 7px rgba(0,0,0,0),8px 8px rgba(0,0,0,0),8px 9px rgba(0,0,0,0),8px 10px rgba(0,0,0,0),8px 11px rgba(0,0,0,0),8px 12px rgba(0,0,0,0),8px 13px rgba(0,0,0,0.69),8px 14px rgba(0,0,0,0.86),8px 15px rgba(0,0,0,0),9px 0px rgba(0,0,0,0),9px 1px rgba(0,0,0,0.48),9px 2px rgba(0,0,0,0.86),9px 3px rgba(0,0,0,0.86),9px 4px rgba(0,0,0,0.86),9px 5px rgba(0,0,0,0.13),9px 6px rgba(0,0,0,0),9px 7px rgba(0,0,0,0),9px 8px rgba(0,0,0,0),9px 9px rgba(0,0,0,0),9px 10px rgba(0,0,0,0),9px 11px rgba(0,0,0,0),9px 12px rgba(0,0,0,0),9px 13px rgba(0,0,0,0.75),9px 14px rgba(0,0,0,0.83),9px 15px rgba(0,0,0,0),10px 0px rgba(0,0,0,0),10px 1px rgba(0,0,0,0),10px 2px rgba(0,0,0,0.79),10px 3px rgba(0,0,0,0.86),10px 4px rgba(0,0,0,0.6),10px 5px rgba(0,0,0,0),10px 6px rgba(0,0,0,0),10px 7px rgba(0,0,0,0),10px 8px rgba(0,0,0,0),10px 9px rgba(0,0,0,0),10px 10px rgba(0,0,0,0),10px 11px rgba(0,0,0,0),10px 12px rgba(0,0,0,0.13),10px 13px rgba(0,0,0,0.86),10px 14px rgba(0,0,0,0.65),10px 15px rgba(0,0,0,0),11px 0px rgba(0,0,0,0),11px 1px rgba(0,0,0,0),11px 2px rgba(0,0,0,0.38),11px 3px rgba(0,0,0,0.83),11px 4px rgba(0,0,0,0.06),11px 5px rgba(0,0,0,0),11px 6px rgba(0,0,0,0),11px 7px rgba(0,0,0,0),11px 8px rgba(0,0,0,0),11px 9px rgba(0,0,0,0),11px 10px rgba(0,0,0,0),11px 11px rgba(0,0,0,0),11px 12px rgba(0,0,0,0.69),11px 13px rgba(0,0,0,0.86),11px 14px rgba(0,0,0,0.25),11px 15px rgba(0,0,0,0),12px 0px rgba(0,0,0,0),12px 1px rgba(0,0,0,0),12px 2px rgba(0,0,0,0),12px 3px rgba(0,0,0,0.31),12px 4px rgba(0,0,0,0),12px 5px rgba(0,0,0,0),12px 6px rgba(0,0,0,0.25),12px 7px rgba(0,0,0,0),12px 8px rgba(0,0,0,0),12px 9px rgba(0,0,0,0),12px 10px rgba(0,0,0,0.13),12px 11px rgba(0,0,0,0.69),12px 12px rgba(0,0,0,0.86),12px 13px rgba(0,0,0,0.6),12px 14px rgba(0,0,0,0),12px 15px rgba(0,0,0,0),13px 0px rgba(0,0,0,0),13px 1px rgba(0,0,0,0),13px 2px rgba(0,0,0,0),13px 3px rgba(0,0,0,0),13px 4px rgba(0,0,0,0),13px 5px rgba(0,0,0,0.06),13px 6px rgba(0,0,0,0.83),13px 7px rgba(0,0,0,0.83),13px 8px rgba(0,0,0,0.69),13px 9px rgba(0,0,0,0.75),13px 10px rgba(0,0,0,0.86),13px 11px rgba(0,0,0,0.86),13px 12px rgba(0,0,0,0.6),13px 13px rgba(0,0,0,0.06),13px 14px rgba(0,0,0,0),13px 15px rgba(0,0,0,0),14px 0px rgba(0,0,0,0),14px 1px rgba(0,0,0,0),14px 2px rgba(0,0,0,0),14px 3px rgba(0,0,0,0),14px 4px rgba(0,0,0,0),14px 5px rgba(0,0,0,0.13),14px 6px rgba(0,0,0,0.55),14px 7px rgba(0,0,0,0.79),14px 8px rgba(0,0,0,0.86),14px 9px rgba(0,0,0,0.86),14px 10px rgba(0,0,0,0.65),14px 11px rgba(0,0,0,0.31),14px 12px rgba(0,0,0,0),14px 13px rgba(0,0,0,0),14px 14px rgba(0,0,0,0),14px 15px rgba(0,0,0,0),15px 0px rgba(0,0,0,0),15px 1px rgba(0,0,0,0),15px 2px rgba(0,0,0,0),15px 3px rgba(0,0,0,0),15px 4px rgba(0,0,0,0),15px 5px rgba(0,0,0,0),15px 6px rgba(0,0,0,0),15px 7px rgba(0,0,0,0),15px 8px rgba(0,0,0,0),15px 9px rgba(0,0,0,0),15px 10px rgba(0,0,0,0),15px 11px rgba(0,0,0,0),15px 12px rgba(0,0,0,0),15px 13px rgba(0,0,0,0),15px 14px rgba(0,0,0,0),15px 15px rgba(0,0,0,0);
}
2
David Hellsing

.refresh {
  display: inline-block;
  transform: rotate(90deg);
}
<span>↻</span>
<hr>
<span class="refresh">↻</span>

0
Alex