Placeholder textarea css – Стилизуем placeholder при помощи CSS. Синтаксис, трюки, поддерживаемые стили в html5

Псевдоэлемент ::placeholder | CSS | WebReference

Псевдоэлемент, с помощью которого задаётся стилевое оформление подсказывающего текста, созданного атрибутом placeholder. Допускается использовать свойства для изменения вида текста, например, задать шрифт и цвет.

Синтаксис ?

Селектор::placeholder { ... }

Обозначения

ОписаниеПример
<тип>Указывает тип значения.<размер>
A && BЗначения должны выводиться в указанном порядке.<размер> && <цвет>
A | BУказывает, что надо выбрать только одно значение из предложенных (A или B).normal | small-caps
A || BКаждое значение может использоваться самостоятельно или совместно с другими в произвольном порядке.width || count
[ ]Группирует значения.[ crop || cross ]
*Повторять ноль или больше раз.[,<время>]*
+Повторять один или больше раз.<число>+
?Указанный тип, слово или группа не является обязательным.inset?
{A, B}Повторять не менее A, но не более B раз.<радиус>{1,4}
#Повторять один или больше раз через запятую.<время>#
×

Пример

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>placeholder</title>
  <style>
   body { background: #053f38; }
   input[type="search"] { 
    border: 1px solid #98baba; /* Параметры рамки */
    background: transparent; /* Прозрачный фон */
    padding: 1px 4px; /* Поля вокруг текста */
    color: #fff; /* Цвет текста */
   }
   input[type="search"]::-moz-placeholder {
    color: #ffd595; /* Цвет подсказывающего текста */
   }
   input[type="search"]::-webkit-input-placeholder { color: #ffd595; }
   input[type="search"]:-ms-input-placeholder { color: #ffd595; }
   input[type="search"]::-ms-input-placeholder { color: #ffd595; }
   input[type="search"]::placeholder { color: #ffd595; } 
  </style>
 </head>
 <body>
  <form action="handler.php">
   <p><input type="search" placeholder="Поиск по сайту" name="q">
      <input type="submit" value="Найти"></p>
  </form>
 </body>
</html>

Результат примера показан на рис. 1.

Использование ::placeholder

Рис. 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.

Браузеры

В таблице браузеров применяются следующие обозначения.

  •  — свойство полностью поддерживается браузером со всеми допустимыми значениями;
  •  — свойство браузером не воспринимается и игнорируется;
  •  — при работе возможно появление различных ошибок, либо свойство поддерживается лишь частично, например, не все допустимые значения действуют или свойство применяется не ко всем элементам, которые указаны в спецификации.

Число указывает версию браузера, начиная с которой свойство поддерживается.

×

Автор и редакторы

Автор: Влад Мержевич

Последнее изменение: 30.08.2017

Редакторы: Влад Мержевич

Курс по вёрстке сайта на CSS Grid

Атрибут placeholder | htmlbook.ru

Internet Explorer Chrome Opera Safari Firefox Android iOS
10.0+ 8.0+ 11.50+ 5.0+ 4.0+ 3.0+ 3.0+

Спецификация

HTML: 3.2 4.01 5.0 XHTML: 1.0 1.1

Описание

Выводит текст внутри текстового поля, который исчезает при получении фокуса.

Синтаксис

<textarea placeholder="строка">
</textarea>

Значения

Текстовая строка. Если внутри строки предполагается пробел, ее необходимо брать в двойные или одинарные кавычки.

Значение по умолчанию

Нет.

Пример

HTML5IE 10CrOpSaFx

<!DOCTYPE html>
<html>
 <head>
  <meta charset="utf-8">
  <title>Тег textarea, атрибут placeholder</title>
 </head>
 <body>
   <form action="handler.php">
     <p><textarea placeholder="Ваше сообщение"></textarea></p>
     <p><input type="submit" value="Отправить"></p>
   </form>
 </body>
</html>

Результат данного примера в браузере Chrome показан на рис. 1.

Рис. 1. Вид текста, созданного с помощью атрибута placeholder

Firefox 4 допускает изменять стиль текста, выводимого через атрибут placeholder, с помощью псевдокласса :-moz-placeholder.

textarea:-moz-placeholder { color: red; }

В Safari и Chrome стиль текста меняется следующим образом:

textarea::-webkit-input-placeholder { color: red; }

Стилизуем placeholder при помощи CSS. Синтаксис, трюки, поддерживаемые стили в html5

Атрибут placeholder применяется для призыва к действию внутри пустых элементов input и textarea. В этой статье мы рассмотрим возможности стилизации текста placeholder-a, а также некоторые трюки, которые позволят сделать его более удобным и функциональным.

Итак, начнем с примера для тех, кто не знает, что такое placeholder.

html
<input type="text" placeholder="Оставьте сообщение здесь">

input placeholder demo

Стиль placeholder-a можно изменить с помощью такого набора css правил:

css
::-webkit-input-placeholder {color:#c0392b;}
::-moz-placeholder          {color:#c0392b;}/* Firefox 19+ */
:-moz-placeholder           {color:#c0392b;}/* Firefox 18- */
:-ms-input-placeholder      {color:#c0392b;}

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

В IE и старых firefox (до 18-го) placeholder считается псевдоклассом, а в новых firefox, webkit и blink – псевдоэлементом.

Смотрим, что получилось:

input placeholder demo

Нужно сказать, что поддерживаются не все возможные css свойства. Большинство современных браузеров позволяют изменить:

  • font (и сопутствующие свойства)
  • background (и сопутствующие свойства)
  • color
  • word-spacing
  • letter-spacing
  • text-decoration
  • vertical-align
  • text-transform
  • line-height
  • text-indent
  • text-overflow
  • opacity

А если placeholder не вмещается?

Иногда поля для ввода текста сокращаются по ширине из-за особенностей лейаута, в частности на мобильных девайсах. В этом случае длинный текст placeholder-а будет некрасиво обрезан. Чтобы предотвратить это, вы можете использовать text-overflow: ellipsis. Такой синтаксис будет работать во всех новых браузерах.

css
input[placeholder]          {text-overflow:ellipsis;}
input::-moz-placeholder     {text-overflow:ellipsis;} 
input:-moz-placeholder      {text-overflow:ellipsis;} 
input:-ms-input-placeholder {text-overflow:ellipsis;}    

input placeholder demo

Как скрыть placeholder при фокусе?

Скрывание placeholder-а происходит по-разному.

  1. в некоторых браузерах при получении фокуса инпутом
  2. в других браузерах при наличии хотя бы одного введенного символа

Мне больше нравится первый вариант. Для того, чтобы задать такое поведение во всех браузерах, поддерживающих placeholder, определим следующие css правила:

css
:focus::-webkit-input-placeholder {color: transparent}
:focus::-moz-placeholder          {color: transparent}
:focus:-moz-placeholder           {color: transparent}
:focus:-ms-input-placeholder      {color: transparent}

input placeholder demo

Скрываем placeholder красиво

Можно также добавить transition для появления и скрытия placeholder-a:

input placeholder demo

Вот сss:

css
/* плавное изменение прозрачности  placeholder-а при фокусе */
.input1::-webkit-input-placeholder       {opacity: 1; transition: opacity 0.3s ease;}
.input1::-moz-placeholder                {opacity: 1; transition: opacity 0.3s ease;}
.input1:-moz-placeholder                 {opacity: 1; transition: opacity 0.3s ease;}
.input1:-ms-input-placeholder            {opacity: 1; transition: opacity 0.3s ease;}
.input1:focus::-webkit-input-placeholder {opacity: 0; transition: opacity 0.3s ease;}
.input1:focus::-moz-placeholder          {opacity: 0; transition: opacity 0.3s ease;}
.input1:focus:-moz-placeholder           {opacity: 0; transition: opacity 0.3s ease;}
.input1:focus:-ms-input-placeholder      {opacity: 0; transition: opacity 0.3s ease;}

/* сдвиг placeholder-а вправо при фокусе*/

.input2::-webkit-input-placeholder       {text-indent: 0px;   transition: text-indent 0.3s ease;}
.input2::-moz-placeholder                {text-indent: 0px;   transition: text-indent 0.3s ease;}
.input2:-moz-placeholder                 {text-indent: 0px;   transition: text-indent 0.3s ease;}
.input2:-ms-input-placeholder            {text-indent: 0px;   transition: text-indent 0.3s ease;}
.input2:focus::-webkit-input-placeholder {text-indent: 500px; transition: text-indent 0.3s ease;}
.input2:focus::-moz-placeholder          {text-indent: 500px; transition: text-indent 0.3s ease;}
.input2:focus:-moz-placeholder           {text-indent: 500px; transition: text-indent 0.3s ease;}
.input2:focus:-ms-input-placeholder      {text-indent: 500px; transition: text-indent 0.3s ease;}

/* сдвиг placeholder-а вниз при фокусе*/

.input3::-webkit-input-placeholder       {line-height: 20px;  transition: line-height 0.5s ease;}
.input3::-moz-placeholder                {line-height: 20px;  transition: line-height 0.5s ease;}
.input3:-moz-placeholder                 {line-height: 20px;  transition: line-height 0.5s ease;}
.input3:-ms-input-placeholder            {line-height: 20px;  transition: line-height 0.5s ease;}
.input3:focus::-webkit-input-placeholder {line-height: 100px; transition: line-height 0.5s ease;}
.input3:focus::-moz-placeholder          {line-height: 100px; transition: line-height 0.5s ease;}
.input3:focus:-moz-placeholder           {line-height: 100px; transition: line-height 0.5s ease;}
.input3:focus:-ms-input-placeholder      {line-height: 100px; transition: line-height 0.5s ease;}

Надеюсь, вам это пригодится. Пишите замечания и предложения в комментариях.

Стилизация и анимация placeholder в input и textarea при помощи CSS

Обычно атрибут 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:focus::-webkit-input-placeholder {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;}

На этом и закончим.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *