2015-06-27 12 views
10

Demo a JsfiddleIn CSS/JavaScript, come viene implementato questo plugin per icone/font?

http://jsfiddle.net/hc046u9u/

<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> 
 
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.97.0/css/materialize.min.css"> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.97.0/js/materialize.min.js"></script> 
 

 
<i class="material-icons">add</i> 
 
<i class="material-icons">replay</i>

Quello che mi ha confuso di più è le icone non sono implementati da attributo class (come <i class="icon-add"></i> o <i class="icon-reply"></i>), ma dal testo interno del nodo <i>.

Quando visualizzo il nodo <i> nello strumento di sviluppo di chrome, sembrano quasi uguali e sembrano indistinguibili per il selettore CSS.

Enter image description here

Se l'icona è impostata dal testo interno, come potrebbe CSS Asign icone differenti per questi <i> nodi?

Un'altra cosa che non riesco a capire è come sono implementate queste icone (carattere dell'icona, PNG o SVG). Sembra che esse siano attuate dai icon font, ma non riesco a trovare alcuna dichiarazione CSS come:

.fa-flag:before { 
    content: "\f024"; 
} 

Se le icone non è implementata dall'attributo :before di selezione e content, come vengono implementate?

+0

Si tratta di un file di font importato? – adeneo

+0

I file woff provengono da [qui] (https://fonts.googleapis.com/icon?family=Material+Icons) – adeneo

+0

@hanfeisun Le icone sono implementate per classe. È successo che le icone provenivano dalla famiglia di caratteri "Icone materiali". –

risposta

22

È un "trucco" in cui le icone sono implementate come glifi composti nel carattere. Significa che le combinazioni di lettere "aggiungi" e "replay" vengono visualizzate come un carattere nel carattere, in modo simile a come "fi" e "fl" sono spesso rappresentati come un carattere in molti tipi di carattere. (Per ulteriori informazioni, vedere this Wikipedia article.) Le icone pertanto non provengono da dichiarazioni CSS.

È possibile vedere come funziona se si applica il carattere a un campo di input: se si inizia a digitare casualmente, non si vede nulla perché ai singoli personaggi non è stato assegnato un glifo, ma se si digita " aggiungi "vedrai apparire un simbolo +.

<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet"> 
 

 
<textarea class="material-icons">add remove replay</textarea>

+7

Il termine è [legatura] (https://en.wikipedia.org/wiki/Typographic_ligature). * (Ero troppo lento di 23 secondi. :-)) * (Modifica: Oh, scusami, non avevo capito che avresti collegato esattamente quell'articolo!) –

+1

@ hanfeisun: Sembra che tu sia abituato a caratteri dell'icona come Font Awesome che lo fa con ':: before', ma non c'è motivo per cui non si possa fare con legature diverse dal fatto che il contenuto dell'elemento è * content *, e quindi è importante che il testo sia appropriato a dove è usato.Con Font Awesome e simili, puoi usare 'fa-close' per qualsiasi scopo tu desideri (non solo" chiudere "qualcosa) senza che diventi parte del * contenuto * della pagina. Ma se controlli il generatore di font, puoi creare un font di legatura sintonizzato sulla tua app, e ottieni l'icona * e * il testo indicizzabile/leggibile dallo schermo tutti insieme. –

+0

Raccomando anche a chiunque di leggere [numero 371 @ alistapart] (http://alistapart.com/article/the-era-of-symbol-fonts) sui caratteri simbolo che copre anche le legature. –

Problemi correlati