J'essaie d'insérer une icône d'utilisateur dans le champ de saisie du nom d'utilisateur.
J'ai essayé l'une des solutions de la question similar Sachant que la propriété background-image
ne fonctionnera pas, car Font Awesome est une police.
Ce qui suit est mon approche et je ne parviens pas à afficher l’icône.
.wrapper input[type="text"] {
position: relative;
}
.wrapper input[type="text"]:before {
font-family: 'FontAwesome';
position: absolute;
top: 0px;
left: -5px;
content: "\f007";
}
J'ai la police de caractères déclarée dans la police par défaut awesome css, donc je ne savais pas si l'ajout de font-family ci-dessus était la bonne approche.
@font-face {
font-family: 'FontAwesome';
src: url('../Font/fontawesome-webfont.eot?v=3.2.1');
src: url('../Font/fontawesome-webfont.eot?#iefix&v=3.2.1') format('embedded-opentype'), url('../Font/fontawesome-webfont.woff?v=3.2.1') format('woff'), url('../Font/fontawesome-webfont.ttf?v=3.2.1') format('truetype'), url('../Font/fontawesome-webfont.svg#fontawesomeregular?v=3.2.1') format('svg');
}
Tu as raison. : before et: after pseudo contenu n'est pas destiné à fonctionner sur du contenu remplacé tel que les éléments img
et input
L'ajout d'un élément d'habillage et la déclaration d'une famille de polices est l'une des possibilités, tout comme l'utilisation d'une image d'arrière-plan. Ou peut-être un texte d’emplacement réservé html5 répond à vos besoins:
<input name="username" placeholder="">
Les navigateurs qui ne prennent pas en charge cet attribut l’ignoreront tout simplement.
Le sélecteur de contenu avant sélectionne l'entrée: input[type="text"]:before
. Vous devez sélectionner le wrapper: .wrapper:before
. Voir http://jsfiddle.net/allcaps/gA4rx/ . J'ai également ajouté la suggestion d'espace réservé où l'encapsuleur est redondant.
.wrapper input[type="text"] {
position: relative;
}
input { font-family: 'FontAwesome'; } /* This is for the placeholder */
.wrapper:before {
font-family: 'FontAwesome';
color:red;
position: relative;
left: -5px;
content: "\f007";
}
<p class="wrapper"><input placeholder=" Username"></p>
Font Awesome utilise la zone PUA (Unicode Private Use Area) pour stocker les icônes. Les autres caractères ne sont pas présents et reviennent aux valeurs par défaut du navigateur. Cela devrait être le même que n'importe quelle autre entrée. Si vous définissez une police sur des éléments d'entrée, indiquez la même police que l'option de secours dans les cas où nous utilisons une icône. Comme ça:
input { font-family: 'FontAwesome', YourFont; }
Sortie:
HTML:
<input name="txtName" id="txtName">
<span class="fa fa-info-circle errspan"></span>
CSS:
<style type="text/css">
.errspan {
float: right;
margin-right: 6px;
margin-top: -20px;
position: relative;
z-index: 2;
color: red;
}
</style>
(Ou)
Sortie:
HTML:
<div class="input-wrapper">
<input type="text" />
</div>
CSS:
<style type="text/css">
.input-wrapper {
display:inline-block;
position: relative
}
.input-wrapper:after {
font-family: 'FontAwesome';
content: '\f274';
position: absolute;
right: 6px;
}
</style>
Vous pouvez utiliser un wrapper. Dans l'emballage, ajoutez l'élément awesome font i
et l'élément input
.
<div class="wrapper">
<i class="fa fa-icon"></i>
<input type="button">
</div>
puis définissez la position du wrapper sur relative:
.wrapper { position: relative; }
puis définissez la position de l'élément i
sur absolue et définissez l'emplacement correct pour celle-ci:
i.fa-icon { position: absolute; top: 10px; left: 50px; }
(C'est un bidouillage, je sais, mais ça fait le travail.)
Cette réponse fonctionnera pour vous si vous devez remplir les conditions suivantes (aucune des réponses actuelles ne remplissait ces conditions):
Je crois que 3 est le nombre minimal d’éléments HTML permettant de satisfaire à ces conditions:
.input-icon{
position: absolute;
left: 3px;
top: calc(50% - 0.5em); /* Keep icon in center of input, regardless of the input height */
}
input{
padding-left: 17px;
}
.input-wrapper{
position: relative;
}
<link href="https://netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" rel="stylesheet"/>
<div class="input-wrapper">
<input id="stuff">
<label for="stuff" class="fa fa-user input-icon"></label>
</div>
Pas besoin de coder beaucoup ... suivez simplement les étapes suivantes:
<input id="input_search" type="text" class="fa" placeholder=" Search">
vous pouvez trouver les liens vers Unicode (fontawesome) ici ...
Après avoir lu diverses versions de cette question et cherché dans les environs, j'ai trouvé une solution relativement propre et sans js. Elle ressemble à la solution @allcaps mais évite le problème de la modification de la police d'entrée par rapport à la police du document principal.
Utilisez l'attribut ::input-placeholder
pour personnaliser le texte de l'espace réservé. Cela vous permet d'utiliser votre police d'icône comme police d'espace réservé et votre corps (ou une autre police) comme texte de saisie. Actuellement, vous devez spécifier des sélecteurs spécifiques au fournisseur.
Cela fonctionne bien tant que vous n'avez pas besoin d'une combinaison d'icône et de texte dans votre élément d'entrée. Si vous le faites, vous devrez utiliser le texte de substitution comme police de navigateur par défaut (les caractères simples sur le mien) pour les mots.
Par exemple.
HTML
<p class="wrapper">
<input class="icon" type="text" placeholder="" />
</p>
CSS
.wrapper {
font-family:'arial', sans-serif;
}
input.icon::-webkit-input-placeholder {
font-family:'FontAwesome';
}
Fiddle avec des sélecteurs à préfixe de navigateur: http://jsfiddle.net/gA4rx/78/
Notez que vous devez définir chaque sélecteur spécifique au navigateur en tant que règle distincte. Si vous les combinez, le navigateur l'ignorera.
J'ai réalisé cela comme si
form i {
left: -25px;
top: 23px;
border: none;
position: relative;
padding: 0;
margin: 0;
float: left;
color: #29a038;
}
<form>
<i class="fa fa-link"></i>
<div class="form-group string optional profile_website">
<input class="string optional form-control" placeholder="http://your-website.com" type="text" name="profile[website]" id="profile_website">
</div>
<i class="fa fa-facebook"></i>
<div class="form-group url optional profile_facebook_url">
<input class="string url optional form-control" placeholder="http://facebook.com/your-account" type="url" name="profile[facebook_url]" id="profile_facebook_url">
</div>
<i class="fa fa-Twitter"></i>
<div class="form-group url optional profile_Twitter_url">
<input class="string url optional form-control" placeholder="http://Twitter.com/your-account" type="url" name="profile[Twitter_url]" id="profile_Twitter_url">
</div>
<i class="fa fa-instagram"></i>
<div class="form-group url optional profile_instagram_url">
<input class="string url optional form-control" placeholder="http://instagram.com/your-account" type="url" name="profile[instagram_url]" id="profile_instagram_url">
</div>
<input type="submit" name="commit" value="Add profile">
</form>
Le résultat ressemble à ceci:
Veuillez noter que j'utilise Ruby on Rails afin que mon code résultant semble un peu gonflé Le code de vue dans slim est en réalité très concis:
i.fa.fa-link
= f.input :website, label: false
i.fa.fa-facebook
= f.input :facebook_url, label: false
i.fa.fa-Twitter
= f.input :Twitter_url, label: false
i.fa.fa-instagram
= f.input :instagram_url, label: false
Pour moi, un moyen facile d’avoir une icône "dans" une entrée de texte sans avoir à essayer d’utiliser des pseudo-éléments avec un caractère génial, unicode, etc., est d’avoir la saisie de texte et l’icône dans un élément wrapper dans lequel nous positionnerons relative, puis positionnez l’entrée de recherche et l’icône absolue de police géniale.
De la même manière que nous le faisons avec des images de fond et du texte, nous le ferions ici. Je pense que cela convient également aux débutants, car le positionnement CSS est quelque chose que les débutants devraient apprendre au début de leur processus de codage. Le code est donc facile à comprendre et à réutiliser.
<div class="searchbar-wrapper">
<i class="fa fa-search searchbar-i" aria-hidden="true"></i>
<input class="searchbar-input" type="search" placeholder="Search...">
</div>
.searchbar-wrapper{
position:relative;
}
.searchbar-i{
position:absolute;
top: 50%;
transform: translateY(-50%);
padding: 0 .5rem;
}
.searchbar-input{
padding-left: 2rem;
}
Construire sur la suggestion de toutes les capsules. Voici la méthode d'arrière-plan font-awesome avec le moins de code HTML:
<div class="wrapper"><input></div>
.wrapper {
position: relative;
}
input { padding-left: 20px; }
.wrapper:before {
font-family: 'FontAwesome';
position: absolute;
top: 2px;
left: 3px;
content: "\f007";
}
J'ai trouvé le moyen le plus simple avec bootstrap 4.
<div class="input-group mb-3">
<div class="input-group-prepend">
<span class="input-group-text"><i class="fa fa-user"></i></span></div>
<input type="text"/>
</div>
Rendre l'icône cliquable pour se concentrer à l'intérieur de l'élément d'entrée de texte.
CSS
.myClass {
font-size:20px;
position:absolute; top:10px; left:10px;
}
HTML
<div>
<label style="position:relative;">
<i class="myClass fa fa-address-book-o"></i>
<input class="w3-input" type="text" style="padding-left:40px;">
</label>
</div>
Ajoutez simplement l'icône de votre choix dans la balise <i>
, dans la bibliothèque Font Awesome, et profitez des résultats.
::-webkit-search-cancel-button {
height: 10px;
width: 10px;
display: inline-block;
/*background-color: #0e1d3033;*/
content: "&#f00d;";
font-family: FontAwesome;
font-weight: 900;
-webkit-appearance: searchfield-cancel-button !important;
}
input#searchInput {
-webkit-appearance: searchfield !important;
}
<input data-type="search" type="search" id="searchInput" class="form-control">
.input-icon{
position: absolute;
left: 3px;
top: calc(50% - 0.5em); /* Keep icon in center of input, regardless of the input height */
}
input{
padding-left: 17px;
}
.input-wrapper{
position: relative;
}
<link href="https://netdna.bootstrapcdn.com/font-awesome/4.0.3/css/font-awesome.css" rel="stylesheet"/>
<div class="input-wrapper">
<input id="stuff">
<label for="stuff" class="fa fa-user input-icon"></label>
</div>
<HTML>
<head>
<style>
.inp1{
color:#2E64FE;
width:350px;
height:35px;
border:solid;
font-size:20px;
text-align:left;
}
</style>
</head>
<body>
<div class="inp1">
<a href="#" class=""><i class="fa fa-search"></i></a>
</div>