Css эффекты не работают в приложении реакции - PullRequest
1 голос
/ 29 марта 2020

Я реализовал форму в приложении реагирования, которая имеет два поля: одно для имени пользователя и одно для пароля. Оба имеют метки над текстовым полем. После того, как пользователь щелкнет текстовое поле, метка должна немного сместиться вверх, а также уменьшиться в размере и изменить цвет. У меня уже есть макет HTML и css, который отлично работает, но как только я реализовал его в приложении реагировать, он не работает, и цвет уже изменился без необходимости щелкать текстовое поле enter image description here

h1 {
  color: white;
  text-shadow: 1px 1px 2px black, 0 0 25px blue, 0 0 5px darkblue;
  font-size: 60px;
  text-align: center;
}


.box {
   position: absolute;
   top: 50%;
   left: 50%;
   transform: translate(-50%, -50%);
   width: 500px;
   padding: 40px;
   background: rgba(0,0,0,.7);
   box-sizing: border-box;
   box-shadow: 0 15px 25px rgba(0,0,0, .5);
   border-radius: 10px;
}

.box h2
  {
   margin: 0 0 0px;
   padding: 0;
   color: white;
   text-align: center;
  }

 .box .inputBox{
    position: relative;
  }

 .box .inputBox input{
    width: 100%;
    padding: 10px 0;
    font-size: 16px;
    color: white;
    margin-bottom: 30px;
    border: none;
    border-bottom: 1px solid white;
    outline: none;
    background: transparent;
 }

  .box .inputBox label{
     position: absolute;
     top: 0;
     left: 0;
     padding: 10px 0;
     font-size: 16px;
     color: white;
     pointer-events: none;
     transition: .5s;
    }
.box .inputBox input:focus ~ label, //this is the code for the special effects
.box .inputBox input:valid ~ label
  {
    top: -18px;
    left: 0;
    color: #5100c9;
    font-size: 12px;
  }

.box input[type="submit"]{
    background: transparent;
    border: none;
    outline: none;
    color: white;
    background: #5100c9;
    padding: 10px 20px;
    cursor: pointer;
    border-radius: 5px;
  }

   .box input[type="submit"]:hover{
       font-weight: bold;
     }

1 Ответ

0 голосов
/ 29 марта 2020

Я сделал codepen , чтобы проверить это, и увидел, что эта строка в css вызывает проблему:

.box .inputBox input:focus ~ label,
.box .inputBox input:valid ~ label

Второй селектор в этой строке (.box .inputBox input:valid ~ label) всегда верно, потому что

Селектор :valid работает только для элементов формы с ограничениями, таких как элементы ввода с атрибутами min и max, поля электронной почты с допустимым адресом электронной почты или поля с номерами с цифра c значение и др. c.

Это приводит к тому, что label всегда скользит вверх и становится синим независимо от того, имеет ли он фокус или нет.

Я просто удалил , .box .inputBox input:valid ~ label от вашего css, как показано в коде ручки.

Ваша следующая задача - удержать label от возврата в исходное положение, когда вход теряет фокус. Я думаю, это то, что вы пытались выполнить sh удаленной строкой, но это не ответ. Эта ссылка https://zellwk.com/blog/check-empty-input-css/ должна помочь вам до конца.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...