CSS-псевдоэлемент `::placeholder`
Базовая поддержка Широко доступно
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и в разных версиях браузеров. Она доступна в браузерах с января 2020 года.
::placeholder CSS-псевдоэлемент представляет текст-заполнитель в элементе <input> или <textarea>.
Попробуйте
input {
margin-top: 0.5rem;
}
input::placeholder {
font-weight: bold;
opacity: 0.5;
color: red;
}
<label for="first-name">Your phone number:</label><br /> <input id="first-name" type="tel" name="phone" minlength="9" maxlength="9" placeholder="It must be 9 digits" />
В правиле, использующем ::placeholder в селекторе, можно применять только подмножество свойств CSS, которые применимы к псевдоэлементу ::first-line.
Примечание: В большинстве браузеров текст-заполнитель по умолчанию отображается полупрозрачным или светло-серым цветом.
Синтаксис
::placeholder {
/* ... */
}
Доступность
Контрастность цветов
Коэффициент контрастности
Текст-заполнитель обычно оформляется более светлым цветом, чтобы показать, что это подсказка о том, какие данные можно ввести, а не введённые данные.
Важно убедиться, что коэффициент контрастности между цветом текста-заполнителя и фоном поля ввода достаточно высок, чтобы люди с нарушениями зрения могли его прочитать. При этом цвет текста-заполнителя должен достаточно отличаться от цвета введённого текста, чтобы пользователи не приняли подсказку за введённые данные.
Коэффициент контрастности цветов определяется сравнением яркости текста-заполнителя и фона поля ввода. Для соответствия актуальным Рекомендациям по обеспечению доступности веб-контента (WCAG) коэффициент должен составлять 4,5:1 для текстового содержимого и 3:1 для крупного текста, например заголовков. Крупным считается текст размером от 18,66 px с полужирным начертанием или от 24 px.
- WebAIM: средство проверки контрастности цветов
- Пояснения MDN к WCAG, рекомендация 1.4
-
[Понимание критерия успеха 1.4.3 Понимание WCAG 2.0 от W3C](https://www.w3.org/TR/UNDERSTANDING-WCAG20/visual-audio-contrast-contrast.html)
Удобство использования
Текст-заполнитель с достаточной контрастностью можно принять за введённые данные. Кроме того, он исчезает, когда человек вводит данные в элемент <input>. И то и другое может помешать успешно заполнить форму, особенно людям с когнитивными нарушениями.
Вместо текста-заполнителя подсказку можно разместить вне поля ввода, рядом с ним, а затем программно связать её с элементом <input> с помощью атрибута aria-describedby.
При таком подходе подсказка остаётся доступной даже после ввода данных в поле, а после загрузки страницы поле ввода выглядит пустым. Большинство программ экранного доступа использует aria-describedby, чтобы прочитать подсказку после объявления подписи поля. Если дополнительная информация не нужна, пользователь программы экранного доступа может отключить её чтение.
<label for="user-email">Your email address</label> <span id="user-email-hint" class="input-hint">Example: jane@sample.com</span> <input id="user-email" aria-describedby="user-email-hint" name="email" type="email" />
Режим высокой контрастности Windows
В режиме высокой контрастности Windows текст-заполнитель будет отображаться так же, как введённый пользователем текст. Из-за этого некоторым людям будет трудно определить, какие данные были введены, а какие являются текстом-заполнителем.
Подписи
Текст-заполнитель не заменяет элемент <label>. Если подпись не связана с полем ввода программно с помощью атрибутов for и id, вспомогательные технологии, например программы экранного доступа, не смогут распознать элементы <input>.
Примеры
Изменение внешнего вида текста-заполнителя
В этом примере показаны некоторые изменения, которые можно внести в стили текста-заполнителя.
HTML
<input placeholder="Type here" />
CSS
input::placeholder {
color: red;
font-size: 1.2em;
font-style: italic;
opacity: 0.5;
}
Результат
Непрозрачный текст
В некоторых браузерах текст-заполнитель отображается с пониженной непрозрачностью. Чтобы текст был полностью непрозрачным, задайте значение свойства color явно. Значение currentColor позволяет использовать тот же цвет, что и у соответствующего элемента ввода.
HTML
<input placeholder="Color set by browser" /> <input placeholder="Same color as input" class="explicit-color" /> <input placeholder="Semi-opaque text color" class="opacity-change" />
CSS
input {
font-weight: bold;
color: green;
}
.explicit-color::placeholder {
/* use the same color as input element to avoid the browser set default color */
color: currentColor;
}
.opacity-change::placeholder {
/* less opaque text */
color: color-mix(in srgb, currentColor 70%, transparent);
}
Результат
Примечание: Обратите внимание, что в разных браузерах по умолчанию используются разные цвета текста-заполнителя. Например, Firefox использует цвет элемента ввода с непрозрачностью 54 %, а Chrome — цвет darkgray. Чтобы цвет текста-заполнителя был одинаковым во всех браузерах, задайте значение color явно.
Спецификации
Совместимость с браузерами
| Компьютеры | Мобильные устройства | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome для Android | Firefox для Android | Opera для Android | Safari для iOS | Samsung Internet | WebView для Android | WebView для iOS | |
placeholder |
57
6
|
79
12
12–79
|
51
19
|
44
15
|
10.1
5
|
57
18
|
51
19
|
43
14
|
10.3
4.2
|
7.0
1.0
|
57
2
|
10.3
4.2
|
См. также
- Псевдокласс
:placeholder-shownзадаёт стиль элемента, у которого есть активный текст-заполнитель. - Связанные элементы HTML:
<input>,<textarea> - Формы HTML
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Selectors/::placeholder