Впровадження
Існує три різні реалізації: псевдоелементи, псевдокласи і нічого.
- WebKit, Blink (Safari, Google Chrome, Opera 15+) і Microsoft Гурт використовують псевдо-елемент:
::-webkit-input-placeholder
. [ Посилання ]
- Mozilla Firefox 4-18 використовує псевдоклас:
:-moz-placeholder
( одна двокрапка). [ Посилання ]
- Mozilla Firefox 19+ використовує псевдоелемент:,
::-moz-placeholder
але старий селектор ще працюватиме деякий час. [ Посилання ]
- Internet Explorer 10 і 11 використовують псевдо-клас:
:-ms-input-placeholder
. [ Посилання ]
- Квітень 2017: Більшість сучасних браузерів підтримують простий псевдоелемент
::placeholder
[ Ref ]
Internet Explorer 9 і новіші версії взагалі не підтримують placeholder
атрибут, тоді як Opera 12 і новіші не підтримують жоден CSS-селектор для заповнювачів.
Дискусія щодо найкращого впровадження ще триває. Зауважте, що псевдоелементи діють як реальні елементи в тіні DOM . А padding
на input
заповіті не набуде такого ж кольору фону, як псевдоелемент.
CSS-селектори
Користувацькі агенти зобов'язані ігнорувати правило з невідомим селектором. Див. Селектори 3 рівня :
група селектор , що містить недійсний селектор є недійсною.
Тому нам потрібні окремі правила для кожного браузера. Інакше всі браузери будуть ігнорувати всю групу.
::-webkit-input-placeholder { /* WebKit, Blink, Edge */
color: #909;
}
:-moz-placeholder { /* Mozilla Firefox 4 to 18 */
color: #909;
opacity: 1;
}
::-moz-placeholder { /* Mozilla Firefox 19+ */
color: #909;
opacity: 1;
}
:-ms-input-placeholder { /* Internet Explorer 10-11 */
color: #909;
}
::-ms-input-placeholder { /* Microsoft Edge */
color: #909;
}
::placeholder { /* Most modern browsers support this now. */
color: #909;
}
<input placeholder="Stack Snippets are awesome!">
Примітки щодо використання
- Будьте уважні, щоб уникнути поганих контрастів. Схоже, що заповнювач заповнення Firefox має дефолт із зменшеною непрозорістю, тому його потрібно використовувати
opacity: 1
тут.
- Зауважте, що текст заповнювача просто обрізається, якщо він не підходить - розмір вхідних елементів у них
em
та протестуйте їх за допомогою великих розмірів мінімального розміру шрифту. Не забудьте переклади: деякі мови потрібно більше місця для одного слова.
- Веб-переглядачі з підтримкою HTML для
placeholder
слід перевірити але без підтримки CSS (як Opera).
- Деякі браузери використовують додатковий CSS за замовчуванням для деяких
input
типів ( email
, search
). Вони можуть вплинути на візуалізацію несподіваними способами. Використовуйте властивості -webkit-appearance
та -moz-appearance
змініть це. Приклад:
[type="search"] {
-moz-appearance: textfield;
-webkit-appearance: textfield;
appearance: textfield;
}