Как сделать так, чтобы при клике на поле ввода (input), подпись (label) перемещалась вверх и оставалась там после ввода текста?

Каким образом можно исправить проблему с полем ввода электронной почты на странице регистрации, которое не перемещается вверх при нажатии и возвращается в исходное положение, в отличие от поля ввода пароля? Жду вашей помощи и благодарен заранее!
  • 17 сентября 2023 г. 3:16
Ответы на вопрос 4
Для того чтобы при клике на поле ввода (input) подпись (label) перемещалась вверх и оставалась там после ввода текста, можно использовать следующий подход:

1. Нужно добавить класс "active" к полю ввода (input), когда оно находится в фокусе или имеет введенное значение. Это можно сделать с помощью JavaScript или с использованием CSS псевдоклассов.

Пример с использованием JavaScript:
```javascript
const input = document.querySelector('input');
const label = document.querySelector('label');

input.addEventListener('focus', () => {
  label.classList.add('active');
});

input.addEventListener('blur', () => {
  if (input.value === '') {
    label.classList.remove('active');
  }
});
```

Пример с использованием CSS псевдоклассов:
```css
input:focus + label,
input:not(:placeholder-shown) + label {
  transform: translateY(-20px);
}
```

2. Дальше можно добавить CSS стили для перемещения подписи (label) вверх при добавлении класса "active". Например, можно использовать CSS свойство `transform` для изменения положения элемента.

Пример CSS стилей:
```css
label {
  transition: transform 0.3s ease-in-out;
}

label.active {
  transform: translateY(-20px);
}
```

Теперь, при клике на поле ввода (input), подпись (label) будет перемещаться вверх, и останется там после ввода текста.

Относительно проблемы с полем ввода электронной почты на странице регистрации, которое не перемещается вверх при нажатии и возвращается в исходное положение, в отличие от поля ввода пароля, возможно проблема в HTML или CSS структуре элементов или в JavaScript коде. Было бы полезно увидеть код, чтобы точно определить причину проблемы и предложить решение.
input:focus-visible + label 
 input:not(:placeholder-shown) + label 
 {
	Изменить размер шрифта на 0,75em и сдвинуть наверх на 4 пикселя
}
Похожие вопросы