Атрибут ::placeholder CSS | CSS
Псевдоэлемент ::placeholder color (в некоторых случаях псевдокласс) позволяет задать текстовое наполнение элемента формы. Он устанавливается при помощи атрибута placeholder: <input type=»email» placeholder=»[email protected]»>.
Этот текст можно стилизовать для большинства современных браузеров с помощью специальных префиксов:
::-webkit-input-placeholder { /* Chrome/Opera/Safari */ color: pink; } ::-moz-placeholder { /* Firefox 19+ */ color: pink; } :-ms-input-placeholder { /* IE 10+ */ color: pink; } :-moz-placeholder { /* Firefox 18- */ color: pink; }
Предупреждение: это нестандартный синтаксис, с этим связаны и странные названия. :placeholder-shown – это стандарт, и даже авторы спецификации, вероятно, думают, что ::placeholder стандартизирован.
Как и в случае с любым псевдоэлементом, его вы можно применять к определенным элементам следующим образом:
input[type="email"].big-dog::-webkit-input-placeholder { color: orange; }
- Разница между :placeholder-shown и ::placeholder
- Элемент или класс?
- Цвет заглушки в Firefox
- Поддержка стилей
- Дополнительные ресурсы
- Браузерная поддержка
:placeholder-shown предназначен для выделения формы ввода, а CSS placeholder color отвечает за стилизацию текста.
Взгляните на диаграмму:
Оказалось, что многих это сбивает с толку, и я часто вижу спецификацию, где есть :placeholder-shown, но отсутствует ::placeholder.
Нужно отметить, что :placeholder-shown может влиять на стилизацию текста, так как является для него родительским элементом (например, можно изменять font-size).
Обратите внимание: :placeholder-shown – псевдокласс (элемент в конкретном состоянии), а ::placeholder – это псевдоэлемент (видимая часть, которая находится не в DOM). Отличаются они одинарными и дойными кавычками.
Так как :placeholder-shown является псевдоклассом, то он должен выделять существующий элемент. И поэтому выделяет форму ввода, когда текст в элементе формы отображается. Псевдоэлемент ::placeholder оборачивает сам текст заглушки.
В этом плане input placeholder color не стандартизирован. Это значит, что у каждого браузера своё понимание того, как это должно работать.
Изначально этот псевдокласс был внедрён в браузер Firefox. Этот псевдокласс даёт не так уж много пространства для манёвра. Например, если нужно изменить цвет текста при выделении формы ввода, потребуется использовать селектор типа input:focus::placeholder. А псевдокласс не позволяет этого сделать.
IE10 поддерживает этот функционал в качестве псевдокласса, а не элемента. Во всех остальных браузерах он расценивается как псевдоэлемент.
Вы заметили, что цвет заглушек выглядит более тусклым по сравнению с другими браузерами. На картинке, приведенной ниже, слева показан Firefox 43, а справа — Chrome 47:
Так происходит потому, что по умолчанию все «заглушки» в Firefox получают дополнительное значение прозрачности. Чтобы избавиться от этого эффекта, нам понадобится следующая строка кода:
::-moz-placeholder { opacity: 1; }
Попробуйте открыть это демо в браузере Firefox.
Псевдоэлемент поддерживает следующие свойства:
- font properties;
- color;
- background properties;
- word-spacing;
- letter-spacing;
- text-decoration;
- vertical-align;
- text-transform;
- line-height;
- text-indent;
- opacity;
Документация MDN
Документация IE
Развёрнутая статья на блоге Treehouse
Здесь имеется в виду как нативная поддержка CSS input placeholder color, так и поддержка, реализуемая с помощью префиксов.
Chrome | Safari | Firefox | Opera | IE | Android | iOS |
4+ | 5+ | 4+ | 15+ | 10+ | Любой | Любой |
Firefox поддерживает псевдоклассы до 18 версии.
Валентин Сейидовавтор-переводчик статьи «::placeholder»
::placeholder ⚡️ HTML и CSS с примерами кода
С помощью псевдоэлемента ::placeholder
задаётся стилевое оформление подсказывающего текста, созданного атрибутом placeholder
.
Допускается использовать свойства для изменения вида текста, например, задать шрифт и цвет.
Псевдо-элементы- ::after
- ::backdrop
- ::before
::cue
- ::first-letter
- ::first-line
::grammar-error
::marker
::part()
- ::placeholder
- ::selection
::slotted()
::spelling-error
Синтаксис
::placeholder { color: blue; font-size: 1.5em; }
Спецификация
- CSS Pseudo-Elements Level 4
Примечания
- Internet Explorer использует псевдокласс
:-ms-input-placeholder
. - Microsoft Edge использует псевдоэлемент
::-ms-input-placeholder
. - Chrome, до версии 57, Opera до версии 44, Safari до версии 10.1 и Android используют псевдоэлемент
::-webkit-input-placeholder
. - Firefox с версии 4 и до 19 использует псевдокласс
. - Firefox до версии 51 использует псевдоэлемент
::-moz-placeholder
.
Пример 1
HTMLCSS
<input placeholder="Type something here!" />
input::placeholder { color: red; font-size: 1.2em; font-style: italic; }
Пример 2
<!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>
Результат:
См. также
:placeholder-shown
<input>
<textarea>
Ссылки
- Псевдо-элемент
::placeholder
MDN (рус.)
css — Как установить цвет текста «заполнитель»?
спросил
Изменено 8 лет назад
Просмотрено 143 тыс. раз
Можно ли установить цвет текста заполнителя
?
..">
- css
- html
- цвета
2
::-webkit-input-placeholder { /* Браузеры WebKit */ цвет: #999; } :-moz-placeholder { /* Mozilla Firefox с 4 по 18 */ цвет: #999; } ::-moz-placeholder { /* Mozilla Firefox 19+ */ цвет: #999; } :-ms-input-placeholder { /* Internet Explorer 10+ */ цвет: #999; }
Никому не нравятся ответы «обратитесь к этому ответу», но в этом случае это может помочь: изменить цвет заполнителя ввода HTML5 с помощью CSS
Поскольку он поддерживается только парой браузеров, вы можете попробовать подключаемый модуль jQuery (при условии, что вы можете\используете jQuery). Это позволяет вам стилизовать текст-заполнитель с помощью CSS, поскольку на самом деле это всего лишь трюк с обменом, который он делает с событиями фокуса.
Плагин не активируется в браузерах, которые его поддерживают, поэтому вы можете использовать CSS, ориентированный на chrome\firefox, и CSS плагина jQuery, чтобы поймать все остальное.
Плагин можно найти здесь: https://github.com/mathiasbynens/jquery-placeholder
Попробуйте это
textarea::-webkit-input-placeholder {color: #999;}
Чтобы задать цвет заполнителя, используйте следующие строки кода:
::-webkit-input-placeholder { color: red; } ::-moz-placeholder {цвет: красный; } :-ms-input-placeholder { цвет: красный; } :-o-input-placeholder { цвет: красный; }
2
# Попробуйте это: input[type="text"],textarea[type="text"]::-webkit-input-placeholder { цвет:#f51; } input[type="text"],textarea[type="text"]:-moz-placeholder { цвет:#f51; } input[type="text"],textarea[type="text"]::-moz-placeholder { цвет:#f51; } input[type="text"],textarea[type="text"]:-ms-input-placeholder { цвет:#f51; } ## Работает очень хорошо для меня.
Попробуйте это
input::-webkit-input-placeholder { /* Браузеры WebKit */ цвет: #f51; } input:-moz-placeholder { /* Mozilla Firefox с 4 по 18 */ цвет: #f51; } input::-moz-placeholder { /* Mozilla Firefox 19+ */ цвет: #f51; } input:-ms-input-placeholder { /* Internet Explorer 10+ */ цвет: #f51; }
1
Для Firefox используйте:
input:-moz-placeholder { color: #aaa; } textarea:-moz-placeholder {цвет: #aaa;}
Для всех остальных браузеров (Chrome, IE, Safari) просто используйте:
. placeholder { color: #aaa; }
4
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google
Зарегистрироваться через Facebook
Зарегистрируйтесь, используя электронную почту и пароль
Опубликовать как гость
Электронная почта
Обязательно, но не отображается
Опубликовать как гость
Электронная почта
Требуется, но не отображается
Как изменить цвет заполнителя ввода HTML5 с помощью CSS
HTML5 имеет атрибут, называемый заполнителем. Этот атрибут, используемый в элементах и
В большинстве браузеров цвет текста-заполнителя по умолчанию светло-серый. Если вы хотите изменить его, вам нужно использовать псевдоэлемент ::placeholder.
Обратите внимание, что Firefox снижает непрозрачность заполнителя, поэтому используйте непрозрачность: 1; , чтобы исправить это.
Если вы хотите выбрать сам ввод, когда отображается его текст-заполнитель, используйте псевдокласс :placeholder-show .
Пример кода будет выглядеть следующим образом.
Пример изменения цвета текста-заполнителя:
<голова>Название документа <стиль> вход { ширина: 90%; отступ: 10 пикселей; поле: 5px; контур: нет; } ввод[тип="отправить"] { ширина: 150 пикселей; } ввод:: заполнитель { цвет: #1c87c9; непрозрачность: 1; } ввод: показанный заполнитель { граница: 1px сплошная #095484; } стиль> голова> <тело>