Ajouter Bootstrap Glyphicon à la boîte de saisie

Comment puis-je ajouter un glyphicon à une zone de saisie de type texte? Par exemple, je veux avoir 'icon-user' dans une entrée nom d'utilisateur, quelque chose comme ceci:

enter image description here

314
demandé sur doovers 2013-09-17 03:23:56

14 réponses

Sans Bootstrap:

nous arrivons à Bootstrap dans une seconde, mais voici les concepts CSS fondamentaux en jeu afin de le faire vous-même. Comme barbe de proie souligne , vous pouvez le faire avec CSS en positionnant absolument l'icône à l'intérieur de l'élément d'entrée. Ajoutez ensuite du rembourrage de chaque côté pour éviter que le texte ne chevauche l'icône.

Donc, pour le code HTML suivant:

<div class="inner-addon left-addon">
    <i class="glyphicon glyphicon-user"></i>
    <input type="text" class="form-control" />
</div>

vous pouvez utiliser les CSS suivants à gauche et à droite alignent glyphs:

/* enable absolute positioning */
.inner-addon { 
    position: relative; 
}

/* style icon */
.inner-addon .glyphicon {
  position: absolute;
  padding: 10px;
  pointer-events: none;
}

/* align icon */
.left-addon .glyphicon  { left:  0px;}
.right-addon .glyphicon { right: 0px;}

/* add padding  */
.left-addon input  { padding-left:  30px; }
.right-addon input { padding-right: 30px; }

Démo dans Plunker

css screenshot

Note : ceci présume que vous utilisez glyphicons , mais fonctionne également bien avec font-awesome .

Pour FA, il suffit de remplacer .glyphicon par .fa


Avec Bootstrap:

comme indique , ceci peut être accompli nativement dans Bootstrap en utilisant les États de Validation avec les icônes optionnelles . Ceci est fait en donnant l'élément .form-group la classe de .has-feedback et l'icône la classe de .form-control-feedback .

l'exemple Le plus simple serait quelque chose comme ceci:

<div class="form-group has-feedback">
    <label class="control-label">Username</label>
    <input type="text" class="form-control" placeholder="Username" />
    <i class="glyphicon glyphicon-user form-control-feedback"></i>
</div>

Pros :

  • comprend les supports pour différents types de formulaires (de base, Horizontal, en ligne)
  • Inclut le support pour les différentes tailles de contrôle (par Défaut, Petit, Grand)

Cons :

  • N'est pas inclure le support pour gauche l'alignement des icônes

pour surmonter les inconvénients, j'ai assemblé ce pull-request avec des changements pour supporter les icônes alignées à gauche. Comme il s'agit d'un changement relativement important, il a été remis à plus tard, mais si vous avez besoin de ces fonctionnalités aujourd'hui , voici un simple guide de mise en œuvre:

incluez juste le ces changements de forme dans css (également inlined via hidden stack snippet en bas)

*moins : sinon, si vous êtes bâtiment via moins , voici les changements de forme moins

"

alors, tout ce que vous avez à faire est d'inclure la classe .has-feedback-left sur tout groupe qui a la classe .has-feedback afin de gauche aligner l'icône.

Puisqu'il y a beaucoup de configurations html possibles sur différents types de formulaires, différentes tailles de contrôle, différents jeux d'icônes, et différentes visibilités d'étiquette, j'ai créé une page test qui montre le jeu correct de HTML pour chaque permutation avec une démo en direct.

Voici une démo en Plunker

feedback screenshot

P.S. la suggestion de frizi d'ajouter pointer-events: none; a été ajouté à bootstrap

vous n'avez pas trouvé ce que vous cherchiez ? Essayez ces questions similaires:

Outre CSS pour Aligné à Gauche des icônes de réaction

