Как вставить значок внутрь входного тега

#css #bootstrap-4 #font-awesome #laravel-blade

Вопрос:

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

вот html-код:

              <div class="form-group">
                  <label for="password" class="text-secondary">Password</label>
                  <div class="input-group">
                    <input id="password" type="password" class="form-login @error('password') is-invalid @enderror" name="password" required autocomplete="current-password">
                        <div class="input-group-append">
                        <span class="input-group-text" onclick="password_show_hide();">
                          <i class="fas fa-eye" id="show_eye"></i>
                          <i class="fas fa-eye-slash d-none" id="hide_eye"></i>
                        </span>
                      </div>
                    @error('password')
                        <span class="invalid-feedback" role="alert">
                            <strong>{{ $message }}</strong>
                        </span>
                    @enderror
                  </div>
                </div>
 

вот css:

 .form-login{
    display: block;
    width:100%;
    font-size: 1rem;
    font-weight: 400;
    line-height:1.5;
    border-color: #009DA9 !important;
    border-style: solid !important;
    border-width: 0 0 1px 0 !important;
    padding: 0px !important;
    color:black;
    height: auto;
    border-radius: 0;
    background-color: #fff;
    background-clip: padding-box;
}


.form-login:focus{

    color: #495057;
    background-color: #fff;
    border-color: #fff;
    outline: 0;
    box-shadow: none;
}
 

как это выглядит прямо сейчас:

как я хочу выглядеть:до

введите описание изображения здесь

Ответ №1:

Ну, вы можете использовать абсолютную позицию, чтобы расположить значок над входом.

Возможно, вам придется top немного изменить значение и padding-right значение. Проверьте комментарий внутри приведенного ниже фрагмента

 .input-group {
  position:relative;
  display:inline-block;
}
.input-group-text {
  position: absolute;
  right:0;
  top: 0;
}

input {
  padding-right: 20px; /* = icon width if you don't want the password to go under the icon */ 
  } 
 <div class="input-group">
   <input id="password" type="password" class="form-login" />
   <div class="input-group-append">
     <span class="input-group-text">
       <i class="fas fa-eye" id="show_eye">icon</i>

     </span>
   </div>

 </div> 

Ответ №2:

Вы можете использовать абсолютное положение, чтобы расположить значок над полем ввода.

   .form-group {
    width: 25%;
    position: relative;
  }

  .form-group i {
    position: absolute;
    right: 5px;
  }

  .icon {
    padding: 10px;
    color: grey;
    min-width: 50px;
    text-align: center;
  }

  .input-field {
    width: 100%;
    padding: 10px;
    border-radius: 5px;
    border-color: solid lightgray;
  } 
 <div class="form-group">
  <label for="passowrd">Password</label>
  <div class="input-set">
    <i class="fas fa-lock icon"></i>
    <input id="password" name="password" class="input-field" type="text" placeholder="password" />
  </div>
</div>