Стилизация placeholder
В HTML5 есть замечательный атрибут — placeholder (текст-подсказка для элементов ввода). Задается он следующим образом:
<input type=«text» placeholder=«type here some text» />
Обычно этот текст отображается серым цветом, но мы можем стилизовать этот текст с помощью CSS. Данный прием будет работать в Google Chrome, Safari и Firefox. Opera пока не позволяет задавать для него стили, а IE не поддерживает его вовсе.
CSS правила для webkit и mozilla:
input::-webkit-input-placeholder {}
input:-moz-placeholder {}
Только имейте ввиду, что нельзя совмещать эти селекторы в один, и если вы напишете:
input:-moz-placeholder,
input::-webkit-input-placeholder { }
То CSS правила не будут работать. И обратите внимание, что для webkit надо писать два двоеточия а для mozilla — одно.
Еще несколько примеров:
/* стили для webkit */ #field2::-webkit-input-placeholder { color:#00f; } #field3::-webkit-input-placeholder { color:#090; background:lightgreen; text-transform:uppercase; } #field4::-webkit-input-placeholder { font-style:italic; text-decoration:overline; letter-spacing:3px; color:#999; } /* стили для mozilla */ #field2:-moz-placeholder { color:#00f; } #field3:-moz-placeholder { color:#090; background:lightgreen; text-transform:uppercase; } #field4:-moz-placeholder { font-style:italic; text-decoration:overline; letter-spacing:3px; color:#999; }
Также следует заметить, что разные браузеры по разному поддерживают стили для placeholder.
Список поддерживаемых CSS стилей для атрибута placeholder:
Chrome 11 (Win 7) | Firefox 4 (Win 7) | Safari 3.1 (Win XP & OS X) | Safari 5 (Win 7 & OS X) | |
background-color | нет | + | нет | + |
border | нет | + | нет | + |
color | + | + | нет | + |
font-size | + | + | нет | + |
font-style | + | + | нет | + |
font-weight | + | + | нет | + |
letter-spacing | + | + | нет | + |
line-height | нет | нет | нет | нет |
padding top/bottom | нет | + | нет | + |
padding left/right | нет | + | нет | нет |
text-decoration | нет | + | нет | + |
text-transform | нет | + | нет | + |
Демо
Источники: Стилизация HTML5 плейсхолдера с помощью CSS / Каскадные Таблицы Стилей / Хабрахабр
HTML5 Placeholder Styling with CSS Example
Реклама
Атрибут ::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 предназначен для выделения формы ввода, а 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 версии. Версии 19+ поддерживают псевдоэлемент, но не класс.
Данная публикация является переводом статьи «::placeholder» , подготовленная редакцией проекта.
Стилизуем 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-а будет некрасиво обрезан. Чтобы предотвратить это, вы можете использовать
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
Голосов: 641 | Просмотров: 3016::placeholder | CSS (Примеры)
С помощью псевдоэлемента ::placeholder
задаётся стилевое оформление подсказывающего текста, созданного атрибутом placeholder
. Допускается использовать свойства для изменения вида текста, например, задать шрифт и цвет.
Синтаксис
::placeholder {
color: blue;
font-size: 1.5em;
}
Спецификация
Примечания
- 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
.
Пример 1
Пример 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 — Хабиб Омаров
dАтрибут placeholder выводит текст внутри input поля которая исчезает при фокусе поля. Его назначение подсказать пользователю что нужно ввести в поле, в отличие от value является то что placeholder исчезает при фокусе, а value нужно вручную убирать (можно конечно маленький скрипт написать но зачем лишние проблемы).
В этой статье мы рассмотрим как можно стилизовать placeholder используя css технологии.
Цвет
Цвет placeholder-а можно изменить используя следующие CSS правила:
.название класса input::-webkit-input-placeholder {color:#c0392b;} . название класса input::-moz-placeholder {color:#c0392b;}/* Firefox 19+ */ .название класса input:-moz-placeholder {color:#c0392b;}/* Firefox 18- */ .название класса input:-ms-input-placeholder {color:#c0392b;}
Выглядит чуть чуть страшновато, не правда ли? Но не стоит бояться, дело в том что до сих пор в браузерах нету стандартной поддержки. каждый браузер реализует по своему поддержку placeholder-а.
Необходимо еще отметить что не все css свойства поддерживаются.
Большинство браузеров позволяют изменить лишь:
- font (и сопутствующие свойства)
- background (и сопутствующие свойства)
- color
- word-spacing
- letter-spacing
- text-decoration
- vertical-align
- text-transform
- line-height
- text-ident
- text-overflow
- opacity
Если не вмещается?
Если же 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-а происходит по-разному.
- в некоторых браузерах при получении фокуса инпутом
- в других браузерах при наличии хотя бы одного введенного символа
:focus::-webkit-input-placeholder {color: transparent} :focus::-moz-placeholder {color: transparent} :focus:-moz-placeholder {color: transparent} :focus:-ms-input-placeholder {color: transparent}
Скрываем placeholder красиво
Можно также добавить transition для появления и скрытия placeholder-a:
/* плавное изменение прозрачности 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;}
Уверен Вам пригодиться это статья. Так же уверен что и вашему другу тоже пригодиться поэтому не стесняйтесь, поделитесь статьей с друзьями. Отпишитесь в комментариях если что то не понятно.
placeholder позволяет стилизовать текст формы
Псевдоэлемент :: placeholder (или псевдокласс, в некоторых случаях, в зависимости от реализации браузера) позволяет вам стилизовать текст заполнителя элемента формы (например, формы поиска). Как и текст, заданный с атрибутом placeholder:
Вы можете стилизовать этот текст в большинстве браузеров с помощью небольшого количества селекторов с префиксом поставщика браузера:
Обратите внимание
Этот синтаксис нестандартен, поэтому все его называют безумием. Он вообще не отображается в спецификации. : placeholder-shown является стандартным, и даже разработчики, похоже, думают, что :: placeholder будет стандартизированной версией.
Как любой псевдо, вы можете дополнить его конкретными элементами по мере необходимости, например:Пример
Разница между : placeholder-show и :: placeholder
: placeholder предназначен для выбора самого входа, когда отображается текст заполнителя. В отличие от :: placeholder, который стилизует текст заполнителя.
Вот диаграмма:
Мы нашли это очень запутанным, поскольку в спецификациях есть только : placeholder-show и нет :: placeholder и :placeholder-shows может по-прежнему влиять на стиль текста-заполнителя, поскольку это родительский элемент (например, размер шрифта).
Обратите внимание
:placeholder-show – псевдо-класс (это элемент в определенном состоянии), а ::placeholder – псевдо-элемент (видимая часть, которая на самом деле не находится в DOM). Различаются двойными двоеточиями.
Tab Atkins очистил его для нас в электронной почте:
: placeholder-shown, являющийся псевдо-классом, должен выбрать существующий элемент – он выбирает вход, когда вы находитесь в состоянии placeholder-showing. Псевдоэлемент :: placeholder окружает фактический текст заполнителя.
Элемент или класс?
Эта функциональность не стандартизирована. Это означает, что у каждого браузера свое мнение о том, как он должен работать.
Firefox первоначально реализовал это как псевдо-класс, но изменил его по целому ряду причин. Короче говоря, вы не можете сделать так много с псевдо-классом.
Например, если вы хотите изменить цвет текста при фокусировке ввода. Вы бы использовали селектор типа input: focus :: placeholder, который вы не смогли бы сделать с псевдоклассом (они не складываются одинаково).
IE10 поддерживает это как псевдо-класс, а не элемент. Все остальные реализовали псевдоэ-лемент.
Цвет заставки Firefox
Вы можете заметить, как в Firefox цвет заполнителя выглядит померкшим по сравнению с другими браузерами. На изображении ниже Firefox 43 отображается слева, а Chrome 47 показан справа:
Версия Chrome – это стиль, который мы хотели бы видеть повсюду.
Это связано с тем, что по умолчанию все заполнители в Firefox имеют значение непрозрачности, применяемое к ним, поэтому, чтобы исправить это, нам нужно сбросить это значение:
Вы можете увидеть больше, протестировав эту демонстрацию в Firefox.
Поддерживаемые стили
Псевдо-элемент поддерживает стилизацию этих свойств:
- свойства шрифта
- цвет
- фоновые свойства
- слово-интервал
- межбуквенное расстояние
- текст-отделка
- вертикальные выравнивания
- текст-преобразование
- высота линии
- отступ текста
- помутнение
Другие источники
- Документы MDN.
- Документы IE.
- Полная статья о блоге Treehouse.
- Обоснование псевдо-элемента.
Поддержка браузера
Мы говорим, что он поддерживается здесь, даже если добавлен префикс.
Firefox поддерживает псевдокласс до версии 18. Версия 19+ поддерживает псевдо-элемент, а не класс.
Источник: https://css-tricks.com/almanac/selectors/p/placeholder/
(Всего посетителей: 2 081, сегодня: 1)
Автор и редактор на wptheme.us
Опыт работы с WordPress более 10 лет. Создал более 1500 сайтов на Вордпресс. Перевел более 400 тем на русский и украинский язык. Сотни вылеченных сайтов от вирусов. Тысячи установленных и настроенных плагинов. Задать вопрос мне можно на https://profiles.wordpress.org/wpthemeus/
Атрибут Placeholder у input на jQuery
Рубрика: Формы
Html5 принес нам новый параметр placeholder, очень удобное новшество, уберет подсказку при фокусе на input, но в IE до 9 версии это не срабатывает, так как нет поддержки html5, по этому для него можно использовать плагин написанный на jQuery Placeholder.
Пример атрибута placeholder:
<input type="text" placeholder="Имя" name="name">
А стилизовать этот атрибут можно так:
/*псевдокласс для Safari и Chrome*/
input::-webkit-input-placeholder {}
/*Firefox 20*/
input::-moz-placeholder {}
/* IE */
input:-ms-input-placeholder {}
Таблица поддерживаемых CSS атрибута placeholder:
Chrome 10 | Chrome 11 | Firefox 4 | Safari 3.1 | Safari 5 | Opera 11 | |
---|---|---|---|---|---|---|
background-color | — | — | + | — | + | — |
border | — | — | + | — | + | — |
color | + | + | + | — | + | — |
font-size | + | + | + | — | + | — |
font-style | + | + | + | — | + | — |
font-weight | + | + | + | — | + | — |
letter-spacing | + | + | + | — | + | — |
line-height | — | — | — | — | — | — |
padding top/bottom | — | — | + | — | + | — |
padding left/right | — | — | + | — | — | — |
text-decoration | — | — | + | — | + | — |
text-transform | — | — | + | — | + | — |
P. S: Нельзя указывать селекторы через запятую, то есть:
input:-moz-placeholder, input::-webkit-input-placeholder { }
Теги: placeholder, подсказки input
Поделись с друзьями: Похожие статьи
Нет комментариев для записи Атрибут Placeholder у input на jQuery
:: placeholder — CSS: каскадные таблицы стилей
Псевдоэлемент CSS :: placeholder
представляет текст заполнителя в элементе
или .
:: заполнитель {
цвет синий;
размер шрифта: 1.5em;
}
Только подмножество свойств CSS, которые применяются к псевдоэлементу :: first-line
, можно использовать в правиле, используя :: placeholder
в его селекторе.
Примечание. В большинстве браузеров текст-заполнитель по умолчанию имеет полупрозрачный или светло-серый цвет.
Цветовой контраст
Коэффициент контрастности
Текст-заполнитель обычно имеет более светлый цвет, чтобы указать, что это предложение о том, какой тип ввода будет допустимым, а не фактический ввод какого-либо вида.
Важно убедиться, что коэффициент контрастности между цветом текста-заполнителя и фоном ввода достаточно высок, чтобы люди с плохим зрением могли его прочитать, а также убедиться, что существует достаточная разница между текст заполнителя и цвет ввода текста, чтобы пользователи не ошибочно приняли заполнитель за вводимые данные.
Коэффициент контрастности цвета определяется путем сравнения яркости текста заполнителя и значений цвета фона ввода. Чтобы соответствовать текущим правилам доступности веб-содержимого (WCAG), требуется соотношение 4,5: 1 для текстового содержимого и 3: 1 для более крупного текста, такого как заголовки. Большой текст определяется как 18,66 пикселей и полужирный или больше, или 24 пикселей или больше.
Удобство использования
Текст-заполнитель с достаточным цветовым контрастом может интерпретироваться как введенный ввод. Текст-заполнитель также исчезнет, когда человек вводит контент в элемент
.Оба эти обстоятельства могут помешать успешному заполнению формы, особенно для людей с когнитивными проблемами.
Альтернативный подход к предоставлению информации заполнителя состоит в том, чтобы включить ее вне ввода в непосредственной визуальной близости, а затем использовать aria-describe by
для программного связывания
с его подсказкой.
В этой реализации содержание подсказки доступно, даже если информация вводится в поле ввода, и ввод кажется свободным от ранее существовавшего ввода, когда страница загружается.Большинство технологий чтения с экрана будут использовать , описанное aria by
, чтобы прочитать подсказку после объявления текста метки ввода, и человек, использующий программу чтения с экрана, может отключить ее, если сочтет дополнительную информацию ненужной.
Пример: jane@sample.com
Режим высокой контрастности Windows
Текст-заполнитель будет отображаться с тем же стилем, что и текстовое содержимое, введенное пользователем, при визуализации в режиме высокой контрастности Windows. Это затруднит определение того, какой контент был введен, а какой является текстом-заполнителем.
Метки
Заполнители не заменяют элемент
. Без метки, которая была программно связана с входом с использованием комбинации атрибутов для
и id
, вспомогательные технологии, такие как программы чтения с экрана, не могут анализировать элементы
.
Изменить внешний вид заполнителя
В этом примере показаны некоторые настройки, которые можно внести в стили текста-заполнителя.
HTML
CSS
input :: placeholder {
красный цвет;
размер шрифта: 1.2em;
стиль шрифта: курсив;
}
Результат
Непрозрачный текст
Некоторые браузеры (например, Firefox) устанавливают по умолчанию непрозрачность
заполнителей на значение менее 100%. Если вы хотите полностью непрозрачный текст-заполнитель, установите непрозрачность
на 1
.
HTML
CSS
:: заполнитель {
цвет: зеленый;
}
.force-opaque :: placeholder {
непрозрачность: 1;
}
Результат
Таблицы BCD загружаются только в браузере
:: placeholder | CSS-уловки
Псевдоэлемент :: placeholder
(или псевдокласс, в некоторых случаях, в зависимости от реализации браузера) позволяет вам стилизовать текст заполнителя элемента формы. Как и в случае, текст установлен с атрибутом placeholder :
Вы можете стилизовать этот текст в большинстве браузеров с помощью этого небольшого количества селекторов с префиксом поставщика:
:: - webkit-input-placeholder {/ * Chrome / Opera / Safari * /
цвет: розовый;
}
:: - moz-placeholder {/ * Firefox 19+ * /
цвет: розовый;
}
: -ms-input-placeholder {/ * IE 10+ * /
цвет: розовый;
}
: -moz-placeholder {/ * Firefox 18- * /
цвет: розовый;
}
Важное предупреждение: этот синтаксис нестандартен, отсюда и безумие именования. Его вообще нет в спецификации. : заполнитель
является стандартным, и даже авторы спецификации, похоже, думают, что :: заполнитель
будет стандартизированной версией.
Как и любой псевдо-псевдоним, при необходимости его можно ограничить определенными элементами, например:
input [type = "email"]. Big-dog :: - webkit-input-placeholder {
оранжевый цвет;
}
Демо
Разница между
: заполнитель
и :: заполнитель
: отображается заполнитель
предназначен для выбора самого ввода, когда отображается текст заполнителя.В отличие от :: placeholder
, который стилизует текст заполнителя.
Вот схема:
Я нашел это очень запутанным:
- в спецификациях есть только
: заполнитель
, а не:: заполнитель
-
: заполнитель
все еще может влиять на стилизацию текста заполнителя, поскольку это родительский элемент (например, размер шрифта).
Обратите внимание, что : placeholder-shown
— это псевдо класс (это элемент в определенном состоянии), а :: placeholder
— это псевдо элемент (видимая вещь, которой на самом деле нет в DOM. ).Отличается одинарным или двойным двоеточием.
Таб Аткинс объяснил мне это по электронной почте:
: placeholder-shown, являясь псевдоклассом, должен выбрать существующий элемент — он выбирает ввод всякий раз, когда вы находитесь в состоянии отображения заполнителя. Псевдоэлемент :: placeholder оборачивает фактический текст заполнителя.
Элемент или класс?
Эта функциональность не стандартизирована. Это означает, что у каждого браузера свое представление о том, как он должен работать.
Firefox изначально реализовал это как псевдокласс, но изменил его по ряду причин. Короче говоря, вы не можете сделать так много с псевдоклассом.
Например, если вы хотите изменить цвет текста, когда ввод находится в фокусе. Вы могли бы использовать селектор вроде input: focus :: placeholder
, чего вы не смогли бы сделать с псевдоклассом (они не складываются одинаково).
IE10 поддерживает это как псевдокласс, а не как элемент.Все остальные реализовали псевдоэлемент.
Firefox цвет заполнителя
Вы могли заметить, как в Firefox цвет заполнителя выглядит блеклым по сравнению с другими браузерами. На изображении ниже Firefox 43 показан слева, а Chrome 47 — справа:
Версия Chrome — это идеальный стиль, который мы хотели бы видеть везде.Это связано с тем, что по умолчанию ко всем заполнителям в Firefox применяется значение непрозрачности, поэтому, чтобы исправить это, нам нужно сбросить это значение:
:: - moz-placeholder {
непрозрачность: 1;
}
Вы можете увидеть больше, протестировав эту демонстрацию в Firefox.
Поддерживаемые стили
Псевдоэлемент поддерживает стили для следующих свойств:
-
шрифт
свойства -
цвет
-
фон
свойства -
межсловный интервал
-
межбуквенный интервал
-
текстовое оформление
-
текст по вертикали transform
-
line-height
-
text-indent
-
opacity
Псевдокласс поддерживает большинство (если не все) из этих свойств, но не так гибок по указанным причинам над.
Поддержка браузера
Настольный ПК
Chrome | Firefox | IE | Edge | Safari | ||||
---|---|---|---|---|---|---|---|---|
57 | 19 * | Нет | 79 | 10,17 Планшетный ПК Android Chrome | Android Firefox | Android | iOS Safari | |
88 | 85 | 81 | 10.3 |
Прочие ресурсы
Похожие объекты
Стилизация текста-заполнителя с помощью CSS
Используйте псевдоэлемент :: placeholder
для стилизации текста заполнителя в элементе формы
или
. Большинство современных браузеров поддерживают это, но для старых браузеров потребуются префиксы поставщика.
HTML
Префиксы поставщика
Таким образом, используемый мной синтаксис поддерживается большинством современных браузеров:
Но для некоторых браузеров или старых браузеров вам нужно будет использовать префиксы поставщиков.
Ух ты! Я знаю, это огромный список. И вы могли заметить довольно много разных вариантов реализации. Итак, давайте разберемся с этими различиями и поймем, что здесь происходит.
Псевдоэлемент против псевдокласса
Вы можете заметить, что я использую двойное двоеточие ::
. Это называется псевдоэлементом, и он был введен в CSS3. Если бы мы использовали одно двоеточие :
, это называлось бы псевдоклассом.
Поскольку псевдоэлемент ::
был введен в CSS3, а не в более ранних версиях CSS, некоторые старые браузеры, такие как Internet Explorer, просто никогда не поддерживали его.Тогда как псевдокласс :
был представлен ранее (в CSS1 и CSS2). Вот почему его поддерживают намного больше браузеров, включая Internet Explorer.
Следовательно, в нашем префиксе поставщика :: placeholder
вы будете использовать смесь псевдокласса и псевдоэлемента.
Firefox Заполнитель Непрозрачность по умолчанию
Хорошо, что это за проблема с непрозрачностью : 1
для Firefox. Это потому, что по умолчанию к заполнителям Firefox применяется значение непрозрачности.Итак, чтобы переопределить это, нам нужно установить его. Таким образом, наш текст-заполнитель будет отображаться и не будет тусклым по сравнению с настройками Firefox по умолчанию.
CSS Обработка недопустимых селекторов
Итак, вы также можете подумать, почему мы просто не сгруппировали все префиксы поставщиков вместе следующим образом:
Ну, это потому, что в CSS3 было правило, которое гласит:
группа селекторов, содержащих недопустимый селектор, недопустим.
Давайте посмотрим на примере, чтобы понять, что это означает.Вот действительный селектор CSS
Итак, в нашем HTML это будет выглядеть так, как ожидалось.
Но что произойдет, если мы добавим недопустимый селектор CSS
Поскольку в группе есть недопустимый селектор CSS. Вся группа будет считаться недействительной, и стили не будут применены.
Вот почему нам нужны отдельные правила для каждого браузера. В противном случае вся группа будет игнорироваться всеми браузерами.
⭐️ НО! , похоже, это может быть изменено в CSS4.
Обычно, если есть недопустимый псевдоэлемент или псевдокласс в цепочке или группе селекторов, весь список селекторов недействителен. Если псевдоэлемент (но не псевдокласс) имеет префикс -webkit-, начиная с Firefox 63, браузеры Blink, Webkit и Gecko предполагают, что он действителен, не аннулируя список селекторов.
Подробнее об этом читайте в статье Криса Койера «Один недействительный псевдоселектор равен всему проигнорированному селектору»
Поддерживаемые стили
Вот список всех стилей, которые можно применить к тексту-заполнителю:
-
фон
свойств -
цвет
-
шрифт
свойства -
межбуквенный интервал
-
высота строки
-
непрозрачность
- 67 текст отступ
текст-декорирование
text-transform
-
vertical-align
-
word-spacing
Проблемы доступности
Возможность стилизовать заполнители — это здорово. Но мне нужно отметить кое-что действительно важное — текст-заполнитель не заменяет элемент метки,
!! Я был виноват в этом, когда только начал заниматься веб-программированием 🙁. Когда ваша форма полагается исключительно на инструкции-заполнители без меток, это очень вредно для доступности. Доступность важна не только для того, чтобы сделать ваш сайт доступным для всех, но и для улучшения взаимодействия с пользователем. И в конечном итоге создать лучший веб-сайт или веб-приложение 💪
Вот действительно потрясающая статья о проблемах использования только заполнителей без каких-либо ярлыков.Ниже приведены 3 верхних пункта:
- Поскольку текст-заполнитель по своей природе исчезает, он может напрягать кратковременную память вашего пользователя.
- Без ярлыков пользователи не могут проверить свою работу перед отправкой формы.
- Когда появляются сообщения об ошибках, люди не знают, как решить проблему.
Автоматически добавлять префиксы поставщиков
Если вы не хотите иметь дело со всеми префиксами поставщиков, вы можете использовать PostCSS с плагином Autoprefixer. Этот плагин проанализирует ваш CSS и добавит префиксы поставщиков.
- @edufurlongo: Также используйте
непрозрачность: 1
, потому что большинство браузеров применяют альфа (обычно 0,5) к заполнителю. -элемент для стилизации текста заполнителя в элементе формыHTML
Префиксы поставщика
Таким образом, используемый мной синтаксис поддерживается большинством современных браузеров:
Но для некоторых браузеров или старых браузеров вам нужно будет использовать префиксы поставщиков.
Ух ты! Я знаю, это огромный список. И вы могли заметить довольно много разных вариантов реализации. Итак, давайте разберемся с этими различиями и поймем, что здесь происходит.
Псевдоэлемент против псевдокласса
Вы можете заметить, что я использую двойное двоеточие
::
. Это называется псевдоэлементом, и он был введен в CSS3. Если бы мы использовали одно двоеточие:
, это называлось бы псевдоклассом.Поскольку псевдоэлемент
::
был введен в CSS3, а не в более ранних версиях CSS, некоторые старые браузеры, такие как Internet Explorer, просто никогда не поддерживали его. Тогда как псевдокласс:
был представлен ранее (в CSS1 и CSS2). Вот почему его поддерживают намного больше браузеров, включая Internet Explorer.Следовательно, в нашем префиксе поставщика
:: placeholder
вы будете использовать смесь псевдокласса и псевдоэлемента.Firefox Заполнитель Непрозрачность по умолчанию
Хорошо, что это за проблема с непрозрачностью
: 1
для Firefox. Это потому, что по умолчанию к заполнителям Firefox применяется значение непрозрачности. Итак, чтобы переопределить это, нам нужно установить его. Таким образом, наш текст-заполнитель будет отображаться и не будет тусклым по сравнению с настройками Firefox по умолчанию.CSS Обработка недопустимых селекторов
Итак, вы также можете подумать, почему мы просто не сгруппировали все префиксы поставщиков вместе следующим образом:
Ну, это потому, что в CSS3 было правило, которое гласит:
группа селекторов, содержащих недопустимый селектор, недопустим.
Давайте посмотрим на примере, чтобы понять, что это означает. Вот действительный селектор CSS
Итак, в нашем HTML это будет выглядеть так, как ожидалось.
Но что произойдет, если мы добавим недопустимый селектор CSS
Поскольку в группе есть недопустимый селектор CSS. Вся группа будет считаться недействительной, и стили не будут применены.
Вот почему нам нужны отдельные правила для каждого браузера. В противном случае вся группа будет игнорироваться всеми браузерами.
⭐️ НО! , похоже, это может быть изменено в CSS4.
Обычно, если есть недопустимый псевдоэлемент или псевдокласс в цепочке или группе селекторов, весь список селекторов недействителен. Если псевдоэлемент (но не псевдокласс) имеет префикс -webkit-, начиная с Firefox 63, браузеры Blink, Webkit и Gecko предполагают, что он действителен, не аннулируя список селекторов.
Подробнее об этом читайте в статье Криса Койера «Один недействительный псевдоселектор равен всему проигнорированному селектору»
Поддерживаемые стили
Вот список всех стилей, которые можно применить к тексту-заполнителю:
-
фон
свойств -
цвет
-
шрифт
свойства -
межбуквенный интервал
-
высота строки
-
непрозрачность
- 67 текст отступ
текст-декорирование
text-transform
-
vertical-align
-
word-spacing
Проблемы доступности
Возможность стилизовать заполнители — это здорово.Но мне нужно отметить кое-что действительно важное — текст-заполнитель не заменяет элемент метки,
Вот действительно потрясающая статья о проблемах использования только заполнителей без каких-либо ярлыков.Ниже приведены 3 верхних пункта:
- Поскольку текст-заполнитель по своей природе исчезает, он может напрягать кратковременную память вашего пользователя.
- Без ярлыков пользователи не могут проверить свою работу перед отправкой формы.
- Когда появляются сообщения об ошибках, люди не знают, как решить проблему.
Автоматически добавлять префиксы поставщиков
Если вы не хотите иметь дело со всеми префиксами поставщиков, вы можете использовать PostCSS с плагином Autoprefixer. Этот плагин проанализирует ваш CSS и добавит префиксы поставщиков.
- @edufurlongo: Также используйте непрозрачность
: 1
, потому что большинство браузеров применяют альфа-канал (обычно 0,5) к заполнителю.
Ресурсы
Стилизация текста заполнителя с помощью CSS | by Samantha Ming
Code Tidbit by SamanthaMing.comИспользуйте псевдоэлемент
:: placeholder
для стилизации текста заполнителя в элементе формы:: заполнитель {
color: deeppink;
font-size: 5rem;
преобразование текста: прописные буквы;
}HTML
Итак, используемый мной синтаксис поддерживается большинством современных браузеров:
/ * СОВРЕМЕННЫЙ БРАУЗЕР * /
:: placeholder {
color: deeppink;
}Но для некоторых браузеров или старых браузеров вам нужно будет использовать префиксы поставщика.
/ * WebKit, Edge * /
:: - webkit-input-placeholder {
color: deeppink;
} / * Firefox 4-18 * /
: -moz-placeholder {
color: deeppink;
непрозрачность: 1;
} / * Firefox 19+ * /
:: - moz-placeholder {
color: deeppink;
непрозрачность: 1;
} / * IE 10-11 * /
: -ms-input-placeholder {
color: deeppink;
} / * Edge * /
:: - ms-input-placeholder {
color: deeppink;
} / * СОВРЕМЕННЫЙ БРАУЗЕР * /
:: заполнитель {
color: deeppink;
}Ух ты! Я знаю, это огромный список.И вы могли заметить довольно много разных вариантов реализации. Итак, давайте разберем эти различия и поймем, что здесь происходит.
Псевдоэлемент против псевдокласса
Вы можете заметить, что я использую двойное двоеточие
::
. Это называется псевдоэлементом, и он был введен в CSS3. Если бы мы использовали одно двоеточие:
, это называлось бы псевдоклассом.Поскольку псевдоэлемент
::
был введен в CSS3, а не в более ранних версиях CSS, некоторые старые браузеры, такие как Internet Explorer, просто никогда не поддерживали его. Тогда как псевдокласс:
был представлен ранее (в CSS1 и CSS2). Вот почему его поддерживают намного больше браузеров, включая Internet Explorer.Следовательно, в нашем префиксе поставщика
:: placeholder
вы увидите смесь псевдокласса и псевдоэлемента.Firefox Заполнитель Непрозрачность по умолчанию
Хорошо, что это за дело с непрозрачностью
: 1
для Firefox. Это потому, что по умолчанию к заполнителям Firefox применяется значение непрозрачности.Итак, чтобы переопределить это, нам нужно установить его. Таким образом, наш текст-заполнитель будет отображаться и не будет тусклым по сравнению с настройками Firefox по умолчанию.непрозрачность: 1;
Обработка недействительных селекторов CSS
Итак, вы также можете подумать, почему мы просто не сгруппировали все префиксы поставщиков вместе следующим образом:
:: - moz-placeholder, / * Firefox 19+ * /
: -moz -placeholder / * Firefox 4-18 * /
{
color: deeppink;
непрозрачность: 1;
}Ну, это потому, что в CSS3 было правило, которое гласит:
группа селекторов, содержащая недопустимый селектор, недопустима.
Давайте посмотрим на примере, чтобы понять, что это означает. Вот действующий селектор CSS
h2 {
color: blue;
}Итак, в нашем HTML это будет выглядеть так, как ожидалось
Hello
Но что произойдет, если мы добавим недопустимый Селектор CSS
h2, / * допустимый * /
h3 :: poop / * недопустимый * /
{
color: blue;
}Поскольку в группе имеется недопустимый селектор CSS.Вся группа будет считаться недействительной, и стили не будут применены.
Здравствуйте
Поэтому нам нужны отдельные правила для каждого браузера. В противном случае вся группа будет игнорироваться всеми браузерами.
⭐️ НО! , похоже, это может быть изменено в CSS4.
Обычно, если есть недопустимый псевдоэлемент или псевдокласс в цепочке или группе селекторов, весь список селекторов недействителен. Если псевдоэлемент (но не псевдокласс) имеет префикс -webkit-, начиная с Firefox 63, браузеры Blink, Webkit и Gecko предполагают, что он действителен, не аннулируя список селекторов.
Подробнее об этом читайте в статье Криса Койера «Один недействительный псевдоселектор равен всему проигнорированному селектору».
Вот список всех стилей, которые можно применить к тексту-заполнителю:
-
фон
свойства -
цвет
-
шрифт
свойства -
межбуквенный интервал
-
высота строки
-
непрозрачность
-
текстовое оформление
текст -
- отступ 9000- transform
-
vertical-align
-
word-spacing
:: placeholder {
/ * styles * /
}
Возможность стилизовать заполнители — это здорово.Но мне нужно отметить кое-что действительно важное — текст-заполнитель не заменяет элемент метки,
!! Я был виноват в этом, когда только начал заниматься веб-программированием 🙁. Когда ваша форма полагается исключительно на инструкции-заполнители без меток, это очень вредно для доступности. Доступность важна не только для того, чтобы сделать ваш сайт доступным для всех, но и для улучшения взаимодействия с пользователем. И в конечном итоге создать лучший веб-сайт или веб-приложение 💪
Вот действительно отличная статья о том, как использовать только заполнители без каких-либо ярлыков.Ниже приведены 3 основных пункта:
- Поскольку текст-заполнитель по своей природе исчезает, он может напрягать кратковременную память вашего пользователя.
- Без ярлыков пользователи не могут проверить свою работу перед отправкой формы.
- Когда появляются сообщения об ошибках, люди не знают, как решить проблему.
Если вы не хотите иметь дело со всеми префиксами поставщиков, вы можете использовать PostCSS с плагином Autoprefixer. Этот плагин проанализирует ваш CSS и добавит префиксы поставщиков.
Как стилизовать текст заполнителя
Как стилизовать текст заполнителя[wpforms]