128 votes

Utilisez l'icône Font Awesome dans l'attribut Placeholder

Est-il possible d'utiliser une icône Font Awesome dans un Placeholder ? J'ai lu que le HTML n'est pas autorisé dans un Placeholder. Y a-t-il une solution de contournement ?

placeholder=""

266voto

Elli Points 2661

Si vous utilisez FontAwesome 4.7 cela devrait suffire :

Une liste de codes hexadécimaux peut être trouvée dans le cheatsheet de Font Awesome. Cependant, dans la dernière version 5.0 de FontAwesome, cette méthode ne fonctionne pas (même si vous utilisez l'approche CSS combinée avec la mise à jour de font-family).

69voto

Jason Sperske Points 12389

Vous ne pouvez pas ajouter une icône et du texte car vous ne pouvez pas appliquer une police différente à une partie d'un espace réservé, cependant, si vous êtes satisfait simplement d'une icône alors cela peut fonctionner. Les icônes FontAwesome ne sont que des caractères avec une police personnalisée (vous pouvez consulter la Feuille de triche FontAwesome pour le caractère Unicode échappé dans la règle content. Dans le code source moins, il se trouve dans variables.less. Le défi serait de changer de police lorsque l'entrée n'est pas vide. Combinez-le avec jQuery comme dans ceci.

Avec ce CSS :

input.empty {
    font-family: FontAwesome;
    font-style: normal;
    font-weight: normal;
    text-decoration: inherit;
}

Et ce (simple) jQuery

$('#iconified').on('keyup', function() {
    var input = $(this);
    if(input.val().length === 0) {
        input.addClass('empty');
    } else {
        input.removeClass('empty');
    }
});

La transition entre les polices ne sera pas fluide, cependant.

24voto

huckbit Points 496

J'ai résolu avec cette méthode:

En CSS, j'ai utilisé ce code pour la classe fontAwesome:

.fontAwesome {
  font-family: 'Helvetica', FontAwesome, sans-serif;
}

En HTML, j'ai ajouté la classe fontawesome et le code d'icône fontawesome à l'intérieur du placeholder:

Vous pouvez voir dans CodePen.

19voto

Richard Points 8614

La réponse de @Elli peut fonctionner avec FontAwesome 5, mais cela nécessite d'utiliser le bon nom de police et d'utiliser le CSS spécifique pour la version souhaitée. Par exemple, en utilisant FA5 Free, je n'ai pas pu le faire fonctionner si j'incluais le all.css, mais cela fonctionnait bien si j'incluais le solid.css :

Pour FA5 Pro, le nom de la police est 'Font Awesome 5 Pro'

11voto

Jon Fabritius Points 102

Lorsque pris en charge, vous pouvez utiliser le pseudo-sélecteur ::input-placeholder combiné avec ::before.

Consultez un exemple sur :

http://codepen.io/JonFabritius/pen/nHeJg

Je travaillais sur cela et je suis tombé sur cet article, à partir duquel j'ai modifié ces éléments :

http://davidwalsh.name/html5-placeholder-css

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X