.has-feedback .form-control {
  padding-right: 34px;
}
.has-feedback .form-control.input-sm,
.has-feedback.form-group-sm .form-control {
  padding-right: 30px;
}
.has-feedback .form-control.input-lg,
.has-feedback.form-group-lg .form-control {
  padding-right: 46px;
}
.has-feedback-left .form-control {
  padding-right: 12px;
  padding-left: 34px;
}
.has-feedback-left .form-control.input-sm,
.has-feedback-left.form-group-sm .form-control {
  padding-left: 30px;
}
.has-feedback-left .form-control.input-lg,
.has-feedback-left.form-group-lg .form-control {
  padding-left: 46px;
}
.has-feedback-left .form-control-feedback {
  left: 0;
}
.form-control-feedback {
  line-height: 34px !important;
}
.input-sm + .form-control-feedback,
.form-horizontal .form-group-sm .form-control-feedback {
  width: 30px;
  height: 30px;
  line-height: 30px !important;
}
.input-lg + .form-control-feedback,
.form-horizontal .form-group-lg .form-control-feedback {
  width: 46px;
  height: 46px;
  line-height: 46px !important;
}
.has-feedback label.sr-only ~ .form-control-feedback,
.has-feedback label.sr-only ~ div .form-control-feedback {
  top: 0;
}
@media (min-width: 768px) {
  .form-inline .inline-feedback {
    position: relative;
    display: inline-block;
  }
  .form-inline .has-feedback .form-control-feedback {
    top: 0;
  }
}
.form-horizontal .has-feedback-left .form-control-feedback {
  left: 15px;
}
704
répondu KyleMit 2017-12-04 16:29:52

Le officiel la méthode. Pas de CSS personnalisé

<form class="form-inline" role="form">
  <div class="form-group has-success has-feedback">
    <label class="control-label" for="inputSuccess4"></label>
    <input type="text" class="form-control" id="inputSuccess4">
    <span class="glyphicon glyphicon-user form-control-feedback"></span>
  </div>
</form>

Démo: http://jsfiddle.net/LS2Ek/1 /

cette démo est basée sur un exemple dans Bootstrap docs. Faites défiler vers le bas jusqu'à" avec les icônes optionnelles "ici http://getbootstrap.com/css/#forms-control-validation

enter image description here

59
répondu user 2014-06-13 03:02:43

voici une alternative uniquement CSS. J'ai configuré ceci pour un champ de recherche pour obtenir un effet similaire à Firefox (& une centaine d'autres applications.)

voici un violon .

HTML

<div class="col-md-4">
  <input class="form-control" type="search" />
  <span class="glyphicon glyphicon-search"></span>
</div>

CSS

.form-control {
  padding-right: 30px;
}

.form-control + .glyphicon {
  position: absolute;
  right: 0;
  padding: 8px 27px;
}
40
répondu beardofprey 2013-11-11 23:52:53

Voici comment je l'ai fait en utilisant seulement le bootstrap CSS V3 par défaut.3.1:

<div class="form-group">
    <label class="control-label">Start:</label>
    <div class="input-group">
        <input type="text" class="form-control" aria-describedby="start-date">
        <span class="input-group-addon" id="start-date"><span class="glyphicon glyphicon-calendar"></span></span>
    </div>
</div>

Et voici à quoi ça ressemble:

enter image description here

10
répondu Garry English 2015-02-02 04:39:29

ce "cheat" fonctionnera avec l'effet secondaire que la classe glyphicon changera la police pour le contrôle d'entrée.

Violon

<input class="form-control glyphicon" type="search" placeholder="&#57347;"/>

si vous voulez vous débarrasser de l'effet secondaire, vous pouvez supprimer la classe" glyphicon " et ajouter les CSS suivants (il peut y avoir une meilleure façon de style le pseudo élément placeholder et je n'ai testé que sur Chrome).

Violon

.form-control[type="search"]::-webkit-input-placeholder:first-letter {
    font-family:"Glyphicons Halflings";
}
.form-control[type="search"]:-moz-placeholder:first-letter {
    font-family:"Glyphicons Halflings";
}
.form-control[type="search"]::-moz-placeholder:first-letter {
    font-family:"Glyphicons Halflings";
}
.form-control[type="search"]:-ms-input-placeholder:first-letter {
    font-family:"Glyphicons Halflings";
}

peut-être une solution encore plus propre:

Violon

CSS

.form-control.glyphicon {
    font-family:inherit;
}
.form-control.glyphicon::-webkit-input-placeholder:first-letter {
    font-family:"Glyphicons Halflings";
}
.form-control.glyphicon:-moz-placeholder:first-letter {
    font-family:"Glyphicons Halflings";
}
.form-control.glyphicon::-moz-placeholder:first-letter {
    font-family:"Glyphicons Halflings";
}
.form-control.glyphicon:-ms-input-placeholder:first-letter {
    font-family:"Glyphicons Halflings";
}

