2014-06-07 6 views
24

Font Awesome ha una buona raccolta di icone da utilizzare nei progetti web. Voglio usare una di quelle icone come cursore (cursore personalizzato).Imposta carattere Icone fantastiche come cursore - è possibile?

A mio parere, i cursori personalizzati richiedono un URL immagine, ma non riesco a trovare gli URL immagine per le icone Font Awesome.

+0

non credo che è possibile specificare il testo/font per il cursore. Potrebbe essere necessario creare un'immagine con l'icona che desideri da Font Awesome e quindi usarla per il cursore con 'cursor: url (...)' –

+0

Penso di poterlo fare, prima creare una tela, quindi disegnare l'icona fa su di esso, quindi cambiarlo in un'immagine base 64, quindi fare riferimento a esso. Sto cercando di programmarlo, aspettami! –

+0

Sarebbe bello vedere un po 'del codice esistente. –

risposta

39

Trovato!

  1. Creare una tela
  2. Disegnare l'icona fa su di esso
  3. trasformarla in una base-64 immagine url
  4. Applicare l'immagine sullo stile css del cursore

E ho fatto una dimostrazione: http://jsfiddle.net/rqq8B/2/

// http://stackoverflow.com/questions/13761472/how-to-render-glyphs-from-fontawesome-on-a-canvas-element 
// http://stackoverflow.com/questions/13932291/css-cursor-using-data-uri 

$(function() { 
    var canvas = document.createElement("canvas"); 
    canvas.width = 24; 
    canvas.height = 24; 
    //document.body.appendChild(canvas); 
    var ctx = canvas.getContext("2d"); 
    ctx.fillStyle = "#000000"; 
    ctx.font = "24px FontAwesome"; 
    ctx.textAlign = "center"; 
    ctx.textBaseline = "middle"; 
    ctx.fillText("\uf002", 12, 12); 
    var dataURL = canvas.toDataURL('image/png') 
    $('body').css('cursor', 'url('+dataURL+'), auto'); 
}); 
+0

Nel JSfiddle, vedo il frame/segnaposto personalizzato, ma non un elemento reale. Come stai caricando gli elementi fontawesome? Lo sto facendo bene? Devo aggiungere il collegamento CDN per la libreria fontawesome? – zipzit

+0

"\ uf002" in FontAwesome rappresenta un segnaposto come il carattere, cambia quello - diciamo "\ uf001" - dovresti vedere un cursore diverso. –

+0

Capisco. Ora vedo font-awesome.css nelle risorse esterne sul margine sinistro. Quello che non vedo sono i risultati nel JSFiddle. Vedo una casella vuota per un cursore .. Ooops. Aggiornare. Funziona bene sul browser Chrome, non solo su Firefox (win7). Ugh. Odio quando le cose funzionano bene in un browser, ma non in un altro. – zipzit

6

Alla fine, non potevo 'T ottenere @ codice di fish_ball funzionare in modo affidabile, quindi ho solo downloaded the images, utilizzato gimp ritagliare e modificarli a 32 × 32px, e li usavano come questo:

.myClass { cursor: url('/static/img/pencil30_32x32.png') 1 30, crosshair } 

La parte 1 30 imposta il puntatore del mouse 'hotspot' 1px da sinistra e 30px dalla parte superiore dell'immagine.

+1

A chi ha downvoted la mia risposta: sarebbe utile se si seguissero le istruzioni e lasciato un commento che dicesse il perché: se avessi una risposta migliore, sarebbe di aiuto a tutti se la postassi. @ il codice fish_ball funziona solo con alcuni browser, anche se con il tag . –

9

C'è jQuery Awesome Cursor, in cui è possibile aggiungere le icone dei font-impressionante per il cursore chiamando un solo codice semplice:

$('body').awesomeCursor('pencil'); 

o passarla alcune opzioni:

$('body').awesomeCursor('pencil', { 
    /* your options here */ 
    size: 22, 
    color: 'orange', 
    flip: 'horizontal' 
}); 

Disclaimer: Io sono NON l'autore di questa libreria l'ho appena trovato.

+1

Aggiungo che questa libreria funziona anche con altri font di icone (es. icomoon) – plong0

+1

Ho trascorso circa un giorno di Ricerca e sviluppo che provano le soluzioni che dovrebbero forzare il pre-caricamento del font e nulla ha funzionato tranne la [libreria jquery-awesome-cursor] (https://jwarby.github.io/jquery-awesome-cursor/) – plong0

3

Il metodo canvas menzionato risulta in cursori sfocati.

Utilizzando SVG offre risultati migliori:

  • Scarica lo SVG per l'icona che si desidera utilizzare da Encharm's Font-Awesome-SVG-PNG.
  • Modificare lo SVG usando un editor di testo e specificare la larghezza e l'altezza si desidera utilizzare
    • ad esempio: 24 x 24.
    • Tenete a mente di solito c'è una dimensione massima nel browser (128 x . 128 in Firefox)
  • Dichiarare il cursore in CSS, ad esempio: cursor: url('/assets/img/volume-up.svg'), pointer;
+0

I volevo sottolineare che è necessario il passaggio di ridimensionamento! – bakerhumadi

+0

SVG è meglio della tela per una serie di motivi. SVG è più deterministico, mentre la tela devi chiedere, "è stato disegnato?", "Se l'ho ridimensionato, è stato ridisegnato?" – Funkodebat