Изменить цвет placeholder. Оформление плейсхолдера с помощью CSS стилей

Изменить цвет placeholder. Оформление плейсхолдера с помощью CSS стилей

11.05.2019

Из этого туториала Вы узнаете, как изменить цвет замещающего текста (placeholder text color) поля формы.

Замещающий текст поля формы содержит подсказку, которая указывает ожидаемые данные в поле. Это может быть пример или краткое описание ожидаемой информации. Краткая подсказка отображается в поле до того, как пользователь начнёт вводить данные.

По умолчанию, замещающий текст светло-серый (таким его отображают браузеры). Для того чтобы добавить к этому тексту пользовательские стили, Вам нужно будет использовать браузерные префиксы для свойств CSS.

Для того чтобы изменить цвет замещающего текста, следуйте таким инструкциям:

Составьте код в соответствии со следующей информацией (обратите внимание, что Вам необходимо добавить один и тот же код 4 раза для каждого браузерного префикса):

Выберите файл, в который Вы добавите код. Вы можете добавить его в любой файл CSS вашего сайта, но мы приготовили для Вас список файлов, в которые рекомендуется добавлять правила CSS для разных типов движков сайтов:

Шаблоны CMS:
  • Темы WordPress (Темы WooCommerce/Jigoshop) /wp-content/themes/themeXXXXX/style.css
  • Шаблоны Joomla (Шаблоны VirtueMart) /templates/themeXXXX/css/template.css
  • Темы Drupal /sites/all/themes/themeXXX/css/style.css
  • Шаблоны Web (HTML5) /css/style.css
Шаблоны E-commerce:
  • Темы Magento /skin/frontend /default/themeXXX/css/styles.css
  • Темы PrestaShop /themes/themeXXXX/css/global.css
  • Темы OpenCart /catalog/view/theme/themeXXX/stylesheet /stylesheet .css
  • Темы ZenCart /includes/templates/themeXXX/css/stylesheet .css
  • Шаблоны osCommerce /css/stylesheet .css
  • Шаблоны Shopify style.css.liquid
  • Сохраните изменения и загрузите файлы CSS на ваш сервер.

    Если вы не знакомы с атрибутом 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 такого вида:

    Скрываем текст при клике по полю
    По умолчанию каждый браузер интерпретирует реакцию 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 color (в некоторых случаях псевдокласс ) позволяет задать текстовое наполнение элемента формы. Он устанавливается при помощи атрибута placeholder : .

    Этот текст можно стилизовать для большинства современных браузеров с помощью специальных префиксов:

    ::-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.big-dog::-webkit-input-placeholder { color: orange; }

    Посмотреть пример

    Разница между:placeholder-shown и::placeholder

    :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

    Вы заметили, что цвет заглушек выглядит более тусклым по сравнению с другими браузерами. На картинке, приведенной ниже, слева показан 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


    Многие из вас нередко сталкивались с формами, где в качестве подсказок есть подписи. Они пропадают при на наборе текста. Так вот - это атрибут placeholder, который есть у элементов, которые созданы для ввода текста (input). С помощью него можно задать текст, который будет отображаться как подсказка до начала ввода в данное поле. К сожалению, не все браузеры одинаково корректно работают с данным атрибутом. Устаревшие версии и вовсе данный текст не отображают.

    Теперь рассмотрим как сделать так, чтобы решить нижеописанные проблемы:

    1. Как изменить стили для плейсхолдера;
    2. Как скрыть текст плейсхолдера не при вводе, а уже при нажатии на поле;
    3. Что делать с браузерами, где в принципе не отображается placeholder.

    Во всех примерах будем работать с полем input.

    Как изменить цвет текста-подсказки в placeholder в input? Давно уже не новость, что каждый браузер не только по-разному отображает placeholder, но и требует особых свойств для изменения стилей. И это я уже не говорю о соответствующих префиксах в написании. Давайте рассмотрим их.

    По умолчанию во многих браузерах цвет подсказки - серый. В данном примере сделаем его чёрным.


    ::-webkit-input-placeholder {color:#000000; opacity:1;}/* webkit */
    ::-moz-placeholder {color:#000000; opacity:1;}/* Firefox 19+ */
    :-moz-placeholder {color:#000000; opacity:1;}/* Firefox 18- */
    :-ms-input-placeholder {color:#000000; opacity:1;}/* IE */

    Свойство opacity, отвечающее за прозрачность, необходимо вводить для тех браузеров, где поддерживается прозрачность для данного элемента. В противном случае цвет будет серым, как и по умолчанию.

    И да, можно использовать для указания этих свойств классы. Смотрим ниже:

    Input-phone::-webkit-input-placeholder { color:red; }
    .input-text::-webkit-input-placeholder { color:green; }
    /* и так далее... */

    Убираем placeholder при нажатии на поле По умолчанию в браузерах текст из атрибута placeholder пропадает только после начала ввода, но есть и такие, кто хочет, чтобы этот текст не отвлекал уже на стадии нажатия на поле ввода. Чаще всего делают именно так. Для это нужна написать стили для фокуса, где цвет текста-подсказки станет полностью прозрачным, то есть его перестанет быть видно.

    :focus::-webkit-input-placeholder {opacity:0;}/* webkit */
    :focus::-moz-placeholder {opacity:0;}/* Firefox 19+ */
    :focus:-moz-placeholder {opacity:0;}/* Firefox 18- */
    :focus:-ms-input-placeholder {opacity:0;}/* IE */

    Можно даже настроить плавное изменение прозрачности или изменение цвета сss-анимацией. Но с кроссбраузерностью таких решений могут возникнуть проблемы.

    А что делать с бразуерами, которые не поддерживают атрибут placeholder в input? Ну точно не теряться) Да, действительно, такие браузеры есть. Например, IE8. И да, есть люди-адепты, которые будут им пользоваться всегда. Если нужна составить решение для всех посетителей, то наберитесь ещё немного терпения.

    Для решения этой проблемы скачайте популярный для этого jquery плагин - jquery.placeholder. Ссылок давать не буду, так как сегодня-завтра они изменятся. Но, если что, можете скачать рабочий пример с плагином в - скачать исходники.

    Подключаем его. Не стоит забывать, что нужен ещё и в принципе jquery подключить.



    $(function(){
    $("input, textarea").placeholder();
    });


    input.placeholder, textarea.placeholder. { color: green; }



  • © 2024 beasthackerz.ru - Браузеры. Аудио. Жесткий диск. Программы. Локальная сеть. Windows