HTML

<input class="form-control glyphicon" type="search" placeholder="&#57347; search" />
<input class="form-control glyphicon" type="text"  placeholder="&#57352; username" />
<input class="form-control glyphicon" type="password"  placeholder="&#57395; password" />
7
répondu greenbender 2014-01-30 11:51:17

il peut être fait en utilisant les classes du bootstrap officiel 3.version x, Sans CSS personnalisé.

utiliser input-group-addon avant la balise d'entrée, à l'intérieur de input-group utiliser les glyphicons, voici le code

<form>
  <div class="form-group">
    <div class="col-xs-5">
      <div class="input-group">
          <span class="input-group-addon transparent"><span class="glyphicon glyphicon-user"></span></span>
          <input class="form-control left-border-none" placeholder="User Name" type="text" name="username">
      </div>
    </div>
  </div>
</form>

Voici la sortie

enter image description here

pour le personnaliser plus ajouter quelques lignes de custuom css à votre propre personnaliser.fichier css (réglage du remplissage si nécessaire)

.transparent {
    background-color: transparent !important;
    box-shadow: inset 0px 1px 0 rgba(0,0,0,.075);
 }
 .left-border-none {
    border-left:none !important;
    box-shadow: inset 0px 1px 0 rgba(0,0,0,.075);
 }

en rendant l'arrière-plan du input-group-addon transparent et en rendant le gradient gauche de la balise d'entrée à zéro, l'entrée aura une apparence transparente. Voici la sortie personnalisée

enter image description here

voici un jsbin exemple

cela résoudra le CSS personnalisé problèmes de chevauchement avec lables, alignement tout en utilisant input-lg et se concentrer sur la question tab.

7
répondu Dheeraj 2016-12-03 08:45:53

Voici une solution non bootstrap qui simplifie votre balisage en intégrant la représentation d'image du glyphicon directement dans le CSS en utilisant l'encodage URI base64.

input {
  border:solid 1px #ddd;
}
input.search {
	padding-left:20px;
	background-repeat: no-repeat;
	background-position-y: 1px;
	background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAYAAABb0P4QAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADbSURBVDhP5ZI9C4MwEIb7//+BEDgICA6C4OQgBJy6dRIEB6EgCNkEJ4e3iT2oHzH9wHbpAwfyJvfkJDnhYH4kHDVKlSAigSAQoCiBKjVGXvaxFXZnxBQYkSlBICII+22K4jM63rbHSthCSdsskVX9Y6KxR5XJSSpVy6GbpbBKp6aw0BzM0ShCe1iKihMXC6EuQtMQwukzPFu3fFd4+C+/cimUNxy6WQkNnmdzL3NYPfDmLVuhZf2wZYz80qDkKX1St3CXAfVMqq4cz3hTaGEpmctxDPmB0M/fCYEbAwZYyVKYcroAAAAASUVORK5CYII=);
}
<input class="search">
6
répondu mccainz 2015-04-17 17:31:12

si vous utilisez Fontawesome vous pouvez faire ceci:

<input type="text" style="font-family:Arial, FontAwesome"  placeholder="&#xf007;" />

résultat

enter image description here

la liste complète de unicode peut être trouvée dans le la police complète impressionnant 4.6.3 référence d'icône

6
répondu Merlin 2016-10-13 08:25:20

Voici une autre façon de le faire en plaçant le glyphicon en utilisant le pseudo-élément :before dans CSS.

Travail de démonstration dans jsFiddle

pour ce HTML:

<form class="form form-horizontal col-xs-12">
    <div class="form-group">
        <div class="col-xs-7">
            <span class="usericon">
                <input class="form-control" id="name" placeholder="Username" />
            </span>
        </div>
    </div>
</form>

utilisez ce CSS ( Bootstrap 3.X et les navigateurs Webkit compatibles )

.usericon input {
    padding-left:25px;
}
.usericon:before {
    height: 100%;
    width: 25px;
    display: -webkit-box;
    -webkit-box-pack: center;
    -webkit-box-align: center;
    position: absolute;
    content: "\e008";
    font-family: 'Glyphicons Halflings';
    pointer-events: none;
}

comme @Frizi L'a dit, nous devons ajouter pointer-events: none; pour que le le curseur n'interfère pas avec le focus d'entrée. Toutes les autres règles CSS sont pour le centrage et l'ajout de l'espacement approprié.

le résultat:

screenshot

4
répondu Richard Cotrina 2014-03-27 00:48:47

input {
  border:solid 1px #ddd;
}
input.search {
	padding-left:20px;
	background-repeat: no-repeat;
	background-position-y: 1px;
	background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAASCAYAAABb0P4QAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADbSURBVDhP5ZI9C4MwEIb7//+BEDgICA6C4OQgBJy6dRIEB6EgCNkEJ4e3iT2oHzH9wHbpAwfyJvfkJDnhYH4kHDVKlSAigSAQoCiBKjVGXvaxFXZnxBQYkSlBICII+22K4jM63rbHSthCSdsskVX9Y6KxR5XJSSpVy6GbpbBKp6aw0BzM0ShCe1iKihMXC6EuQtMQwukzPFu3fFd4+C+/cimUNxy6WQkNnmdzL3NYPfDmLVuhZf2wZYz80qDkKX1St3CXAfVMqq4cz3hTaGEpmctxDPmB0M/fCYEbAwZYyVKYcroAAAAASUVORK5CYII=);
}
<input class="search">
3
répondu Angel Patel 2017-05-02 10:02:30

j'ai aussi une décision pour cette affaire avec Bootstrap 3.3.5:

<div class="col-sm-5">
    <label for="date">
       <input type="date" placeholder="Date" id="date" class="form-control">         
    </label>
    <i class="glyphicon glyphicon-calendar col-sm-pull-2"></i>
</div>

sur input j'ai quelque chose comme ça: enter image description here

1
répondu Vitalii Nesterenko 2016-05-23 18:00:25

vous pouvez utiliser son Unicode HTML

pour ajouter une icône d'utilisateur, il suffit d'ajouter &#xe008; à l'attribut placeholder , ou où vous le voulez.

vous pouvez vérifier cette feuille de triche .

exemple:

<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
<input type="text" class="form-control" placeholder="&#xe008; placeholder..." style="font-family: 'Glyphicons Halflings', Arial">
<input type="text" class="form-control" value="&#xe008; value..." style="font-family: 'Glyphicons Halflings', Arial">
<input type="submit" class="btn btn-primary" value="&#xe008; submit-button" style="font-family: 'Glyphicons Halflings', Arial">

n'oubliez pas de régler la police d'entrée sur celle de Glyphicon, en utilisant le code suivant: font-family: 'Glyphicons Halflings', Arial , où Arial est la police du texte normal dans l'entrée.

1
répondu Mona Lisa 2017-09-21 21:49:38

si vous avez la chance de n'avoir besoin que de navigateurs modernes: essayez CSS transform translate. Cela ne nécessite pas de wrappers, et peut être personnalisé de sorte que vous pouvez autoriser plus d'espacement pour l'entrée[type=nombre] pour accommoder le spinner d'entrée, ou le déplacer à la gauche de la poignée.

    @import url("//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css");


.is-invalid {
  height: 30px;
  box-sizing: border-box;
}

.is-invalid-x {
  font-size:27px;
  vertical-align:middle;
  color: red;
  top: initial;
  transform: translateX(-100%);
}




 <h1>Tasty Field Validation Icons using only css transform</h1>
    <label>I am just a poor boy nobody loves me</label>
    <input class="is-invalid"><span class="glyphicon glyphicon-exclamation-sign is-invalid-x"></span>

http://codepen.io/anon/pen/RPRmNq?editors=110

0
répondu httpete 2015-06-10 01:59:49

vous devriez être en mesure de le faire avec les classes bootstrap existantes et un peu de style personnalisé.

<form>
    <div class="input-prepend">
        <span class="add-on">
            <i class="icon-user"></i>
        </span>
        <input class="span2" id="prependedInput" type="text" placeholder="Username" style="background-color: #eeeeee;border-left: #eeeeee;">
    </div>         

Edit l'icône est référencée via la classe icon-user . Cette réponse a été écrite au moment de la version 2 de Bootstrap. Vous pouvez voir la référence sur la page suivante: http://getbootstrap.com/2.3.2/base-css.html#images

0
répondu YOOOEE 2015-09-05 02:46:26