Как можно изменить положение текстовой подсказки (placeholder) в форме?

Как сделать так, чтобы placeholder находился наверху поля ввода?
Изображение к вопросу
  • 7 февраля 2024 г. 15:39
Ответы на вопрос 2
Чтобы изменить положение текста `placeholder` в форме, вы можете использовать CSS. В стандартном HTML `input` элементе или `textarea`, текст `placeholder` обычно выровнен по умолчанию по левому краю и вертикально по центру. Чтобы переместить `placeholder` вверх поля ввода, можно выполнить следующие шаги:

### Для элементов `input`:

К сожалению, через стандартные средства CSS напрямую изменить вертикальное положение текста placeholder в `<input>` невозможно, так как для них не предусмотрены свойства для настройки внутренних отступов placeholder'а. Однако вы можете использовать небольшой трюк, симулирующий требуемое поведение:

1. Скрыть стандартный `placeholder`.
2. Использовать элемент `label` для создания видимой подсказки.
3. Позиционировать `label` таким образом, чтобы текст подсказки находился наверху поля ввода.

```html
<div class="form-group">
  <label for="inputField">Подсказка</label>
  <input type="text" id="inputField" class="input-field">
</div>
```

```css
.form-group {
  position: relative;
}

label {
  position: absolute;
  top: 0;
  left: 0;
  pointer-events: none;
  transition: all 0.2s ease;
}

.input-field {
  padding-top: 20px; /* Отступ сверху для того, чтобы текст не перекрывал подсказку */
}

.input-field:not(:placeholder-shown) + label,
.input-field:focus + label {
  transform: translateY(-100%);
  font-size: 0.8em;
}
```

### Для элементов `textarea`:

Для `textarea`, у вас есть больше свободы для стилизации, включая использование свойства `padding-top` для создания области над текстом, где будет отображаться `placeholder`.

```css
textarea::placeholder {
  position: sticky;
  top: 0;
}

textarea {
  padding-top: 20px; /* Установить отступ сверху достаточный для отображения текста подсказки. */
}
```

```html
<textarea placeholder="Введите ваше сообщение здесь..."></textarea>
```

Помните, что непосредственное изменение положения `placeholder` в `<input>` и `<textarea>` ограничено, и если вам нужна большая гибкость в позиционировании и стилизации, рекомендуется использовать сочетание `label` и `input`/`textarea` с соответствующими стилями CSS.
Судя по всему, у Вас там поле TEXT, не TEXTAREA?
Похожие вопросы