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

#css

#css

Вопрос:

Пожалуйста, посмотрите этот код:

 $(document).ready(function () {
            $(".toggle-password").click(function () {
                $(this).toggleClass("fa-eye fa-eye-slash");
                var input = $($(this).attr("toggle"));
                if (input.attr("type") == "password") {
                    input.attr("type", "text");
                } else {
                    input.attr("type", "password");
                }
            });
        });  
 .input-group .field-icon {
    cursor: pointer;
    padding-top: 10px;
    padding-right: 10px;
    align-items: center;
    border-top: 1px solid #ced4da;
    border-bottom: 1px solid #ced4da;
}

.input-group-append, .input-group-text {
    border-left: 1px dashed #ced4da !important;
}  
 <!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>AdminLTE 3 | Log in</title>

  <!-- Google Font: Source Sans Pro -->
  <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source Sans Pro:300,400,400i,700amp;display=fallback">
  <!-- Font Awesome -->
  <link rel="stylesheet" href="https://www.desytec.com/adminlte/fontawesome-free/css/all.min.css">
  <!-- icheck bootstrap -->
  <link rel="stylesheet" href="https://www.desytec.com/adminlte/icheck-bootstrap/icheck-bootstrap.min.css">
  <!-- Theme style -->
  <link rel="stylesheet" href="https://www.desytec.com/adminlte/css/adminlte.min.css">
</head>
<body class="hold-transition login-page">
<div class="login-box">
  <div class="login-logo">
    <a href="../../index2.html"><b>Admin</b>LTE</a>
  </div>
  <!-- /.login-logo -->
  <div class="card">
    <div class="card-body login-card-body">
      <p class="login-box-msg">Sign in to start your session</p>

      <form action="../../index3.html" method="post">
        <div class="input-group mb-3">
          <input type="email" class="form-control" placeholder="Email">
          <div class="input-group-append">
            <div class="input-group-text">
              <span class="fas fa-envelope"></span>
            </div>
          </div>
        </div>
        <div class="input-group mb-3">
          <input type="password" class="form-control" placeholder="Password">
          <div class="input-group-append">
            <span toggle="#Password" class="fa fa-fw fa-eye field-icon toggle-password"></span>
            <div class="input-group-text">
              <span class="fas fa-lock"></span>
            </div>
          </div>
        </div>
        <div class="row">
          <div class="col-8">
            <div class="icheck-primary">
              <input type="checkbox" id="remember">
              <label for="remember">
                Remember Me
              </label>
            </div>
          </div>
          <!-- /.col -->
          <div class="col-4">
            <button type="submit" class="btn btn-primary btn-block">Sign In</button>
          </div>
          <!-- /.col -->
        </div>
      </form>

      <div class="social-auth-links text-center mb-3">
        <p>- OR -</p>
        <a href="#" class="btn btn-block btn-primary">
          <i class="fab fa-facebook mr-2"></i> Sign in using Facebook
        </a>
        <a href="#" class="btn btn-block btn-danger">
          <i class="fab fa-google-plus mr-2"></i> Sign in using Google 
        </a>
      </div>
      <!-- /.social-auth-links -->

      <p class="mb-1">
        <a href="forgot-password.html">I forgot my password</a>
      </p>
      <p class="mb-0">
        <a href="register.html" class="text-center">Register a new membership</a>
      </p>
    </div>
    <!-- /.login-card-body -->
  </div>
</div>
<!-- /.login-box -->

<!-- jQuery -->
<script src="https://www.desytec.com/adminlte/jquery/jquery.min.js"></script>
<!-- Bootstrap 4 -->
<script src="https://www.desytec.com/adminlte/bootstrap/js/bootstrap.bundle.min.js"></script>
<!-- AdminLTE App -->
<script src="https://www.desytec.com/adminlte/js/adminlte.min.js"></script>
</body>
</html>  

Когда вы запустите его, вы увидите 2 квадрата справа от поля пароля.

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

Я знаю, что мог бы добавить модификатор :focus к классу в CSS, но я не нашел этот модификатор в правом квадрате, и он работает, он окрашивается в синий цвет, когда фокус находится в элементе управления вводом.

Может быть, я чего-то не хватает.

Как я могу это сделать?

Комментарии:

1. Я не совсем понимаю ваш вопрос, но, насколько я понимаю, я могу предложить указать идентификатор в поле пароля для доступа к нему в DOM, а затем вы можете применить: класс наведения.

2. Было бы лучше, если бы вы уточнили свой вопрос

3. @RinkeshGolwala это не функциональная проблема, а визуальная. Пожалуйста, щелкните внутри поля ввода пароля и посмотрите границу элемента управления. Вы сразу заметите проблему.

4. Да, я видел эту проблему. Но css вынуждает это. .input-group .field-icon принудительно устанавливает другую границу.

