Шрифт Удивительный значок внутри элемента ввода текста

Я пытаюсь вставить значок пользователя в поле ввода имени пользователя.

Я пробовал одно из решений из похожих вопросов зная, что свойство background-image не будет работать, поскольку Шрифт Awesome является шрифтом.

Ниже приведен мой подход, и я не могу получить отображение значков.

.wrapper input[type="text"] {
    position: relative;
}

.wrapper input[type="text"]:before {
    font-family: 'FontAwesome';
    position: absolute;
    top: 0px;
    left: -5px;
    content: "\f007";
}

У меня есть грань шрифта, объявленная в стандартном шрифте awesome css, поэтому я не был уверен, что добавление семейства шрифтов выше было правильным.

 @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');
 }

Ответ 1

Ты прав. : before и: after псевдоконтент не предназначен для работы с замененным контентом, таким как img и элементы input. Добавление оберточного элемента и объявление семейства шрифтов является одной из возможностей, как и использование фонового изображения. Или, возможно, HTML5 заполнитель текста соответствует вашим потребностям:

<input name="username" placeholder="&#61447;">

Браузеры, которые не поддерживают атрибут placeholder, просто игнорируют его.

ОБНОВИТЬ

Селектор содержимого "перед" выбирает вход: input[type="text"]:before. Вы должны выбрать упаковщик: .wrapper:before. См. Http://jsfiddle.net/allcaps/gA4rx/. Я также добавил предложение заполнителя, где обертка является избыточной.

.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="&#61447; Username"></p>

Отступать

Font Awesome использует Unicode Private Use Area (PUA) для хранения иконок. Другие символы отсутствуют и возвращаются к браузеру по умолчанию. Это должно быть так же, как любой другой вход. Если вы определяете шрифт для элементов ввода, тогда предоставьте тот же шрифт, что и в качестве запасного, для ситуаций, когда мы используем значок. Как это:

input { font-family: 'FontAwesome', YourFont; }

Ответ 2

Выход:

enter image description here

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>

(Или же)

Выход:

enter image description here

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>

Ответ 3

Вы можете использовать обертку. Внутри обертки добавьте стильный шрифт i и элемент input.

<div class="wrapper">
    <i class="fa fa-icon"></i>
    <input type="button">
</div>

затем установите положение обертки относительно:

.wrapper { position: relative; }

а затем установите для позиции элемента i значение absolute и установите для нее правильное место:

i.fa-icon { position: absolute; top: 10px; left: 50px; }

(Это хак, я знаю, но он выполняет свою работу.)

Ответ 4

Этот ответ будет работать для вас, если вам понадобятся следующие условия (ни один из текущих ответов не соответствовал этим условиям):

  • Значок находится внутри текстового поля
  • Значок не должен исчезать, когда текст вводится во вход, а введенный текст идет справа от значка
  • Щелчок по значку должен вставлять основной ввод в фокус

Я считаю, что 3 - это минимальное количество элементов HTML, удовлетворяющих этим условиям:

.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>

Ответ 5

Не нужно много кодировать... просто выполните следующие шаги:

<input id="input_search" type="text" class="fa" placeholder="&#xf002 Search">

Вы можете найти ссылки на Unicode (fontawesome) здесь...

FontAwesome Unicode для иконок

Ответ 6

Прочитав различные версии этого вопроса и обыскав вокруг, я нашел довольно чистое решение без js. Это похоже на решение @allcaps, но позволяет избежать проблемы с изменением входного шрифта по сравнению с основным шрифтом документа.

Используйте атрибут ::input-placeholder для определения стиля текста заполнителя. Это позволяет использовать шрифт значка в качестве шрифта-заполнителя, а текст (или другой шрифт) - в качестве фактического входного текста. В настоящее время вам нужно указать специфичные для поставщика селекторы.

Это работает хорошо, если вам не нужно сочетание значка и текста в элементе ввода. Если вы это сделаете, то вам придется смириться с тем, что текстовый заполнитель является шрифтом браузера по умолчанию (обычный с засечками на моем языке) для слов.

Например
HTML

<p class="wrapper">
    <input class="icon" type="text" placeholder="&#61442;" />
</p>

CSS

.wrapper {
    font-family:'arial', sans-serif;
}
input.icon::-webkit-input-placeholder {
    font-family:'FontAwesome';
}

Скрипка с браузерным префиксом селекторов: http://jsfiddle.net/gA4rx/78/

Обратите внимание, что вы должны определить каждый специфичный для браузера селектор как отдельное правило. Если вы объедините их, браузер проигнорирует это.

Ответ 7

Я сделал это так:

  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>

Ответ 8

Для меня простой способ иметь значок "внутри" ввода текста, не пытаясь использовать псевдоэлементы с удивительным шрифтом Unicode и т.д., Состоит в том, чтобы иметь ввод текста и значок внутри элемента-обертки, который мы поместим относительно, и затем поместите и поисковый ввод, и шрифт.

