Стилизуем Placeholder с помощью CSS
Используйте псевдоэлемент ::placeholder
для стилизации дефолтного текста в элементе input
или textarea
. Большинство современных браузеров поддерживают это, но для старых браузеров требуются префиксы.
::placeholder { color: deeppink; font-size: 5rem; text-transform: uppercase; }
HTML
Префиксы
Используемый мной синтаксис поддерживается большинством современных браузеров:
::placeholder { color: deeppink; }
Но для более старых браузеров вам нужно будет использовать префиксы поставщика.
/* WebKit, Edge */ ::-webkit-input-placeholder { color: deeppink; } /* Firefox 4-18 */ :-moz-placeholder { color: deeppink; opacity: 1; } /* Firefox 19+ */ ::-moz-placeholder { color: deeppink; opacity: 1; } /* IE 10-11 */ :-ms-input-placeholder { color: deeppink; } /* Edge */ ::-ms-input-placeholder { color: deeppink; } /* MODERN BROWSER */ ::placeholder { color: deeppink; }
Вау! Я знаю, это огромный список. И вы можете заметить довольно много разных вариантов реализации. Итак, давайте разберем эти различия и поймем, что здесь происходит.
Псевдоэлемент против псевдокласса
Вы можете заметить, что я использую двойное двоеточие ::
. Это называется псевдоэлементом и было введено в CSS3. Если бы мы использовали одно двоеточие :
, это назвали бы псевдоклассом.
Поскольку псевдоэлемент, ::
был представлен в CSS3, а не в более ранних версиях CSS, некоторые старые браузеры, такие как Internet Explorer, просто никогда не поддерживали его. Принимая во внимание, что псевдокласс, :
был представлен ранее (в CSS1 и CSS2). Вот почему гораздо больше браузеров, включая Internet Explorer, поддерживают его.
Следовательно, в нашем ::placeholder
префиксе поставщика вы будете использовать смесь псевдокласса и псевдоэлемента.
Непрозрачность Placeholder в Firefox по умолчанию
Хорошо, с чем это связано opacity: 1
для Firefox. Это потому, что по умолчанию для placeholder Firefox применяется значение непрозрачности. Таким образом, чтобы переопределить это, мы должны установить его принудительно. Таким образом, наш placeholder будет отображаться и не будет иметь блеклого внешнего вида по умолчанию.
CSS-обработка неверных селекторов
Таким образом, вы также можете подумать, почему мы не просто сгруппировали все префиксы вендоров вместе как в примере ниже:
::-moz-placeholder, /* Firefox 19+ */ :-moz-placeholder /* Firefox 4-18 */ { color: deeppink; opacity: 1; }
Ну, это потому, что в CSS3 было правило, которое гласит:
группа селекторов, содержащая недопустимый селектор, недействительна.
Давайте посмотрим на пример, чтобы увидеть, что это значит. Вот правильный CSS-селектор
h2 { color: blue; }
Так что в нашем HTML это будет выглядеть как ожидалось
Но что произойдет, если мы добавим неверный селектор CSS
h2, /* valid */ h3::poop /* invalid */ { color: blue; }
Так как в группе есть недопустимый селектор CSS. Вся группа будет считаться недействительной, и стилизация не будет применена.
Вот почему нам нужны отдельные правила для каждого браузера. В противном случае вся группа будет игнорироваться всеми браузерами.
⭐️ НО! похоже, это можно изменить в CSS4.
Как правило, если в цепочке или группе селекторов присутствует недопустимый псевдоэлемент или псевдокласс, весь список селекторов является недействительным. Если псевдоэлемент (но не псевдокласс) имеет префикс -webkit-, то по состоянию на Firefox 63 браузеры Blink, Webkit и Gecko предполагают, что он действителен, не аннулирует список выбора.
Подробнее об этом читайте в статье Криса Койера «Один неверный псевдо-селектор равен целому игнорируемому селектору»
Поддерживаемые стили
Вот список всех стилей, которые вы можете применить к вашему placeholder:
background
свойстваcolor
font
свойстваletter-spacing
line-height
opacity
text-decoration
text-indent
text-transform
vertical-align
word-spacing
Проблемы доступности
Способность стилизовать заполнители — это круто. Но мне нужно отметить кое-что действительно важное — текст-заполнитель не заменяет элемент метки
!! Я был виновен в этом, когда впервые попал в веб-программирование 🙁. Когда ваша форма основана исключительно на инструкциях-заполнителях без меток, это очень вредно для доступности. Доступность важна не только для того, чтобы сделать ваш веб-сайт доступным для всех, но и для повышения удобства работы пользователей. И, в конечном итоге, создание лучшего сайта или веб-приложения.
Вот действительно потрясающая статья о том, как использовать заполнители без каких-либо меток. Ниже приведены три основных тезиса:
- Поскольку placeholder исчезает в при вводе, он может напрягать кратковременную память вашего пользователя
- Без label пользователи не могут проверить свою работу перед отправкой формы.
- Когда появляются сообщения об ошибках, люди не знают, как решить проблему.
Автоматически добавлять Vendor-префиксы
Если вы не хотите иметь дело со всеми префиксами вендоров, вы можете использовать PostCSS с плагином Autoprefixer . Этот плагин будет анализировать ваш CSS и добавлять префиксы.
HTML/Атрибут placeholder (Элемент textarea)
Синтаксис
<textarea placeholder="[значение]"> ... </textarea>
Описание
Атрибут / параметр placeholder
(от англ. «placeholder» ‒ «заполнитель») указывает краткую подсказку (слово или короткую фразу), предназначенную для помощи пользователю с вводом данных. Краткая подсказка отображается в элементе формы в случае, когда этот элемент не имеет значения. При этом подсказка может быть образцом вводимого значения или кратким описанием ожидаемого формата вводимых данных.
Примечание
- Как правило, браузеры отображают текст подсказки серым цветом для того, чтобы пользователь мог без особого труда отличить текст подсказки от текста относящегося к значению элемента;
- Для указания более длинной подсказки или другого поясняющего текста, рекомендуется размещать такой текст рядом с текстовым полем.
Поддержка браузерами
Chrome
Поддерж.
Firefox
Поддерж.
Opera
Поддерж.
Maxthon
Поддерж.
IExplorer
Поддерж.
Safari
Поддерж.
iOS
Поддерж.
Android
Поддерж.
Спецификация
Верс. | Раздел |
---|---|
HTML | |
2.0 | |
3.2 | |
4.01 | |
5.0 | The placeholder attribute… |
5.1 | 4.10.11. The textarea element The placeholder attribute. ![]() |
XHTML | |
1.0 | |
1.1 |
Значения
В качестве значения данного атрибута указывается текст краткой подсказки.
Пример использования
Листинг кода
<!DOCTYPE html>
<html>
<head>
<meta charset=»utf-8″>
<title>Параметр placeholder (Элемент textarea)</title>
<body>
<h2>Пример использования атрибута «placeholder»</h2>
<textarea rows=»5″ cols=»50″ placeholder=»Поле для ввода многострочного текста»>
</textarea>
</body>
</html>
Параметр placeholder (Элемент textarea)
html — изменить цвет текста заполнителя текстовой области
спросил
Изменено 16 дней назад
Просмотрено 95 тысяч раз
Я знаю, что есть этот пост об изменении текста-заполнителя. Я попытался внедрить в свои теги textarea
textarea::-webkit-input-placeholder { цвет: #fff; } textarea:-moz-placeholder { /* Firefox 18- */ цвет: #fff; } textarea::-moz-placeholder { /* Firefox 19+ */ цвет: #fff; } textarea:-ms-input-placeholder { цвет: #fff; }
но ничего не делает. Что мне не хватает?
Вот как выглядит одно из моих textarea
- HTML
- CSS
3
Для современных браузеров используйте только псевдоэлемент ::placeholder:
textarea::placeholder { цвет: #0bf; }
Устаревшие и современные браузеры:
textarea:-moz-placeholder, /* Firefox 18- */ textarea::-moz-placeholder, /* Firefox 19+ */ textarea:-ms-input-placeholder, /* IE 10+ */ textarea::-webkit-input-placeholder, /* на основе Webkit */ textarea::placeholder { /* Современные браузеры */ цвет: #0bf; }
Что касается вашего кода, заключите его в кавычки:
onchange="{(e) => this.props.handleUpdateQuestion(e, firstQuestion.Id)} "
1
Я не уверен, но думаю, что сейчас нет необходимости использовать префиксы.
textarea::placeholder { цвет: #fff; }
2
::-webkit-input-placeholder { оранжевый цвет; } :-moz-placeholder { /* До Firefox 18, устарело в Firefox 19*/ оранжевый цвет; } ::-moz-placeholder { /* Firefox 19+ */ оранжевый цвет; } :-ms-ввод-заполнитель { оранжевый цвет; }
Зарегистрируйтесь или войдите в систему
Зарегистрируйтесь с помощью Google
Зарегистрироваться через Facebook
Зарегистрируйтесь, используя адрес электронной почты и пароль
Опубликовать как гость
Электронная почта
Требуется, но никогда не отображается
Опубликовать как гость
Электронная почта
Требуется, но не отображается
Стилизация текста-заполнителя с помощью CSS
Используйте псевдоэлемент ::placeholder
для стилизации текста-заполнителя в элементе формы
или
. Большинство современных браузеров поддерживают это, но для более старых браузеров потребуются префиксы поставщиков.
HTML
- Префиксы поставщиков
- Псевдоэлементы и псевдоклассы
- Непрозрачность заполнителя Firefox по умолчанию
- Обработка недопустимых селекторов CSS
- Поддерживаемые стили0024
- Вопросы доступности
- Автоматическое добавление префиксов поставщиков
- Вклад сообщества
- Ресурсы
Префиксы поставщиков
Таким образом, синтаксис, который я использовал, поддерживается большинством современных браузеров:
использовать префиксы поставщиков.Ого! Я знаю, это огромный список. И вы можете заметить довольно много различных вариантов реализации. Итак, давайте разберем эти различия и поймем, что здесь происходит.
Псевдоэлемент против псевдокласса
Вы могли заметить, что я использую двойное двоеточие ::
. Это называется псевдоэлементом, и он был введен в CSS3. Если бы мы использовали одно двоеточие
:
, это было бы псевдоклассом.
Поскольку псевдоэлемент ::
был представлен в CSS3, а не в более ранних версиях CSS, некоторые старые браузеры, такие как Internet Explorer, просто никогда не поддерживали его. В то время как псевдокласс :
был введен ранее (в CSS1 и CSS2). Вот почему его поддерживает гораздо больше браузеров, включая Internet Explorer.
Таким образом, в нашем префиксе поставщика ::placeholder
вы будете использовать смесь псевдокласса и псевдоэлемента.
Firefox Placeholder Непрозрачность по умолчанию
Хорошо, что там с непрозрачностью : 1
для Firefox. Это потому, что по умолчанию к заполнителям Firefox применяется значение непрозрачности. Итак, чтобы переопределить это, нам нужно установить его. Таким образом, наш текст-заполнитель будет отображаться и не будет выглядеть блеклым, как в настройках Firefox по умолчанию.
CSS-обработка недопустимых селекторов
Итак, вы также можете подумать, почему мы просто не сгруппировали все префиксы поставщиков вместе следующим образом:
Ну, это потому, что в CSS3 было правило, которое гласит:
группа селекторов, содержащих недопустимый селектор, является недопустимым.
![]()
Давайте рассмотрим пример, чтобы понять, что это значит. Вот допустимый селектор CSS
Таким образом, в нашем HTML это будет выглядеть так, как ожидалось
Но что произойдет, если мы добавим недопустимый селектор CSS
Так как в группе есть недопустимый селектор CSS. Вся группа будет считаться недействительной, и стиль не будет применяться.
Поэтому нужны отдельные правила для каждого браузера. В противном случае вся группа будет игнорироваться всеми браузерами.
⭐️ НО! похоже, это можно изменить в CSS4.
Как правило, если в цепочке или группе селекторов есть недопустимый псевдоэлемент или псевдокласс, весь список селекторов недействителен. Если псевдоэлемент (но не псевдокласс) имеет префикс -webkit-, начиная с Firefox 63, браузеры Blink, Webkit и Gecko предполагают, что он действителен, не делая недействительным список селекторов.
Подробнее об этом читайте в статье Криса Койера «Один неверный псевдоселектор равен целому игнорируемому селектору» фон
свойства
цвет
шрифт
свойства интервал между буквами
высота строки
0018
text-decoration
text-indent
text-transform
vertical-align
word-spacing
Accessibility Concerns
Being able to style placeholders is awesome . Но мне нужно указать на кое-что действительно важное: текст-заполнитель не заменяет элемент метки,
!! Я грешил этим, когда впервые попал в веб-программирование 🙁. Когда ваша форма опирается исключительно на инструкции-заполнители без меток, это очень вредно для доступности. Доступность важна не только для того, чтобы сделать ваш веб-сайт доступным для всех, но и для улучшения взаимодействия с пользователем. И, в конечном итоге, создание лучшего веб-сайта или веб-приложения 💪
Вот действительно потрясающая статья о проблемах использования только заполнителей без каких-либо меток. Ниже приведены 3 верхних пункта:
- Поскольку текст-заполнитель исчезает в природе, он может напрягать кратковременную память вашего пользователя
- Без меток пользователи не могут проверить свою работу перед отправкой формы.
- Когда появляются сообщения об ошибках, люди не знают, как решить проблему.
Автоматическое добавление префиксов поставщиков
Если вы не хотите иметь дело со всеми префиксами поставщиков, вы можете использовать PostCSS с плагином Autoprefixer.