Псевдоэлемент ::placeholder | CSS | WebReference
Псевдоэлемент, с помощью которого задаётся стилевое оформление подсказывающего текста, созданного атрибутом placeholder. Допускается использовать свойства для изменения вида текста, например, задать шрифт и цвет.
Синтаксис
Селектор::placeholder { ... }Синтаксис| Описание | Пример | |
|---|---|---|
| <тип> | Указывает тип значения. | <размер> |
| A && B | Значения должны выводиться в указанном порядке. | <размер> && <цвет> |
| A | B | Указывает, что надо выбрать только одно значение из предложенных (A или B). | normal | small-caps |
| A || B | Каждое значение может использоваться самостоятельно или совместно с другими в произвольном порядке. | width || count |
| [ ] | ![]() | [ crop || cross ] |
| * | Повторять ноль или больше раз. | [,<время>]* |
| + | Повторять один или больше раз. | <число>+ |
| ? | Указанный тип, слово или группа не является обязательным. | inset? |
| {A, B} | Повторять не менее A, но не более B раз. | <радиус>{1,4} |
| # | Повторять один или больше раз через запятую. | <время># |
Пример
<!DOCTYPE html> <html> <head> <meta charset=»utf-8″> <title>placeholder</title> <style> body { background: #053f38; } input[type=»search»] { border: 1px solid #98baba; /* Параметры рамки */ background: transparent; /* Прозрачный фон */ padding: 1px 4px; /* Поля вокруг текста */ color: #fff; /* Цвет текста */ } input[type=»search»]::-moz-placeholder { color: #ffd595; /* Цвет подсказывающего текста */ } input[type=»search»]::-webkit-input-placeholder { color: #ffd595; } input[type=»search»]:-ms-input-placeholder { color: #ffd595; } input[type=»search»]::-ms-input-placeholder { color: #ffd595; } input[type=»search»]::placeholder { color: #ffd595; } </style> </head> <body> <form action=»handler.
php»>
<p><input type=»search» placeholder=»Поиск по сайту» name=»q»>
<input type=»submit» value=»Найти»></p>
</form>
</body>
</html>Результат примера показан на рис. 1.
Рис. 1. Использование ::placeholder
Примечание
Internet Explorer использует псевдокласс :-ms-input-placeholder.
Microsoft Edge использует псевдоэлемент ::-ms-input-placeholder.
Chrome, до версии 57, Opera до версии 44, Safari до версии 10.1 и Android используют псевдоэлемент ::-webkit-input-placeholder.
Firefox с версии 4 и до 19 использует псевдокласс :-moz-placeholder.
Firefox до версии 51 использует псевдоэлемент ::-moz-placeholder.
Браузеры
| 10 | 12 | 4 | 57 | 15 | 44 | 5 | 10. 1 | 4 | 19 | 51 |
| 2.1 | 19 | 30 | 4.3 | 10.3 |
- — элемент полностью поддерживается браузером;
- — элемент браузером не воспринимается и игнорируется;
- — при работе возможно появление различных ошибок, либо элемент поддерживается с оговорками.
Число указывает версию браузреа, начиная с которой элемент поддерживается.
Псевдоэлементы
См. также
- Атрибут placeholder
- Подсказка в поле формы
- Подсказывающий текст
- Псевдокласс :placeholder-shown
Практика
- Подсказка
Стилизуем placeholder при помощи CSS. Синтаксис, трюки, поддерживаемые стили в html5
Атрибут placeholder применяется для призыва к действию внутри пустых элементов input и textarea.
В этой статье мы рассмотрим возможности стилизации текста placeholder-a, а также некоторые трюки, которые позволят сделать его более удобным и функциональным.
Итак, начнем с примера для тех, кто не знает, что такое placeholder.
html
<input type="text" placeholder="Оставьте сообщение здесь">
input placeholder demo
Стиль placeholder-a можно изменить с помощью такого набора css правил:
css
::-webkit-input-placeholder {color:#c0392b;}
::-moz-placeholder {color:#c0392b;}/* Firefox 19+ */
:-moz-placeholder {color:#c0392b;}/* Firefox 18- */
:-ms-input-placeholder {color:#c0392b;}
Выглядит страшновато, не правда ли? Дело в том, что этого до сих пор нет в стандартах. Каждый браузер по-своему реализовал поддержку стилизации placeholder-а.
В IE и старых firefox (до 18-го) placeholder считается псевдоклассом, а в новых firefox, webkit и blink – псевдоэлементом.
Смотрим, что получилось:
input placeholder demo
Нужно сказать, что поддерживаются не все возможные css свойства.
Большинство современных браузеров позволяют изменить:
- font (и сопутствующие свойства)
- background (и сопутствующие свойства)
- color
- word-spacing
- letter-spacing
- text-decoration
- vertical-align
- text-transform
- line-height
- text-indent
- text-overflow
- opacity
А если placeholder не вмещается?
Иногда поля для ввода текста сокращаются по ширине из-за особенностей лейаута, в частности на мобильных девайсах. В этом случае длинный текст placeholder-а будет некрасиво обрезан. Чтобы предотвратить это, вы можете использовать text-overflow: ellipsis. Такой синтаксис будет работать во всех новых браузерах.
css
input[placeholder] {text-overflow:ellipsis;}
input::-moz-placeholder {text-overflow:ellipsis;}
input:-moz-placeholder {text-overflow:ellipsis;}
input:-ms-input-placeholder {text-overflow:ellipsis;}
input placeholder demo
Как скрыть placeholder при фокусе?
Скрывание placeholder-а происходит по-разному.
- в некоторых браузерах при получении фокуса инпутом
- в других браузерах при наличии хотя бы одного введенного символа
Мне больше нравится первый вариант. Для того, чтобы задать такое поведение во всех браузерах, поддерживающих placeholder, определим следующие css правила:
css
:focus::-webkit-input-placeholder {color: transparent}
:focus::-moz-placeholder {color: transparent}
:focus:-moz-placeholder {color: transparent}
:focus:-ms-input-placeholder {color: transparent}
input placeholder demo
Скрываем placeholder красиво
Можно также добавить transition для появления и скрытия placeholder-a:
input placeholder demo
Вот сss:
css
/* плавное изменение прозрачности placeholder-а при фокусе */
.input1::-webkit-input-placeholder {opacity: 1; transition: opacity 0.3s ease;}
.input1::-moz-placeholder {opacity: 1; transition: opacity 0.3s ease;}
.input1:-moz-placeholder {opacity: 1; transition: opacity 0.
3s ease;}
.input1:-ms-input-placeholder {opacity: 1; transition: opacity 0.3s ease;}
.input1:focus::-webkit-input-placeholder {opacity: 0; transition: opacity 0.3s ease;}
.input1:focus::-moz-placeholder {opacity: 0; transition: opacity 0.3s ease;}
.input1:focus:-moz-placeholder {opacity: 0; transition: opacity 0.3s ease;}
.input1:focus:-ms-input-placeholder {opacity: 0; transition: opacity 0.3s ease;}
/* сдвиг placeholder-а вправо при фокусе*/
.input2::-webkit-input-placeholder {text-indent: 0px; transition: text-indent 0.3s ease;}
.input2::-moz-placeholder {text-indent: 0px; transition: text-indent 0.3s ease;}
.input2:-moz-placeholder {text-indent: 0px; transition: text-indent 0.3s ease;}
.input2:-ms-input-placeholder {text-indent: 0px; transition: text-indent 0.3s ease;}
.input2:focus::-webkit-input-placeholder {text-indent: 500px; transition: text-indent 0.3s ease;}
.input2:focus::-moz-placeholder {text-indent: 500px; transition: text-indent 0.
3s ease;}
.input2:focus:-moz-placeholder {text-indent: 500px; transition: text-indent 0.3s ease;}
.input2:focus:-ms-input-placeholder {text-indent: 500px; transition: text-indent 0.3s ease;}
/* сдвиг placeholder-а вниз при фокусе*/
.input3::-webkit-input-placeholder {line-height: 20px; transition: line-height 0.5s ease;}
.input3::-moz-placeholder {line-height: 20px; transition: line-height 0.5s ease;}
.input3:-moz-placeholder {line-height: 20px; transition: line-height 0.5s ease;}
.input3:-ms-input-placeholder {line-height: 20px; transition: line-height 0.5s ease;}
.input3:focus::-webkit-input-placeholder {line-height: 100px; transition: line-height 0.5s ease;}
.input3:focus::-moz-placeholder {line-height: 100px; transition: line-height 0.5s ease;}
.input3:focus:-moz-placeholder {line-height: 100px; transition: line-height 0.5s ease;}
.input3:focus:-ms-input-placeholder {line-height: 100px; transition: line-height 0.
5s ease;}
Надеюсь, вам это пригодится. Пишите замечания и предложения в комментариях.
Posted on Февраль 27, 2014
by Nedudi Дудин Дмитрий
29 Comments ↓
541,913 views
::placeholder — CSS: каскадные таблицы стилей
Псевдоэлемент CSS ::placeholder представляет текст-заполнитель в элементе или .
Только подмножество свойств CSS, которые применяются к псевдоэлементу ::first-line , можно использовать в правиле, использующем ::placeholder в его селекторе.
Примечание: В большинстве браузеров текст-заполнитель по умолчанию выглядит полупрозрачным или светло-серым цветом.
:: заполнитель {
/* ... */
}
Цветовой контраст
Коэффициент контрастности
Текст-заполнитель обычно имеет более светлую цветовую обработку, чтобы показать, что это предложение относительно того, какой тип ввода будет действительным, а не фактический ввод любого типа.
Важно убедиться, что коэффициент контрастности между цветом текста-заполнителя и фоном ввода достаточно высок, чтобы люди с плохим зрением могли его прочитать, а также убедиться, что существует достаточная разница между текст заполнителя и цвет входного текста, чтобы пользователи не приняли заполнитель за введенные данные.
Коэффициент цветовой контрастности определяется путем сравнения яркости текста-заполнителя и входных значений цвета фона. Чтобы соответствовать текущим рекомендациям по доступности веб-контента (WCAG), требуется соотношение 4,5:1 для текстового контента и 3:1 для более крупного текста, например заголовков. Крупный текст определяется как 18,66 пикселя и полужирный или больше, или 24 пикселя или больше.
- WebAIM: проверка цветового контраста
- MDN Понимание WCAG, пояснения к Руководству 1.4
- Понимание критерия успеха 1.4.3 | W3C Понимание WCAG 2.0
Удобство использования
Текст-заполнитель с достаточным цветовым контрастом может интерпретироваться как введенный ввод.
Текст-заполнитель также исчезнет, когда пользователь введет содержимое в элемент . Оба эти обстоятельства могут помешать успешному завершению формы, особенно для людей с когнитивными проблемами.
Альтернативный подход к предоставлению информации-заполнителя состоит в том, чтобы включить ее за пределами ввода в непосредственной близости, а затем использовать aria-describedby , чтобы программно связать с его подсказкой.
В этой реализации содержимое подсказки доступно, даже если информация введена в поле ввода, и при загрузке страницы ввод появляется свободным от ранее существовавшего ввода. В большинстве технологий чтения с экрана будет использоваться aria-described by , чтобы прочитать подсказку после объявления текста метки ввода, и человек, использующий программу чтения с экрана, может отключить ее, если посчитает дополнительную информацию ненужной.
Пример: jane@sample.
com
<ввод
aria-describedby="user-email-подсказка"
имя = "электронная почта"
тип = "электронная почта" />
- Заполнители в полях формы вредны — Nielsen Norman Group
Режим высокой контрастности Windows
Текст-заполнитель будет отображаться с тем же стилем, что и текстовое содержимое, введенное пользователем, при отображении в режиме высокой контрастности Windows). Некоторым людям будет сложно определить, какое содержимое было введено, а какое является текстом-заполнителем.
Метки
Заполнители не являются заменой элемента . Без метки, которая была программно связана с вводом с использованием комбинации атрибутов для и id , вспомогательные технологии, такие как программы чтения с экрана, не могут анализировать элемента .
- Заполнители в полях формы вредны — Nielsen Norman Group
Изменение внешнего вида заполнителя
В этом примере показаны некоторые настройки, которые можно внести в стили текста заполнителя.
HTML
CSS
input::placeholder {
красный цвет;
размер шрифта: 1.2em;
стиль шрифта: курсив;
}
Результат
Непрозрачный текст
Некоторые браузеры (например, Firefox) устанавливают для непрозрачности заполнителей значение по умолчанию меньше 100%. Если вы хотите полностью непрозрачный текст-заполнитель, установите opacity на 1 .
HTML
CSS
:: заполнитель {
цвет: зеленый;
}
.force-opaque :: заполнитель {
непрозрачность: 1;
}
Результат
| Спецификация |
|---|
| Модуль псевдоэлементов CSS, уровень 4 # placeholder-pseudo 90 131 |
Таблицы BCD загружаются только в браузере с включенным JavaScript.
Включите JavaScript для просмотра данных.
- Псевдокласс
:placeholder-showстилизует элемент, который имеет активный заполнитель. - Связанные элементы HTML:
, - HTML-формы
Обнаружили проблему с содержанием этой страницы?
- Отредактируйте страницу на GitHub.
- Сообщить о проблеме с содержимым.
- Посмотреть исходный код на GitHub.
Последнее изменение этой страницы: участниками MDN.
Как изменить цвет заполнителя ввода HTML5 с помощью CSS
HTML5 имеет атрибут, называемый заполнителем. Этот атрибут, используемый в элементах и
В большинстве браузеров цвет текста-заполнителя по умолчанию светло-серый.
Если вы хотите изменить его, вам нужно использовать псевдоэлемент ::placeholder.
Обратите внимание, что Firefox снижает непрозрачность заполнителя, поэтому используйте непрозрачность: 1; , чтобы исправить это.
Если вы хотите выбрать сам ввод, когда отображается его текст-заполнитель, используйте псевдокласс :placeholder-show .
Пример кода будет выглядеть следующим образом.
Пример изменения цвета текста-заполнителя:
<голова>
Название документа
<стиль>
вход {
ширина: 90%;
отступ: 10 пикселей;
поле: 5px;
контур: нет;
}
ввод[тип="отправить"] {
ширина: 150 пикселей;
}
ввод:: заполнитель {
цвет: #1c87c9;
непрозрачность: 1;
}
ввод: показанный заполнитель {
граница: 1px сплошная #095484;
}
стиль>
голова>
<тело>


1
3s ease;}
.input1:-ms-input-placeholder {opacity: 1; transition: opacity 0.3s ease;}
.input1:focus::-webkit-input-placeholder {opacity: 0; transition: opacity 0.3s ease;}
.input1:focus::-moz-placeholder {opacity: 0; transition: opacity 0.3s ease;}
.input1:focus:-moz-placeholder {opacity: 0; transition: opacity 0.3s ease;}
.input1:focus:-ms-input-placeholder {opacity: 0; transition: opacity 0.3s ease;}
/* сдвиг placeholder-а вправо при фокусе*/
.input2::-webkit-input-placeholder {text-indent: 0px; transition: text-indent 0.3s ease;}
.input2::-moz-placeholder {text-indent: 0px; transition: text-indent 0.3s ease;}
.input2:-moz-placeholder {text-indent: 0px; transition: text-indent 0.3s ease;}
.input2:-ms-input-placeholder {text-indent: 0px; transition: text-indent 0.3s ease;}
.input2:focus::-webkit-input-placeholder {text-indent: 500px; transition: text-indent 0.3s ease;}
.input2:focus::-moz-placeholder {text-indent: 500px; transition: text-indent 0.
5s ease;}
com