:placeholder-shown

Стилизуем поля, в которых ничего не введено, виден плейсхолдер.

Время чтения: меньше 5 мин

Кратко

Скопировано

Псевдокласс :placeholder-shown выбирает на странице все <input> или <textarea>, у которых показывается подсказка (плейсхолдер).

Пример

Скопировано
        
          
          <input placeholder="Введите ваше имя">
          <input placeholder="Введите ваше имя">

        
        
          
        
      
        
          
          input {  border: 1px solid black;}input:placeholder-shown {  border-color: teal;}
          input {
  border: 1px solid black;
}

input:placeholder-shown {
  border-color: teal;
}

        
        
          
        
      

Как понять

Скопировано

Если полю ввода задан атрибут placeholder с каким-то значением, то внутри поля будет показана текстовая подсказка. Она пропадёт, если пользователь введёт хотя бы один символ. По сути псевдокласс :placeholder-shown будет применять стили к пустым полям ввода.

Как пишется

Скопировано

Двоеточие и ключевое слово placeholder-shown.

        
          
          :placeholder-shown {  color: teal;}
          :placeholder-shown {
  color: teal;
}

        
        
          
        
      

Подсказки

Скопировано

💡 Псевдокласс :placeholder-shown — это не то же самое, что псевдоэлемент ::placeholder. Псевдокласс применит стили к самому полю ввода. А стили, применённые к псевдоэлементу ::placeholder, изменят внешний вид текста-подсказки, но никак не затронут само поле ввода.

На практике

Скопировано

Денис Ежков советует

Скопировано

🛠 Этот псевдокласс можно использовать совместно с псевдоклассом :invalid для стилизации некорректно заполненных полей ввода.

🛠 Иногда длина подсказки больше ширины текстового поля. В результате она некрасиво обрезается. Можно использовать псевдокласс :placeholder-shown, чтобы сделать обрезку чуть симпатичнее:

        
          
          <p>Обычная обрезка</p><input type="text" placeholder="Можно искать по номеру телефона, фамилии или email"><p>Красивая обрезка</p><input type="text" placeholder="Можно искать по номеру телефона, фамилии или email" class="ellipsis">
          <p>Обычная обрезка</p>
<input type="text" placeholder="Можно искать по номеру телефона, фамилии или email">

<p>Красивая обрезка</p>
<input type="text" placeholder="Можно искать по номеру телефона, фамилии или email" class="ellipsis">

        
        
          
        
      
        
          
          .ellipsis:placeholder-shown {  text-overflow: ellipsis;}
          .ellipsis:placeholder-shown {
  text-overflow: ellipsis;
}

        
        
          
        
      
Открыть демо в новой вкладке

Алексей Казаков советует

Скопировано

🛠 Псевдокласс :placeholder-shown позволяет реализовать всплывающую подпись при фокусе в поле формы без использования JavaScript.

Открыть демо в новой вкладке