Поменять цвет placeholder css. Как изменить цвет замещающего текста поля формы

Поменять цвет placeholder css. Как изменить цвет замещающего текста поля формы

Из этого туториала Вы узнаете, как изменить цвет замещающего текста (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 у input уже никого не удивишь. Placeholder — это такой временный текст с примером внутри input, который исчезает при вводе текста. CSS стиль для placeholder, мы и постараемся сегодня прописать.

    Задача: сделать свой css стиль для placeholder

    Допустим у нас есть стильный сайт, в котором в input используется placeholder. Нам нужно сделать так, чтобы серый муторный стиль текста placeholder’a выглядел в общем стиле сайта. Как же этого достичь? Сразу скажу, что это работает пока не во всех браузерах. Конкретно в IE версии 9 и ниже не работает вообще, в 10 и далее пока работает с большими трудностями. Другое дело Firefox и webkit-браузеры.

    Решение: css стиль для placeholder

    Итак, задачу мы поставили, как же будем её решать?

    Сначала сделаем полигон для тестирования:

    Готово, теперь посмотрим, что можно сделать со стилем: у webkit и mozilla есть собственные модификаторы, которые позволяют назначать особенный стиль для placeholder: ::-webkit-input-placeholder и:-moz-placeholder. Посмотрим как их использовать:

    Опишем стиль самого input и текст в нем (синий цвет для контраста в примере):

    Input{ width: 250px; color: blue; font-weight: normal; font-style: normal; }

    Теперь пропишем специальный стиль для текста placeholder в этом input для Webkit браузеров (Chrome, Safari, Opera):

    Input::-webkit-input-placeholder{ color: red; font-style: italic; font-weight: bold; }

    Сделаем текст плейсхолдера красным жирным курсивом. Обратите внимание, в отличие от других псевдо-классов CSS, которые отделяются одинарным двоеточием, стиль для placeholder в webkit отделяется двойным двоеточием.

    Теперь пропишем точно такой же стиль для Mozilla Firefox браузеров:

    Input:-moz-placeholder{ color: red; font-style: italic; font-weight: bold; }

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

    Надеюсь, эта статья поможет вам сделать ваш сайт более удобным для пользователей.

    Если вы не знакомы с атрибутом 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, который есть у элементов, которые созданы для ввода текста (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; }

    Псевдоэлемент::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



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