То же самое, что мы делаем с фоновыми изображениями и текстом, мы сделали бы здесь. Я чувствую, что это также хорошо для начинающих, так как позиционирование css - это то, что новичок должен выучить в начале своего пути кодирования, поэтому код легко понять и использовать повторно.

    <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;
    }

Ответ 9

Построение предложения allcaps. Вот шрифт-awesome background method с наименьшим количеством 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";
}

Ответ 10

Сделайте интерактивный значок для фокусировки внутри элемента ввода текста.

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>

Просто добавьте любой значок, который вам нравится внутри тега <i>, из библиотеки шрифтов Awesome и получите результаты.

Ответ 11

Я нашел самый простой способ с помощью начальной загрузки 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>

Ответ 12

<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>

Ответ 13

::-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">

Ответ 14

.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>

Ответ 15

Я попробовал материал ниже, и он действительно работает хорошо HTML

input.hai {
    width: 450px;
    padding-left: 25px;
    margin: 15px;
    height: 25px;
    background-image: url('https://cdn4.iconfinder.com/data/icons/casual-events-and-opinions/256/User-512.png') ;
    background-size: 20px 20px;
    background-repeat: no-repeat;
    background-position: left;
    background-color: grey;
}
<div >

    <input class="hai" placeholder="Search term">

</div>

Ответ 16

Чтобы работать с unicode или fontawesome, вы должны добавить span с class, как показано ниже:

В HTML:

<span class="button1 search"></span>
<input name="username">

В CSS:

.button1 {
    background-color: #B9D5AD;
    border-radius: 0.2em 0 0 0.2em;
    box-shadow: 1px 0 0 rgba(0, 0, 0, 0.5), 2px 0 0 rgba(255, 255, 255, 0.5); 
    pointer-events: none;
    margin:1px 12px;    
    border-radius: 0.2em;    
    color: #333333;
    cursor: pointer;
    position: absolute;
    padding: 3px;
    text-decoration: none;           
}

Ответ 17

<!doctype html>
<html>
  <head>
    ## Heading ##
    <meta charset="utf-8">
      <title>
        Untitled Document
      </title>
      </head>
      <style>
        li {
          display: block;
          width: auto;
        }
        ul li> ul li {
          float: left;
        }
        ul li> ul {
          display: none;
          position: absolute;
        }
        li:hover > ul {
          display: block;
          margin-left: 148px;
          display: inline;
          margin-top: -52px;
        }
        a {
          background: #f2f2ea;
          display: block;
          /*padding:10px 5px;
          */
          width: 186px;
          height: 50px;
          border: solid 2px #c2c2c2;
          border-bottom: none;
          text-decoration: none;
        }
        li:hover >a {
          background: #ffffff;
        }
        ul li>li:hover {
          margin: 12px auto 0px auto;
          padding-top: 10px;
          width: 0;
          height: 0;
          border-top: 8px solid #c2c2c2;
        }
        .bottom {
          border-bottom: solid 2px #c2c2c2;
        }
        .sub_m {
          border-bottom: solid 2px #c2c2c2;
        }
        .sub_m2 {
          border-left: none;
          border-right: none;
          border-bottom: solid 2px #c2c2c2;
        }
        li.selected {
          background: #6D0070;
        }
        #menu_content {
          /*float:left;
          */

        }
        .ca-main {
          padding-top: 18px;
          margin: 0;
          color: #34495e;
          font-size: 18px;
        }
        .ca-sub {
          padding-top: 18px;
          margin: 0px 20px;
          color: #34495e;
          font-size: 18px;
        }
        .submenu a {
          width: auto;
        }
        h2 {
          text-align: center;
        }
      </style>
      <body>
        <ul>
          <li>
            <a href="#">
              <div id="menu_content">
                <h2 class="ca-main">
                  Item 1
                </h2>
              </div>
            </a>
            <ul class="submenu" >
              <li>
                <a href="#" class="sub_m">
                  <div id="menu_content">
                    <h2 class="ca-sub">
                      Item 1_1
                    </h2>
                  </div>
                </a>
              </li>
              <li>

                <a href="#" class="sub_m2">
                  <div id="menu_content">
                    <h2 class="ca-sub">
                      Item 1_2
                    </h2>
                  </div>
                </a>
              </li>
              <li >

                <a href="#" class="sub_m">
                  <div id="menu_content">
                    <h2 class="ca-sub">
                      Item 1_3
                    </h2>
                  </div>
                </a>

              </li>
            </ul>
          </li>
          <li>

            <a href="#">
              <div id="menu_content">
                <h2 class="ca-main">
                  Item 2
                </h2>
              </div>
            </a>
          </li>
          <li>

            <a href="#">
              <div id="menu_content">
                <h2 class="ca-main">
                  Item 3
                </h2>
              </div>
            </a>

          </li>
          <li>

            <a href="#"  class="bottom">
              <div id="menu_content">
                <h2 class="ca-main">
                  Item 4
                </h2>
              </div>
            </a>

          </li>
        </ul>
      </body>
</html>