Стилизуем 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 ↓
531,221 views
Стилизуем 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 и добавлять префиксы.
Стилизуем placeholder при помощи CSS
Атрибут placeholder применяется для призыва к действию внутри пустых элементов input и textarea. В этой статье мы рассмотрим возможности стилизации текста placeholder-a, а также некоторые трюки, которые позволят сделать его более удобным и функциональным.
Итак, начнем с примера для тех, кто не знает, что такое placeholder.
<input type="text" placeholder="Оставьте сообщение здесь">
Стиль placeholder-a можно изменить с помощью такого набора 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 – псевдоэлементом.
Нужно сказать, что поддерживаются не все возможные 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. Такой синтаксис будет работать во всех новых браузерах.
input[placeholder] {text-overflow:ellipsis;}
input::-moz-placeholder {text-overflow:ellipsis;}
input:-moz-placeholder {text-overflow:ellipsis;}
input:-ms-input-placeholder {text-overflow:ellipsis;}
Как скрыть placeholder при фокусе?
Скрывание placeholder-а происходит по-разному.
- в некоторых браузерах при получении фокуса инпутом
- в других браузерах при наличии хотя бы одного введенного символа
Мне больше нравится первый вариант. Для того, чтобы задать такое поведение во всех браузерах, поддерживающих placeholder, определим следующие css правила:
:focus::-webkit-input-placeholder {color: transparent}
:focus::-moz-placeholder {color: transparent}
:focus:-moz-placeholder {color: transparent}
:focus:-ms-input-placeholder {color: transparent}
Скрываем placeholder красиво
/* плавное изменение прозрачности 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;}
Оригинал статьи был взят с сайта html5.by
- 2.86
- 1
- 2
- 3
- 4
- 5
Голосов: 1026 | Просмотров: 6467
Стилизация текста-заполнителя с помощью CSS
Используйте псевдоэлемент ::placeholder
для стилизации текста-заполнителя в элементе формы
или . Большинство современных браузеров поддерживают это, но для более старых браузеров потребуются префиксы поставщиков.
HTML
- Префиксы поставщиков
- Псевдоэлементы и псевдоклассы
- Firefox Placeholder Непрозрачность по умолчанию
- CSS-обработка недопустимых селекторов
- Supported Styles
- Accessibility Concerns
- Automatically Add Vendor-Prefixes
- Community Input
- Resources
Vendor Prefixes
So the syntax I used is supported by most modern browsers:
But for some browsers or более старые браузеры, вам нужно будет использовать префиксы поставщиков.
Ого! Я знаю, это огромный список. И вы можете заметить довольно много различных вариантов реализации. Итак, давайте разберем эти различия и поймем, что здесь происходит.
Псевдоэлемент против псевдокласса
Вы могли заметить, что я использую двойное двоеточие ::
. Это называется псевдоэлементом, и он был введен в 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 предполагают, что он действителен, не делая недействительным список селекторов.
Подробнее об этом читайте в статье Криса Койера «Один неверный псевдоселектор равен целому игнорируемому селектору» фон
свойства
цвет
шрифт
свойства интервал между буквами
высота строки
0004 Текстовое декорация
Текст-интент
Текст-трансформ
Вертикальный ALIGN
СКАЗАНИЯ
. СКАЗАНИЯ
. . Но мне нужно указать на кое-что действительно важное: текст-заполнитель не заменяет элемент метки,
!! Я грешил этим, когда впервые попал в веб-программирование 🙁. Когда ваша форма опирается исключительно на инструкции-заполнители без меток, это очень вредно для доступности. Доступность важна не только для того, чтобы сделать ваш веб-сайт доступным для всех, но и для улучшения взаимодействия с пользователем. И, в конечном итоге, создание лучшего веб-сайта или веб-приложения 💪 Вот действительно потрясающая статья о проблемах использования только заполнителей без каких-либо меток. Ниже приведены 3 верхних пункта:
- Поскольку текст-заполнитель исчезает в природе, он может напрягать кратковременную память вашего пользователя
- Без меток пользователи не могут проверить свою работу перед отправкой формы.
- Когда появляются сообщения об ошибках, люди не знают, как решить проблему.
Автоматическое добавление префиксов поставщиков
Если вы не хотите иметь дело со всеми префиксами поставщиков, вы можете использовать PostCSS с плагином Autoprefixer. Этот плагин будет анализировать ваш CSS и добавлять префиксы поставщиков.
- @edufurlongo: Также, используйте
непрозрачность: 1
, потому что большинство браузеров применяют альфа (обычно 0,5) к заполнителям
Ресурсы
- MDN Webs: Placeholder
-
-
- MDN Webs: Placeholder
-
-
- MDN Webs: Placeholder
-
-
- MDN. Хитрости: заполнитель
- CSS-трюки: один неверный псевдоселектор равен целому игнорируемому селектору
- Переполнение стека: изменение цвета заполнителя ввода HTML5 с помощью CSS
- Заполнители в полях формы вредны
::placeholder в CSS — Темы масштабирования
Обзор
Селекторы — это шаблоны в CSS, которые используются для выбора элементов, которые вы хотите стилизовать. Селектор CSS::placeholder — это псевдоэлемент, который позволяет выбирать компоненты с текстом-заполнителем и стилизовать их. Свойство заполнителя указывает подсказку, объясняющую предполагаемое значение поля ввода, которое используется для установки текста заполнителя . Эта статья CSS о цвете-заполнителе содержит синтаксис и примеры использования селектора CSS::placeholder.
Область применения статьи
В этом руководстве мы рассмотрим следующие темы:
- Сначала мы обсудим, что такое CSS-заполнитель и его синтаксис.
- Затем с помощью примеров мы рассмотрим его использование и различные способы его использования.
- В последнем мы увидим, как изменить цвет заполнителя и поддерживаемые им стили.
Введение
- В псевдоэлементе CSS селектор заполнителя используется для настройки текста-заполнителя путем изменения цвета текста и стиля текста. Псевдоэлемент ::first-line — это единственное подмножество свойства CSS, которое применимо и может использоваться в правиле с selector::placeholder.
-
- Селектор::placeholder создает компоненты формы с текстом-заполнителем и позволяет настраивать их. Текст заполнителя по умолчанию отображается прозрачным или светло-серым цветом для большинства браузеров.
- Свойство заполнителя задает подсказку, объясняющую предполагаемое значение поля ввода, которое используется для установки текста заполнителя.
Использование
- Если текст-заполнитель имеет достаточную цветовую контрастность, его можно считать печатным вводом. Текст-заполнитель также исчезнет, когда пользователь вставит содержимое в элемент. Оба эти фактора могут затруднить успешное заполнение формы, особенно для людей с когнитивными проблемами.
- Другой способ предоставления информации-заполнителя состоит в том, чтобы добавить ее за пределы ввода в непосредственной близости, а затем использовать aria-describedby для программной связи с ее предложением.
- Содержимое подсказки доступно в этой реализации, даже если информация вводится в поле ввода, и ввод появляется свободным от ранее существовавшего ввода при загрузке страницы. Большинство программ для чтения с экрана будет использовать aria-describedby для чтения подсказки после объявления текста метки ввода, и пользователь может отключить его, если сочтет дополнительную информацию ненужной.
- Атрибут aria-describedby содержит список идентификаторов элементов, описывающих объект. Он обеспечивает связь между виджетами или группами и поясняющим их текстом. Элементы управления формы — не единственные, которые могут использовать атрибут aria-described by. Его также можно использовать для связывания статического текста с виджетами, группами элементов, областями с заголовками, определениями и другими элементами.
Синтаксис:
::заполнитель {
// CSS-свойство
}
Пример: В этом примере мы рассмотрим, как использовать селектор the::placeholder для создания текста-заполнителя с атрибутом, указывающим подсказку, определяющую предполагаемое значение поля ввода.
<голова>
::селектор заполнителя
<стиль>
тело {
text-align: center /*Это выровняет текст тега body по центру*/
}
ввод:: заполнитель {
цвет фона: белый; /*Это применит белый цвет фона заполнителя*/
цвет: серый; /*Это установит серый цвет текста-заполнителя*/
выравнивание текста: по центру; /*Это выровняет текст заполнителя по центру*/
}
стиль>
голова>
<тело>
Селектор ::placeholder
имя пользователя:
пароль:
идентификатор электронной почты:
телефон:
<тип ввода="отправить">
тело>
Выход:
Примечание: Заполнитель предлагает предложение, объясняющее ожидаемое значение поля ввода. После ввода нужного значения стиль будет немедленно удален.
Поддерживаемые стили:
Псевдоэлемент поддерживает стиль этих свойств:
Свойства Описание вертикальное выравнивание: Свойство CSS vertical-align определяет, как компоненты на линии выравниваются друг с другом. color: Свойство CSS color используется для изменения цвета текста, фона веб-страницы и цвета границ. свойства фона: Свойство фона CSS используется для определения эффектов фона на элементе. Это сокращенное свойство, которое означает, что вы можете написать множество свойств CSS в одном. word-spacing: Это свойство CSS используется для указания расстояния между словами. Мы можем изменить расстояние между словами, используя эту функцию. Большое отрицательное или положительное значение интервала между словами сделает слово нечитаемым. Если мы используем очень большое положительное значение, мы увидим слова, которые выглядят как последовательность несвязанных и отдельных слов. Очень большое отрицательное значение приведет к перекрытию слов, что сделает слово узнаваемым. line-height: Свойство CSS line-height определяет наименьшую высоту строчных блоков внутри элемента. Он различает две линии вашего материала. Он указывает, сколько места осталось над и под встроенными элементами. text-decoration: Сокращенное свойство CSS text-decoration определяет, как декоративные линии отображаются в тексте. Он выделяет выделенный текст с помощью подчеркивания, надчеркивания, зачеркивания или комбинации строк. свойства шрифта: Свойство CSS Font используется для настройки внешнего вида текста. Вы можете изменить размер текста, цвет, стиль и многое другое, используя свойство шрифта CSS. text-transform: Свойство CSS text-transform описывает, как сделать текст элемента заглавным. Его можно использовать, чтобы текст выглядел полностью прописным, строчным или заглавным в каждом слове. letter-spacing: Свойство CSS letter-spacing определяет расстояние между буквами текста по горизонтали. При рендеринге текста это значение применяется к естественному промежутку между символами. Положительные значения межбуквенного интервала приводят к тому, что символы расходятся дальше друг от друга, тогда как отрицательные значения межбуквенного интервала сближают символы. text-indent: CSS-свойство text-indent определяет величину отступа перед строками текста в блоке. opacity: CSS-атрибут opacity определяет прозрачность элемента. Непрозрачность — это степень, в которой скрыто содержимое позади элемента, и это обратная сторона прозрачности.
Как изменить цвет заполнителя CSS?
Шаг 1) Вставка HTML:
Вставка элемента ввода с атрибутом заполнителя.
Шаг 2) Включить CSS:
В большинстве браузеров текст-заполнитель отображается серым цветом. Чтобы изменить это, используйте селектор non-standard::placeholder для стиля заполнителя. Так как Firefox присваивает более низкую непрозрачность заполнителю, мы используем opacity: 1 для компенсации.
Пример 1: В этом примере мы обсудим, как использовать селектор the::placeholder для разных браузеров, поскольку совместимость селектора заполнителя различается для разных браузеров.
<голова>
<стиль>
::заполнитель {
Цвет синий;
непрозрачность: 1; /* Fire Fox */
}
:-ms-input-placeholder { /* Internet Explorer 10-11 */
цвет синий;
}
::-ms-input-placeholder { /* Microsoft Edge */
цвет синий;
}
стиль>
голова>
<тело>
Изменить цвет заполнителя:
.">
тело>
Выход:
Примечание: Текст заполнителя по умолчанию светло-серый в большинстве браузеров.
Пример 2: В этом примере мы собираемся задать стиль заполнителя по умолчанию для входного тега. Вы можете изменить свойства текста-заполнителя и сделать его более привлекательным для пользователя.
<голова>
<стиль>
::заполнитель {
Цвет синий; /*Применяет синий цвет к тексту*/
непрозрачность: 1; /*Свойство Opacity установлено в 1, т.е. текст будет хорошо виден*/
размер шрифта: 1.2em; /*Используется для изменения размера шрифта*/
семейство шрифтов: курсив; /*Используется для изменения стиля шрифта*/
}
стиль>
голова>
<тело>
Изменить цвет заполнителя:
тело>
Выход:
Проблемы с доступностью заполнителей
Следует отметить, что текст заполнителя часто недоступен . Хотя программное обеспечение специальных возможностей и современные браузеры улучшаются, предстоит еще долгий путь. Ниже приведены три наиболее серьезные проблемы с доступностью:
- Светло-серый цвет текста-заполнителя по умолчанию плохо контрастирует с большинством фонов. Плохая цветовая контрастность затрудняет чтение текста слабовидящими людьми. Это сложная проблема, потому что не все браузеры позволяют изменять текст-заполнитель с помощью CSS.
- Пользователи с когнитивными или двигательными ограничениями испытывают более серьезные трудности. Как мы видели, заполнители могут быть проблематичными для всех пользователей: исчезновение заполнителей увеличивает нагрузку на память; постоянные затемняемые заполнители вызывают путаницу, потому что они кажутся кликабельными, но на самом деле ими не являются; а заполнители, которые не исчезают, требуют дополнительного ввода с клавиатуры или мыши для удаления. Эти проблемы усугубляются для тех, у кого есть когнитивные или двигательные ограничения.
- Некоторые программы чтения с экрана могут не читать вслух текст-заполнитель. Если их программное обеспечение не озвучивает заполнитель, слепые или слабовидящие пользователи могут полностью пропустить подсказку.
Совместимость с браузерами
Селектор CSS ::placeholder на базовом уровне поддерживается следующими браузерами:
- Google Chrome 4.0
- Microsoft Edge 10.0
- Firefox 4.0
- Сафари 5.0
- Опера 15.0
Примечание: За исключением Internet Explorer, все основные браузеры поддерживают атрибут заполнителя.
Заключение
- Текст-заполнитель элемента формы можно настроить с помощью псевдоэлемента ::placeholder (или, в некоторых случаях, псевдокласса, в зависимости от реализации браузера). Как и любой псевдоэлемент, вы можете при необходимости ограничить его определенными элементами.
- В этой статье были рассмотрены основы селектора CSS::placeholder и способы использования CSS::placeholder с примерами. Теперь вы готовы использовать селектор ::placeholder как профессионал CSS !
Стилизация текста-заполнителя HTML5 с помощью CSS [input and textarea]
До HTML5 существовал XHTML1, а до него — HTML4. Заполнители, какими мы их знаем сегодня, были в XHTML1 и HTML4, смоделированные с помощью JavaScript. Стилизовать эти смоделированные заполнители было легко, потому что они на самом деле были входными значениями. Теперь, когда заполнители интегрированы в HTML5, эти заполнители JavaScript являются излишними, но стилизация этих заполнителей HTML5 стала намного сложнее, чем стилизация заполнителей JavaScript, особенно если вы хотите, чтобы стили заполнителей HTML5 применялись в разных браузерах. Этот учебник покажет вам, как именно стилизовать текст-заполнитель HTML5, используя только CSS, для обоих элементов ввода как элементов textarea. Прежде чем использовать какой-либо из приведенных ниже фрагментов кода, важно знать, что основные браузеры, такие как Chrome, FireFox, Safari, Opera и Internet Explorer/Edge, используют разные шаблоны для стилизации заполнителей ввода и заполнителей текстовой области.
Создайте поле ввода HTML5 и текстовую область с заполнителем
Давайте сначала покажем разметку HTML5, необходимую для создания поля ввода и поля текстовой области, которые содержат текст-заполнитель. В обоих приведенных ниже полях будет текст примера заполнителя, к которому будет применен стиль браузера по умолчанию, предоставляемый используемым вами браузером:
Введите HTML:
Textarea HTML:
Стилизация текста-заполнителя HTML5 с помощью CSS
Как было сказано ранее, каждый из основных браузеров использует разные шаблоны для стилизации ввода и заполнителей текстовой области. Поэтому нам нужно создать отдельное правило CSS для каждого браузера. У вас есть выбор: настроить таргетинг на все заполнители на вашем веб-сайте одновременно, только на определенные элементы, только на определенные элементы формы, только на определенные типы ввода, только на те входные данные, которые содержат заполнитель, только на целевые элементы, содержащие определенный класс, или только на таргетинг элементы, содержащие определенный идентификатор. Ниже вы найдете правила CSS для всех различных вариантов таргетинга:
Цель каждый текст заполнителя:
::-webkit-input-placeholder { /* WebKit, Blink, Edge */
цвет: #123456;
}
:-moz-placeholder { /* Mozilla Firefox с 4 по 18 */
цвет: #123456;
непрозрачность: 1;
}
::-moz-placeholder { /* Mozilla Firefox 19+ */
цвет: #123456;
непрозрачность: 1;
}
:-ms-input-placeholder { /* Internet Explorer 10-11 */
цвет: #123456;
}
:placeholder-show { /* Стандартный псевдокласс */
цвет: #123456;
}
Цель каждый ввод текст-заполнитель:
input::-webkit-input-placeholder { /* WebKit, Blink, Edge */
цвет: #123456;
}
input:-moz-placeholder { /* Mozilla Firefox с 4 по 18 */
цвет: #123456;
непрозрачность: 1;
}
input::-moz-placeholder { /* Mozilla Firefox 19+ */
цвет: #123456;
непрозрачность: 1;
}
input:-ms-input-placeholder { /* Internet Explorer 10-11 */
цвет: #123456;
}
input:placeholder-show { /* Стандартный псевдокласс */
цвет: #123456;
}
Цель для каждой текстовой области текст заполнителя:
textarea::-webkit-input-placeholder { /* WebKit, Blink, Edge */
цвет: #123456;
}
textarea:-moz-placeholder { /* Mozilla Firefox с 4 по 18 */
цвет: #123456;
непрозрачность: 1;
}
textarea::-moz-placeholder { /* Mozilla Firefox 19+ */
цвет: #123456;
непрозрачность: 1;
}
textarea:-ms-input-placeholder { /* Internet Explorer 10-11 */
цвет: #123456;
}
textarea:placeholder-show { /* Стандартный псевдокласс */
цвет: #123456;
}
Целевые тексты-заполнители из все входные данные определенного типа :
input[type="text"]::-webkit-input-placeholder { /* WebKit, Blink, Edge */
цвет: #123456;
}
input[type="text"]:-moz-placeholder { /* Mozilla Firefox с 4 по 18 */
цвет: #123456;
непрозрачность: 1;
}
input[type="text"]::-moz-placeholder { /* Mozilla Firefox 19+ */
цвет: #123456;
непрозрачность: 1;
}
input[type="text"]:-ms-input-placeholder { /* Internet Explorer 10-11 */
цвет: #123456;
}
input[type="text"]:placeholder-show { /* Стандартный псевдокласс */
цвет: #123456;
}
Целевые тексты-заполнители из всех входных данных , которые имеют атрибут-заполнитель :
input[placeholder]::-webkit-input-placeholder { /* WebKit, Blink, Edge */
цвет: #123456;
}
input[placeholder]:-moz-placeholder { /* Mozilla Firefox с 4 по 18 */
цвет: #123456;
непрозрачность: 1;
}
input[placeholder]::-moz-placeholder { /* Mozilla Firefox 19+ */
цвет: #123456;
непрозрачность: 1;
}
input[placeholder]:-ms-input-placeholder { /* Internet Explorer 10-11 */
цвет: #123456;
}
input[placeholder]:placeholder-show { /* Стандартный псевдокласс */
цвет: #123456;
}
Цель элементов формы с определенным классом (класс в этом примере: «имя класса»):
. classname::-webkit-input-placeholder { /* WebKit, Blink, Edge */
цвет: #123456;
}
.classname:-moz-placeholder { /* Mozilla Firefox с 4 по 18 */
цвет: #123456;
непрозрачность: 1;
}
.classname::-moz-placeholder { /* Mozilla Firefox 19+ */
цвет: #123456;
непрозрачность: 1;
}
.classname:-ms-input-placeholder { /* Internet Explorer 10-11 */
цвет: #123456;
}
.classname:placeholder-show { /* Стандартный псевдокласс */
цвет: #123456;
}
Целевые элементов формы с определенным идентификатором (идентификатор в этом примере: «idname»):
#idname::-webkit-input-placeholder { /* WebKit, Blink, Edge */
цвет: #123456;
}
#idname:-moz-placeholder { /* Mozilla Firefox с 4 по 18 */
цвет: #123456;
непрозрачность: 1;
}
#idname::-moz-placeholder { /* Mozilla Firefox 19+ */
цвет: #123456;
непрозрачность: 1;
}
#idname:-ms-input-placeholder { /* Internet Explorer 10-11 */
цвет: #123456;
}
#idname:placeholder-show { /* Стандартный псевдокласс */
цвет: #123456;
}
Приведенные выше правила CSS показывают, что существует два способа нацеливания на вводимые тексты и текстовые поля-заполнители: с помощью псевдоэлементов (::) и псевдоклассов (:). Различные основные браузеры поддерживают псевдоэлементы или псевдоклассы, но они никогда не поддерживают и то, и другое, что делает важным использование каждого из приведенных выше правил CSS для применения желаемых стилей в каждом браузере. Список поддерживаемых свойств CSS для псевдо- элементы становятся все больше и больше, они перечислены ниже. Имейте в виду, что приведенные ниже свойства CSS в основном не работают с псевдоклассами, потому что псевдоклассы просто не поддерживают многие свойства CSS.
Поддерживаемые свойства CSS для заполнителей
Следующие свойства CSS для псевдоэлементов (::) поддерживаются большинством основных браузеров:
- цвет
- межсловный интервал
- межбуквенный интервал
- вертикальное выравнивание
- высота строки
- padding-свойства
- свойства шрифта
- свойства текста
- свойства границ
- свойства фона
- свойства позиции
- свойства преобразования
- opacity — FireFox автоматически уменьшает непрозрачность заполнителя, поэтому вам нужно добавить opacity:1; (как вы можете видеть в приведенных выше примерах).
Важно! Также стилизуйте тексты ввода и текстовой области, а не только заполнители. Как только вы начнете вводить текст в поле ввода или текстовой области, появится текст ввода/текстовой области, и к этим текстам будут применены стили браузера по умолчанию. Поэтому всегда убедитесь, что вы сначала стилизуете обычный текст ввода и текстовую область, а затем стилизуете заполнители. Например:
ввод, текстовая область{
цвет: #123456; /* Это добавит цвет к тексту ввода и текстовой области */
}
::-webkit-input-placeholder { /* WebKit, Blink, Edge */
цвет: #123456;
}
:-moz-placeholder { /* Mozilla Firefox с 4 по 18 */
цвет: #123456;
непрозрачность: 1;
}
::-moz-placeholder { /* Mozilla Firefox 19+ */
цвет: #123456;
непрозрачность: 1;
}
:-ms-input-placeholder { /* Internet Explorer 10-11 */
цвет: #123456;
}
:placeholder-show { /* Стандартный псевдокласс */
цвет: #123456;
}
Заполнитель слишком велик для поля ввода?
Заполнители могут быть слишком большими для поля ввода (ширина ввода слишком мала для текста заполнителя). Это может произойти с полями ввода по умолчанию, а также когда макет нарушает адаптивное поведение, а ширина полей ввода уменьшается, что приводит к тому, что текст-заполнитель больше, чем ширина ввода. Чтобы решить эту проблему, убедитесь, что вы добавили text-overflow:ellipsis; к тексту-заполнителю, чтобы часть текста-заполнителя, которая не помещается в поле ввода, была обрезана. Используйте следующие правила CSS, чтобы применить это:
::-webkit-input-placeholder { /* WebKit, Blink, Edge */
переполнение текста: многоточие;
}
:-moz-placeholder { /* Mozilla Firefox с 4 по 18 */
переполнение текста: многоточие;
}
::-moz-placeholder { /* Mozilla Firefox 19+ */
переполнение текста: многоточие;
}
:-ms-input-placeholder { /* Internet Explorer 10-11 */
переполнение текста: многоточие;
}
:placeholder-show { /* Стандартный псевдокласс */
переполнение текста: многоточие;
}
Отключение заполнителя при нажатии (фокусе) на поле ввода или текстовой области
По умолчанию тексты-заполнители, когда вы щелкаете/сосредотачиваетесь на поле ввода/текстовой области, таковы, что тексты-заполнители остаются видимыми до тех пор, пока вы не начнете печатать. Чтобы убедиться, что текст заполнителя исчезает, как только вы нажмете/сосредоточитесь на вводе или текстовой области, сделайте цвет текста заполнителя прозрачным. Следующие правила CSS полностью скроют текст заполнителя при фокусе/щелчке:
::-webkit-input-placeholder { /* WebKit, Blink, Edge */
цвет: прозрачный;
}
:-moz-placeholder { /* Mozilla Firefox с 4 по 18 */
цвет: прозрачный;
}
::-moz-placeholder { /* Mozilla Firefox 19+ */
цвет: прозрачный;
}
:-ms-input-placeholder { /* Internet Explorer 10-11 */
цвет: прозрачный;
}
:placeholder-show { /* Стандартный псевдокласс */
цвет: прозрачный;
}
Совместимость с браузерами-заполнителями
Заполнители HTML5 поддерживаются последними версиями всех основных браузеров. Приведенные ниже правила CSS предназначены для всех современных основных браузеров и максимально старых браузеров, но есть ограничения. Возьмем, к примеру, старые версии Internet Explorer (IE9 и старше), которые вообще не поддерживают заполнители, или старые версии Opera, которые не поддерживают селекторы CSS для заполнителей. Если вы убедитесь, что используете все следующие правила CSS, тексты-заполнители будут отлично смотреться во всех основных браузерах и в большинстве старых браузеров:
::-webkit-input-placeholder — WebKit, Blink, Edge
:-moz-placeholder — Mozilla Firefox 4–18
::-moz-placeholder — Mozilla Firefox 19+
:-ms-input-placeholder — Интернет Explorer 10-11
:placeholder-show — Стандартный псевдокласс
Некоторые браузеры уже поддерживают новые типы ввода HTML5, такие как «email», «url» или «tel». Не все браузеры поддерживают эти новые типы ввода, и если они их не поддерживают, эти типы ввода будут автоматически преобразованы в тип ввода «текст». Среди браузеров, которые поддерживают эти новые типы ввода HTML5, есть браузеры, которые поддерживают эти типы ввода, но добавляют некоторый дополнительный CSS по умолчанию, который будет отображать эти вводы странным образом.