У CSS можна стилізувати placeholder
текст усередині введення, використовуючи комбінацію специфічних для постачальника псевдо-класів та псевдоелементів (щоб отримати найкраще охоплення між браузерами).
Всі вони мають однакові основні властивості (тобто: стиль тексту та декларації кольорів).
Однак, хоча я неминуче хочу застосовувати однакові стилі незалежно від постачальника браузера, не представляється можливим об'єднати їх разом у селектор, розділений комами (як це було б з будь-яким іншим фрагментом CSS, де ви хочете, щоб два селектори мали спільний доступ) однакові стилі).
Як приклад, я, як правило, націлююсь на стиль заповнювача, використовуючи чотири такі селектори:
input:-moz-placeholder
input::-moz-placeholder
input:-ms-input-placeholder
input::-webkit-input-placeholder
(хоча :-moz-placeholder
припинення дії на користь ::-moz-placeholder
цього відбулося лише з випуском FireFox 19, тому в даний час обидва необхідні для кращої підтримки браузера).
Що засмучує, так це те, що декларування та надання кожного (того самого) стилю призводить до великої кількості повторень у CSS.
Отже, щоб переконатись, що текст заповнювача вирівняний по правому краю та курсивом, я б закінчив:
input:-moz-placeholder{
font-style: italic;
text-align: right;
}
input::-moz-placeholder{
font-style: italic;
text-align: right;
}
input:-ms-input-placeholder{
font-style: italic;
text-align: right;
}
input::-webkit-input-placeholder{
font-style: italic;
text-align: right;
}
Що я справді хочу зробити, це поєднати їх як одне єдине правило, розділене комами, таким чином:
input:-moz-placeholder,
input::-moz-placeholder,
input:-ms-input-placeholder,
input::-webkit-input-placeholder{
font-style: italic;
text-align: right;
}
Однак, незважаючи на те, що кілька разів намагався це зробити, це ніколи не спрацьовує. Мене турбує те, що існує якась фундаментальна частина CSS, яку я не розумію.
Хтось може пролити світло на те, чому це трапляється?
:-moz-placeholder
псевдо-клас знецінився порівняно недавно із введенням FireFox 19, тому, на жаль, і обидва,:-moz-placeholder
і його подвійний двосторонній наступник::-moz-placeholder
повинні використовуватися для забезпечення найкращого покриття браузера.