Как поместить значок внутри элемента ввода формы?
 
Текущая версия: Тема Tidal Force
На вашем сайте используется сочетание трюков CSS, чтобы снять это. Во-первых, он использует фоновое изображение для элемента <input>. Затем, чтобы переместить курсор, он использует padding-left.
Другими словами, они имеют эти два правила CSS:
background: url(images/comment-author.gif) no-repeat scroll 7px 7px;
padding-left:30px;
Рекомендации CSS, опубликованные другими, - лучший способ выполнить это.
Если это должно дать вам какие-либо проблемы (прочитайте IE6), вы также можете использовать вход без полей внутри div.
<div style="border: 1px solid #DDD;">
    <img src="icon.png"/>
    <input style="border: none;"/>
</div>
Не как "чистый", но должен работать на старых браузерах.
Вы можете попробовать следующее:
input[type='text'] {
    background-image: url(images/comment-author.gif);
    background-position: 7px 7px;
    background-repeat: no-repeat;
}Решение без фоновых изображений:
#input_container {
    position:relative;
    padding:0 0 0 20px;
    margin:0 20px;
    background:#ddd;
    direction: rtl;
    width: 200px;
}
#input {
    height:20px;
    margin:0;
    padding-right: 30px;
    width: 100%;
}
#input_img {
    position:absolute;
    bottom:2px;
    right:5px;
    width:24px;
    height:24px;
}<div id="input_container">
    <input type="text" id="input" value>
    <img src="https://cdn4.iconfinder.com/data/icons/36-slim-icons/87/calender.png" id="input_img">
</div>Я считаю это лучшим и самым чистым решением. Используя  текст-отступ в элементе input
CSS
#icon{
background-image:url(../images/icons/dollar.png); 
background-repeat: no-repeat; 
background-position: 2px 3px;
}
HTML:
<input id="icon" style="text-indent:17px;" type="text" placeholder="Username" />
.icon{
background: url(1.jpg) no-repeat;
padding-left:25px;
}
добавьте выше теги в свой CSS файл и используйте указанный класс.
Это работает для меня:
input.valid {
   border-color: #28a745;
   padding-right: 30px;
   background-image: url('https://www.stephenwadechryslerdodgejeep.com/wp-content/plugins/pm-motors-plugin/modules/vehicle_save/images/check.png');
   background-repeat: no-repeat;
   background-size: 20px 20px;
   background-position: right center;
}<form>
<label for="name">Name</label>
<input class="valid" type="text" name="name" />
</form>Просто используйте свойство background в своем CSS.
<input id="foo" type="text" />
#foo
{
    background: url(/img/foo.png);
}
Использование с символом font
<input name="foo" type="text" placeholder="">
ИЛИ
<input id="foo" type="text" />
#foo::before
{
  font-family: 'FontAwesome';
  color:red;
  position: relative;
  left: -5px;
  content: "\f007";    
}
 У меня была такая ситуация. Это не сработало из-за background: #ebebeb; , Я хотел поместить фон в поле ввода, и это свойство постоянно отображалось в верхней части фонового изображения, и я не мог видеть изображение! Итак, я переместил свойство background чтобы оно было выше свойства background-image и оно сработало.
input[type='text'] {
    border: 0;
    background-image: url('../img/search.png');
    background-position: 9px 20px;
    background-repeat: no-repeat;
    text-align: center;
    padding: 14px;
    background: #ebebeb;
}
Решение для моего дела было:
input[type='text'] {
    border: 0;
    background: #ebebeb;
    background-image: url('../img/search.png');
    background-position: 9px 20px;
    background-repeat: no-repeat;
    text-align: center;
    padding: 14px;
}
 Просто отметим, что border, свойства padding и text-align не важны для решения. Я только что воспроизвел оригинальный код.
 Вы можете попробовать следующее: Bootstrap-4 Beta 
https://www.codeply.com/go/W25zyByhec
<div class="container">
            <form>
                <div class="row">
                    <div class="input-group mb-3 col-sm-6">
                      <input type="text" class="form-control border-right-0" placeholder="Username" aria-label="Username" aria-describedby="basic-addon1">
                        <div class="input-group-prepend bg-white">
                            <span class="input-group-text border-left-0 rounded-right bg-white" id="basic-addon1"><i class="fas fa-search"></i></span>
                        </div>
                    </div>
                </div>
            </form>
        </div>
Простой и легкий способ разместить Icon внутри ввода - использовать CSS-свойство position, как показано в приведенном ниже коде. Примечание. Я упростил код для наглядности.
#input-container {
  position: relative;
}
#input-container > img {
  position: absolute;
  top: 12px;
  left: 15px;
}
#input-container > input {
  padding-left: 40px;
}<div id="input-container">
  <img/>
  <input/>
</div> <label for="fileEdit">
    <i class="fa fa-cloud-upload">
    </i>
    <input id="fileEdit" class="hidden" type="file" name="addImg" ng-file-change="onImageChange( $files )" ng-multiple="false" accept="{{ contentType }}"/>
  </label>
Например, вы можете использовать это: ярлык со скрытым вводом (значок присутствует).
Вместо этого вы можете использовать кнопку, что легче понять.
<button type="submit" form="id-of-form" class="btn btn-default add-to-cart"><i class="fa fa-shopping-cart"></i>Add to cart</button>
Здесь "fa fa-shopping-cart" - значок корзины.
результат:
используйте этот класс CSS для ввода в начале, а затем настройте его соответствующим образом:
    
 .inp-icon{
background: url(https://i.imgur.com/kSROoEB.png)no-repeat 100%;
background-size: 16px;
 }<input class="inp-icon" type="text">