Оформлення placeholder css. Як змінити колір тексту-підказки в placeholder за допомогою стилів CSS? Завдання: зробити свій css стиль для placeholder

💖 Подобається?Поділися з друзями посиланням
Зазвичай атрибут 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 : o ).input :фокус::-moz-placeholder ( opacity : 0 ; transition : opacity 0.3s ease ;) .input :фокус:-moz-placeholder ( opacity : 0 ; :-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 eas ;) .input ::-moz-placeholder ( line-height : 20px ; ;) .input :-moz-placeholder ( line-height : 20px ; transition : line-height 0.5s ease ;) .input :-ms-input-placeholder ( line-height : 20px ; transition : line-height 0.5s e ;) .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 : 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 ;)

На цьому й закінчимо.

Якщо ви не знайомі з атрибутом placeholder, то давайте трохи пояснимо, що це таке і де він використовується. Використовується в полях введення форми. Атрибут виводить напис у полі введення, представляючи роль певної підказки. Раніше на нашому сайті був приклад, з допомогою javascript, позитивна сторона даного методуце кросбраузерність. Тепер давайте поговоримо про стилізацію атрибута placeholder, який використовується в елементах input і textarea.
Код поля введення в нашому прикладі виглядатиме приблизно так:

На виході ми отримуємо таке поле:

Тепер давайте уявимо, що нам необхідно стилізувати placeholder, для цього нам слід прописати набір правил у CSS:

::-webkit-input-placeholder ( color: #c1c1c1; ) ::-moz-placeholder ( color: #c1c1c1; ) /* Firefox 19+ */ :-moz-placeholder ( color: #c1c1c1; ) /* Firefox 18- */ :-ms-input-placeholder ( color: #c1c1c1; )

Отримуємо:

Змінювати ми можемо не всі властивості, але список більшості з них, що підтримуються сучасними браузерами, наведено нижче:
font(Так само суміжні властивості)
background(Так само суміжні властивості)
color
word-spacing
letter-spacing
text-decoration
vertical-align
text-transform
line-height
text-indent
text-overflow
opacity

У різних браузерахправило пишеться по-різному, т.к. доки немає єдиного стандарту, цей набір записів продовжує бути актуальним. У браузері IE, а також firefox нижче 18 версії placeholder сприймається як псевдоклас, а в нових браузерах firefox, webkit і blink сприймається як псевдоелемент.

Скорочення тексту в placeholder
Іноді підказки можуть бути такої довжини, що не можуть повністю поміститися в полі введення. Для цих цілей можна також скористатися додатковими властивостями, які дозволять скоротити текст placeholder-а в полі введення.

Input ( text-overflow:ellipsis; ) input::-moz-placeholder ( text-overflow:ellipsis; ) input:-moz-placeholder ( text-overflow:ellipsis; ) input:-ms-input-placeholder ( text-overflow : ellipsis; )

В результаті отримуємо поле введення такого з місця, що містить такий вид:

Приховуємо текст під час кліку по полю
За замовчуванням кожен браузер інтерпретує реакцію placeholder-a по-своєму. В одних браузерах він ховається відразу при натисканні на поле, в інших він ховається за наявності хоча б одного символу в полі введення. Давайте зробимо так, щоб текст ховався при натисканні по полю, однаково у всіх браузерах.

:focus::-webkit-input-placeholder ( color: transparent; ) :focus::-moz-placeholder ( color: transparent; ) :focus:-moz-placeholder ( color: transparent; ) :focus:-ms-input -placeholder ( color: transparent; )

Отримуємо таке дійство:

Прагнучи зменшити форму та скоротити візуальний шум, дизайнери тег

Погано

добре

Стилізація: змінити колір placeholder CSS

Змінити стиль поля введення з placeholder CSS

Погано

Ефект placeholder для

Атрибут placeholder працює тільки для і