Css изменить цвет placeholder. Как изменить цвет текста-подсказки в placeholder с помощью стилей CSS? Скрываем placeholder красиво
Псевдоэлемент, с помощью которого задаётся стилевое оформление подсказывающего текста, созданного атрибутом placeholder . Допускается использовать свойства для изменения вида текста, например, задать шрифт и цвет.
Синтаксис
Селектор ::placeholder { ... }
Обозначения
Описание | Пример | |
---|---|---|
<тип> | Указывает тип значения. | <размер> |
A && B | Значения должны выводиться в указанном порядке. | <размер> && <цвет> |
A | B | Указывает, что надо выбрать только одно значение из предложенных (A или B). | normal | small-caps |
A || B | Каждое значение может использоваться самостоятельно или совместно с другими в произвольном порядке. | width || count |
Группирует значения. | [ crop || cross ] | |
* | Повторять ноль или больше раз. | [,<время>]* |
+ | Повторять один или больше раз. | <число>+ |
? | Указанный тип, слово или группа не является обязательным. | inset? |
{A, B} | Повторять не менее A, но не более B раз. | <радиус>{1,4} |
# | Повторять один или больше раз через запятую. | <время># |
Пример
Результат примера показан на рис. 1.
Рис. 1. Использование::placeholder
Примечание
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 .
Браузеры
Браузеры
В таблице браузеров применяются следующие обозначения.
Стремясь уменьшить форму и сократить визуальный шум, дизайнеры тег
Плохо
Хорошо
Стилизация: изменить цвет placeholder CSS
Поменять стиль поля ввода с placeholder CSS
Плохо
Эффект placeholder для
Атрибут placeholder работает только для и
Древний метод на память, изменяющий value JavaScript
Обычно атрибут placeholder в input и textarea используется для призыва к действию внутри этих элементов. В этой заметке опишу несколько вариантов стилизации текста placeholder-ов, а также варианты их анимации
Итак, цвет текста нашего placeholder-а можно изменить использовав, например следующий набор css-правил:
::-webkit-input-placeholder
{
color
:
#c0392b
;}
::-moz-placeholder
{
color
:
#c0392b
;}
/* Firefox 19+ */
:-moz-placeholder
{
color
:
#c0392b
;}
/* Firefox 18- */
:-ms-input-placeholder
{
color
:
#c0392b
;}
Объемность кода для стилизации такого простого свойства обусловлена отсутсивтемотсутствием общего стандарта, в связи с чем каждый браузер по-своему реализовал поддержку стилизации placeholder-а.
Кроме того, поддерживаются не все css свойства. Вот перечень точно поддержываемых свойств:
font (и связанные)
background (и связанные)
color
word-spacing
letter-spacing
text-decoration
vertical-align
text-transform
line-height
text-indent
text-overflow
opacity
Также бывает так, что текст плейсхолдера «выходит» за пределы ширины элемента input или textarea (частый случай для мобильных устройств). При этом он автоматически некрасиво обрезается.
Исправить эту неприятность нам поможет такое css-свойство, как text-overflow: ellipsis , которое добавит эстетическое троееточие к обрезанному участку placeholder-a. В стилях прописываем вот так:
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-а при фокусе */
.input
::-webkit-input-placeholder
{
opacity
:
1
;
transition
:
opacity
0.3s
ease
;}
.input
::-moz-placeholder
{
opacity
:
1
;
transition
:
opacity
0.3s
ease
;}
.input
:-moz-placeholder
{
opacity
:
1
;
transition
:
opacity
0.3s
ease
;}
.input
:-ms-input-placeholder
{
opacity
:
1
;
transition
:
opacity
0.3s
ease
;}
.input
{
opacity
:
0
;
transition
:
opacity
0.3s
ease
;}
.input
:focus::-moz-placeholder
{
opacity
:
0
;
transition
:
opacity
0.3s
ease
;}
.input
:focus:-moz-placeholder
{
opacity
:
0
;
transition
:
opacity
0.3s
ease
;}
.input
:focus:-ms-input-placeholder
{
opacity
:
0
;
transition
:
opacity
0.3s
ease
;}
/* сдвиг placeholder-а вправо при фокусе*/
.input
::-webkit-input-placeholder
{
text-indent
:
0px
;
transition
:
text-indent
0.3s
ease
;}
.input
::-moz-placeholder
{
text-indent
:
0px
;
transition
:
text-indent
0.3s
ease
;}
.input
:-moz-placeholder
{
text-indent
:
0px
;
transition
:
text-indent
0.3s
ease
;}
.input
:-ms-input-placeholder
{
text-indent
:
0px
;
transition
:
text-indent
0.3s
ease
;}
.input
:focus::-webkit-input-placeholder
{
text-indent
:
500px
;
transition
:
text-indent
0.3s
ease
;}
.input
:focus::-moz-placeholder
{
text-indent
:
500px
;
transition
:
text-indent
0.3s
ease
;}
.input
:focus:-moz-placeholder
{
text-indent
:
500px
;
transition
:
text-indent
0.3s
ease
;}
.input
:focus:-ms-input-placeholder
{
text-indent
:
500px
;
transition
:
text-indent
0.3s
ease
;}
/* сдвиг placeholder-а вниз при фокусе*/
.input
::-webkit-input-placeholder
{
line-height
:
20px
;
transition
:
line-height
0.5s
ease
;}
.input
::-moz-placeholder
{
line-height
:
20px
;
transition
:
line-height
0.5s
ease
;}
.input
:-moz-placeholder
{
line-height
:
20px
;
transition
:
line-height
0.5s
ease
;}
.input
:-ms-input-placeholder
{
line-height
:
20px
;
transition
:
line-height
0.5s
ease
;}
.input
:focus::-webkit-input-placeholder
{
line-height
:
100px
;
transition
:
line-height
0.5s
ease
;}
.input
:focus::-moz-placeholder
{
line-height
:
100px
;
transition
:
line-height
0.5s
ease
;}
.input
:focus:-moz-placeholder
{
line-height
:
100px
;
transition
:
line-height
0.5s
ease
;}
.input
:focus:-ms-input-placeholder
{
line-height
:
100px
;
transition
:
line-height
0.5s
ease
;}
На этом и закончим.
Плейсхолдер - элемент поля ввода, в котором можно разместить подсказку. Когда пользователь начинает вводить данные, вспомогательный текст пропадает, чтобы не мешать. Каждый браузер имеет свое мнение на счет того, как следует отображать этот элемент, и порой дефолтные стили ломают весь дизайн. Чтобы управлять ими, требуется воспользоваться специальным правилом CSS placeholder.
Где находится плейсхолдер?
Проблема в том, что подсказка поля ввода надежно спрятана в теневом DOM, и добраться до нее не так-то просто. Для этого используется особый нестандартный псевдоэлемент CSS::placeholder. С его помощью можно управлять свойствами подсказки.
You will be interested:
Стилизация placeholder на CSS выглядит так:
input::placeholder {
color: red;
opacity: 1;
font-style: italic;
}
Поддержка браузерами
Псевдоэлемент CSS placeholder хорошо обрабатывается всеми современными браузерами, а для поддержки старых обозревателей можно воспользоваться префиксами:
- ::-webkit-input-placeholder - для webkit-браузеров (Safari, Chrome, Opera);
- ::-moz-placeholder - для браузеров Firefox выше 19 версии;
- :-moz-placeholder - для старых Firefox;
- :-ms-input-placeholder - для Internet Explorer выше 10 версии.
Как видно, старые браузеры Mozilla, а также IE считают placeholder CSS-псевдоклассом, а не псевдоэлементом. Не будем с ними спорить, просто учтем этот аспект при стилизации поля ввода.
Возможности стилизации
Для псевдоэлемента placeholder в CSS можно установить следующие параметры:
- фон - группа background-свойств. Фон блока подсказки распространяется на все поле ввода. Можно задать не только цвет (background-color), но и изображение (background-image).
- цвет текста - color;
- прозрачность - opacity;
- подчеркивание, надчеркивание или зачеркивание - text-decoration;
- регистр - text-transform;
- внутренние отступы - padding. Поддерживается не всеми браузерами. Как для строчных элементов, верхний и нижний отступы игнорируются.
- отображение шрифта - свойства группы font, line-height и разнообразные отступы (text-indent, letter-spacing, word-spacing);
- вертикальное выравнивание в строке - vertical-align;
- обрезка текста при переполнении контейнера - text-overflow.
Input1::placeholder {
background-image: linear-gradient(lime, blue);
color: white;
}
.input2::placeholder {
text-decoration: line-through;
color: purple;
font-weight: bold;
}
.input3::placeholder {
font-size: 16px;
letter-spacing: 10px;
}
.input4::placeholder {
background: brown;
color: white;
text-overflow: ellipsis;
}
В фокусе
По умолчанию подсказка пропадает из поля ввода только в том случае, если в него введен хотя бы один символ. Но псевдоэлемент CSS placeholder позволяет реализовать исчезновение сразу при фокусировке на поле. Для этого необходимо совместить его с псевдоклассом:focus.
input:focus::placeholder {
color: transparent;
}
В некоторых браузерах допустимо анимировать изменение ряда свойств плейсхолдера с помощью инструкции transition.
input::placeholder {
color: black;
transition: color 1s;
}
input:focus::placeholder {
color: white;
}
В браузере Google Chrome цвет подсказки при фокусировке на таком поле будет плавно изменяться в течение одной секунды.
Плейсхолдер - элемент поля ввода, в котором можно разместить подсказку. Когда пользователь начинает вводить данные, вспомогательный текст пропадает, чтобы не мешать. Каждый браузер имеет свое мнение на счет того, как следует отображать этот элемент, и порой дефолтные стили ломают весь дизайн. Чтобы управлять ими, требуется воспользоваться специальным правилом CSS placeholder.
Где находится плейсхолдер?
Проблема в том, что подсказка поля ввода надежно спрятана в теневом DOM, и добраться до нее не так-то просто. Для этого используется особый нестандартный ::placeholder. С его помощью можно управлять свойствами подсказки.
Стилизация placeholder на CSS выглядит так:
Input::placeholder {
color: red;
opacity: 1;
font-style: italic;
}
Поддержка браузерами
Псевдоэлемент CSS placeholder хорошо обрабатывается всеми современными браузерами, а для поддержки старых обозревателей можно воспользоваться префиксами:
- ::-webkit-input-placeholder - для webkit-браузеров (Safari, Chrome, Opera);
- ::-moz-placeholder - для браузеров Firefox выше 19 версии;
- :-moz-placeholder - для старых Firefox;
- :-ms-input-placeholder - для Internet Explorer выше 10 версии.
Как видно, старые браузеры Mozilla, а также IE считают placeholder CSS-псевдоклассом, а не псевдоэлементом. Не будем с ними спорить, просто учтем этот аспект при стилизации поля ввода.
Возможности стилизации
Для псевдоэлемента placeholder в CSS можно установить следующие параметры:
- фон - группа блока подсказки распространяется на все поле ввода. Можно задать не только цвет (background-color), но и изображение (background-image).
- цвет текста - color;
- прозрачность - opacity;
- подчеркивание, надчеркивание или зачеркивание - text-decoration;
- регистр - text-transform;
- внутренние отступы - padding. Поддерживается не всеми браузерами. Как для строчных элементов, верхний и нижний отступы игнорируются.
- отображение шрифта - свойства группы font, line-height и разнообразные отступы (text-indent, letter-spacing, word-spacing);
- вертикальное выравнивание в строке - vertical-align;
- обрезка текста при переполнении контейнера - text-overflow.
.input1::placeholder {
background-image: linear-gradient(lime, blue);
color: white;
}
.input2::placeholder {
text-decoration: line-through;
color: purple;
font-weight: bold;
}
.input3::placeholder {
font-size: 16px;
letter-spacing: 10px;
}
.input4::placeholder {
background: brown;
color: white;
text-overflow: ellipsis;
}
В фокусе
По умолчанию подсказка пропадает из поля ввода только в том случае, если в него введен хотя бы один символ. Но placeholder позволяет реализовать исчезновение сразу при фокусировке на поле. Для этого необходимо совместить его с псевдоклассом:focus.
Input:focus::placeholder {
color: transparent;
}
В некоторых браузерах допустимо анимировать изменение ряда свойств плейсхолдера с помощью инструкции transition.
Input::placeholder {
color: black;
transition: color 1s;
}
input:focus::placeholder {
color: white;
}
В браузере Google Chrome цвет подсказки при фокусировке на таком поле будет плавно изменяться в течение одной секунды.
Статьи по теме:
Атрибут placeholder работает только для и
Древний метод на память, изменяющий value JavaScript
Обычно атрибут placeholder в input и textarea используется для призыва к действию внутри этих элементов. В этой заметке опишу несколько вариантов стилизации текста placeholder-ов, а также варианты их анимации
Итак, цвет текста нашего placeholder-а можно изменить использовав, например следующий набор css-правил:
::-webkit-input-placeholder { color : #c0392b ;} ::-moz-placeholder { color : #c0392b ;} /* Firefox 19+ */ :-moz-placeholder { color : #c0392b ;} /* Firefox 18- */ :-ms-input-placeholder { color : #c0392b ;}
Объемность кода для стилизации такого простого свойства обусловлена отсутсивтемотсутствием общего стандарта, в связи с чем каждый браузер по-своему реализовал поддержку стилизации placeholder-а.
Кроме того, поддерживаются не все css свойства. Вот перечень точно поддержываемых свойств:
font (и связанные)
background (и связанные)
color
word-spacing
letter-spacing
text-decoration
vertical-align
text-transform
line-height
text-indent
text-overflow
opacity
Также бывает так, что текст плейсхолдера «выходит» за пределы ширины элемента input или textarea (частый случай для мобильных устройств). При этом он автоматически некрасиво обрезается.
Исправить эту неприятность нам поможет такое css-свойство, как text-overflow: ellipsis , которое добавит эстетическое троееточие к обрезанному участку placeholder-a. В стилях прописываем вот так:
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-а при фокусе */ .input ::-webkit-input-placeholder { opacity : 1 ; transition : opacity 0.3s ease ;} .input ::-moz-placeholder { opacity : 1 ; transition : opacity 0.3s ease ;} .input :-moz-placeholder { opacity : 1 ; transition : opacity 0.3s ease ;} .input :-ms-input-placeholder { opacity : 1 ; transition : opacity 0.3s ease ;} .input { opacity : 0 ; transition : opacity 0.3s ease ;} .input :focus::-moz-placeholder { opacity : 0 ; transition : opacity 0.3s ease ;} .input :focus:-moz-placeholder { opacity : 0 ; transition : opacity 0.3s ease ;} .input :focus:-ms-input-placeholder { opacity : 0 ; transition : opacity 0.3s ease ;} /* сдвиг placeholder-а вправо при фокусе*/ .input ::-webkit-input-placeholder { text-indent : 0px ; transition : text-indent 0.3s ease ;} .input ::-moz-placeholder { text-indent : 0px ; transition : text-indent 0.3s ease ;} .input :-moz-placeholder { text-indent : 0px ; transition : text-indent 0.3s ease ;} .input :-ms-input-placeholder { text-indent : 0px ; transition : text-indent 0.3s ease ;} .input :focus::-webkit-input-placeholder { text-indent : 500px ; transition : text-indent 0.3s ease ;} .input :focus::-moz-placeholder { text-indent : 500px ; transition : text-indent 0.3s ease ;} .input :focus:-moz-placeholder { text-indent : 500px ; transition : text-indent 0.3s ease ;} .input :focus:-ms-input-placeholder { text-indent : 500px ; transition : text-indent 0.3s ease ;} /* сдвиг placeholder-а вниз при фокусе*/ .input ::-webkit-input-placeholder { line-height : 20px ; transition : line-height 0.5s ease ;} .input ::-moz-placeholder { line-height : 20px ; transition : line-height 0.5s ease ;} .input :-moz-placeholder { line-height : 20px ; transition : line-height 0.5s ease ;} .input :-ms-input-placeholder { line-height : 20px ; transition : line-height 0.5s ease ;} .input :focus::-webkit-input-placeholder { line-height : 100px ; transition : line-height 0.5s ease ;} .input :focus::-moz-placeholder { line-height : 100px ; transition : line-height 0.5s ease ;} .input :focus:-moz-placeholder { line-height : 100px ; transition : line-height 0.5s ease ;} .input :focus:-ms-input-placeholder { line-height : 100px ; transition : line-height 0.5s ease ;}
На этом и закончим.
Плейсхолдер - элемент поля ввода, в котором можно разместить подсказку. Когда пользователь начинает вводить данные, вспомогательный текст пропадает, чтобы не мешать. Каждый браузер имеет свое мнение на счет того, как следует отображать этот элемент, и порой дефолтные стили ломают весь дизайн. Чтобы управлять ими, требуется воспользоваться специальным правилом CSS placeholder.
Где находится плейсхолдер?
Проблема в том, что подсказка поля ввода надежно спрятана в теневом DOM, и добраться до нее не так-то просто. Для этого используется особый нестандартный псевдоэлемент CSS::placeholder. С его помощью можно управлять свойствами подсказки.
You will be interested:
Стилизация placeholder на CSS выглядит так:
input::placeholder {
color: red;
opacity: 1;
font-style: italic;
}
Поддержка браузерами
Псевдоэлемент CSS placeholder хорошо обрабатывается всеми современными браузерами, а для поддержки старых обозревателей можно воспользоваться префиксами:
- ::-webkit-input-placeholder - для webkit-браузеров (Safari, Chrome, Opera);
- ::-moz-placeholder - для браузеров Firefox выше 19 версии;
- :-moz-placeholder - для старых Firefox;
- :-ms-input-placeholder - для Internet Explorer выше 10 версии.
Как видно, старые браузеры Mozilla, а также IE считают placeholder CSS-псевдоклассом, а не псевдоэлементом. Не будем с ними спорить, просто учтем этот аспект при стилизации поля ввода.
Возможности стилизации
Для псевдоэлемента placeholder в CSS можно установить следующие параметры:
- фон - группа background-свойств. Фон блока подсказки распространяется на все поле ввода. Можно задать не только цвет (background-color), но и изображение (background-image).
- цвет текста - color;
- прозрачность - opacity;
- подчеркивание, надчеркивание или зачеркивание - text-decoration;
- регистр - text-transform;
- внутренние отступы - padding. Поддерживается не всеми браузерами. Как для строчных элементов, верхний и нижний отступы игнорируются.
- отображение шрифта - свойства группы font, line-height и разнообразные отступы (text-indent, letter-spacing, word-spacing);
- вертикальное выравнивание в строке - vertical-align;
- обрезка текста при переполнении контейнера - text-overflow.
Input1::placeholder { background-image: linear-gradient(lime, blue); color: white; } .input2::placeholder { text-decoration: line-through; color: purple; font-weight: bold; } .input3::placeholder { font-size: 16px; letter-spacing: 10px; } .input4::placeholder { background: brown; color: white; text-overflow: ellipsis; }
В фокусе
По умолчанию подсказка пропадает из поля ввода только в том случае, если в него введен хотя бы один символ. Но псевдоэлемент CSS placeholder позволяет реализовать исчезновение сразу при фокусировке на поле. Для этого необходимо совместить его с псевдоклассом:focus.
input:focus::placeholder { color: transparent; }
В некоторых браузерах допустимо анимировать изменение ряда свойств плейсхолдера с помощью инструкции transition.
input::placeholder { color: black; transition: color 1s; } input:focus::placeholder { color: white; }
В браузере Google Chrome цвет подсказки при фокусировке на таком поле будет плавно изменяться в течение одной секунды.
Плейсхолдер - элемент поля ввода, в котором можно разместить подсказку. Когда пользователь начинает вводить данные, вспомогательный текст пропадает, чтобы не мешать. Каждый браузер имеет свое мнение на счет того, как следует отображать этот элемент, и порой дефолтные стили ломают весь дизайн. Чтобы управлять ими, требуется воспользоваться специальным правилом CSS placeholder.
Где находится плейсхолдер?
Проблема в том, что подсказка поля ввода надежно спрятана в теневом DOM, и добраться до нее не так-то просто. Для этого используется особый нестандартный ::placeholder. С его помощью можно управлять свойствами подсказки.
Стилизация placeholder на CSS выглядит так:
Input::placeholder { color: red; opacity: 1; font-style: italic; }
Поддержка браузерами
Псевдоэлемент CSS placeholder хорошо обрабатывается всеми современными браузерами, а для поддержки старых обозревателей можно воспользоваться префиксами:
- ::-webkit-input-placeholder - для webkit-браузеров (Safari, Chrome, Opera);
- ::-moz-placeholder - для браузеров Firefox выше 19 версии;
- :-moz-placeholder - для старых Firefox;
- :-ms-input-placeholder - для Internet Explorer выше 10 версии.
Как видно, старые браузеры Mozilla, а также IE считают placeholder CSS-псевдоклассом, а не псевдоэлементом. Не будем с ними спорить, просто учтем этот аспект при стилизации поля ввода.
Возможности стилизации
Для псевдоэлемента placeholder в CSS можно установить следующие параметры:
- фон - группа блока подсказки распространяется на все поле ввода. Можно задать не только цвет (background-color), но и изображение (background-image).
- цвет текста - color;
- прозрачность - opacity;
- подчеркивание, надчеркивание или зачеркивание - text-decoration;
- регистр - text-transform;
- внутренние отступы - padding. Поддерживается не всеми браузерами. Как для строчных элементов, верхний и нижний отступы игнорируются.
- отображение шрифта - свойства группы font, line-height и разнообразные отступы (text-indent, letter-spacing, word-spacing);
- вертикальное выравнивание в строке - vertical-align;
- обрезка текста при переполнении контейнера - text-overflow.
В фокусе
По умолчанию подсказка пропадает из поля ввода только в том случае, если в него введен хотя бы один символ. Но placeholder позволяет реализовать исчезновение сразу при фокусировке на поле. Для этого необходимо совместить его с псевдоклассом:focus.
Input:focus::placeholder { color: transparent; }
В некоторых браузерах допустимо анимировать изменение ряда свойств плейсхолдера с помощью инструкции transition.
Input::placeholder { color: black; transition: color 1s; } input:focus::placeholder { color: white; }
В браузере Google Chrome цвет подсказки при фокусировке на таком поле будет плавно изменяться в течение одной секунды.