5. Это именно тот вопрос. Как я могу это сделать. Обратите внимание, что самый правый квадрат окрашивает границу в синий цвет (и он также делает границу серой), и для него нет модификатора :focus, чтобы перекрасить его в синий (обратите внимание также, что квадраты находятся вне элемента управления вводом, поэтому модификатор :focus не будет работать), поэтомуЯ думаю, что есть хороший способ добиться этого, то есть покрасить границу в синий цвет, когда фокус ввода находится в элементе управления.

Ответ №1:

Надеюсь, это поможет. Я нацелился на левый квадрат напрямую .login-card-body .input-group .form-control:focus~.input-group-append .field-icon .

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

 $(document).ready(function () {
            $(".toggle-password").click(function () {
                $(this).toggleClass("fa-eye fa-eye-slash");
                var input = $($(this).attr("toggle"));
                if (input.attr("type") == "password") {
                    input.attr("type", "text");
                } else {
                    input.attr("type", "password");
                }
            });
        });  
 .input-group .field-icon {
    cursor: pointer;
    padding-top: 10px;
    padding-right: 10px;
    align-items: center;
    border-top: 1px solid #ced4da;
    border-bottom: 1px solid #ced4da;
}

.input-group-append, .input-group-text {
    border-left: 1px dashed #ced4da !important;
}

.login-card-body .input-group .form-control:focus~.input-group-append .field-icon {
    border-top: 1px solid #80bdff;
    border-bottom: 1px solid #80bdff;
}  
 <!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <title>AdminLTE 3 | Log in</title>

  <!-- Google Font: Source Sans Pro -->
  <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Source Sans Pro:300,400,400i,700amp;display=fallback">
  <!-- Font Awesome -->
  <link rel="stylesheet" href="https://www.desytec.com/adminlte/fontawesome-free/css/all.min.css">
  <!-- icheck bootstrap -->
  <link rel="stylesheet" href="https://www.desytec.com/adminlte/icheck-bootstrap/icheck-bootstrap.min.css">
  <!-- Theme style -->
  <link rel="stylesheet" href="https://www.desytec.com/adminlte/css/adminlte.min.css">
</head>
<body class="hold-transition login-page">
<div class="login-box">
  <div class="login-logo">
    <a href="../../index2.html"><b>Admin</b>LTE</a>
  </div>
  <!-- /.login-logo -->
  <div class="card">
    <div class="card-body login-card-body">
      <p class="login-box-msg">Sign in to start your session</p>

      <form action="../../index3.html" method="post">
        <div class="input-group mb-3">
          <input type="email" class="form-control" placeholder="Email">
          <div class="input-group-append">
            <div class="input-group-text">
              <span class="fas fa-envelope"></span>
            </div>
          </div>
        </div>
        <div class="input-group mb-3">
          <input type="password" class="form-control" placeholder="Password">
          <div class="input-group-append">
            <span toggle="#Password" class="fa fa-fw fa-eye field-icon toggle-password"></span>
            <div class="input-group-text">
              <span class="fas fa-lock"></span>
            </div>
          </div>
        </div>
        <div class="row">
          <div class="col-8">
            <div class="icheck-primary">
              <input type="checkbox" id="remember">
              <label for="remember">
                Remember Me
              </label>
            </div>
          </div>
          <!-- /.col -->
          <div class="col-4">
            <button type="submit" class="btn btn-primary btn-block">Sign In</button>
          </div>
          <!-- /.col -->
        </div>
      </form>

      <div class="social-auth-links text-center mb-3">
        <p>- OR -</p>
        <a href="#" class="btn btn-block btn-primary">
          <i class="fab fa-facebook mr-2"></i> Sign in using Facebook
        </a>
        <a href="#" class="btn btn-block btn-danger">
          <i class="fab fa-google-plus mr-2"></i> Sign in using Google 
        </a>
      </div>
      <!-- /.social-auth-links -->

      <p class="mb-1">
        <a href="forgot-password.html">I forgot my password</a>
      </p>
      <p class="mb-0">
        <a href="register.html" class="text-center">Register a new membership</a>
      </p>
    </div>
    <!-- /.login-card-body -->
  </div>
</div>
<!-- /.login-box -->

<!-- jQuery -->
<script src="https://www.desytec.com/adminlte/jquery/jquery.min.js"></script>
<!-- Bootstrap 4 -->
<script src="https://www.desytec.com/adminlte/bootstrap/js/bootstrap.bundle.min.js"></script>
<!-- AdminLTE App -->
<script src="https://www.desytec.com/adminlte/js/adminlte.min.js"></script>
</body>
</html>  

Комментарии:

1. Спасибо. Это сделало это. Я не могу найти, где менялся цвет границы для правильного квадрата.