W3docs

CSS псевдоэлемент ::placeholder

Используйте CSS-селектор ::placeholder для выбора элемента с текстом-заполнителем. Узнайте о псевдоэлементе и изучите примеры.

Псевдоэлемент ::placeholder выбирает текст-заполнитель поля формы — короткую подсказку, отображаемую внутри пустого <input> или <textarea>, которая исчезает, как только пользователь начинает вводить текст. Он соответствует только элементам, имеющим атрибут placeholder. По умолчанию браузеры отображают текст-заполнитель полупрозрачным или светло-серым цветом.

::placeholder псевдоэлемент

Сам текст подсказки берётся из HTML-атрибута placeholder, а ::placeholder позволяет задать стиль отображения этой подсказки — её цвет, шрифт и так далее.

Когда применять

Используйте ::placeholder, когда хотите, чтобы подсказка хорошо читалась на фоне формы или соответствовала фирменным цветам. Несколько важных моментов перед тем, как начать стилизацию:

  • Применяется ограниченный набор свойств. Поскольку заполнитель является «псевдоконтентом», можно использовать свойства, влияющие на сам текст: color, font-*, letter-spacing, text-decoration, opacity, background и ряд других. Свойства макета (например, margin или width) не оказывают никакого эффекта.
  • Обеспечьте достаточный контраст. Светло-серый цвет по умолчанию нередко не соответствует требованиям доступности по контрасту. Если вы меняете цвет, убедитесь, что текст остаётся читаемым.
  • Заполнитель — не метка. Он исчезает, как только пользователь начинает печатать, поэтому он никогда не должен заменять настоящий <label>. Используйте его для примера значения, но не в качестве названия поля.
Информация

Вендорные префиксы (-webkit-, -moz-, -ms-) устарели и не нужны для современных браузеров. Стандартный селектор ::placeholder поддерживается везде, поэтому можно безопасно писать единственное правило ::placeholder.

Версия

Selectors Level 4

Синтаксис

Пример синтаксиса CSS ::placeholder

::placeholder {
  css declarations;
}

Пример селектора ::placeholder:

Пример CSS ::placeholder

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      input::placeholder {
        color: #1c87c9;
        font-size: 1.2em;
        font-style: italic;
      }
    </style>
  </head>
  <body>
    <h2>::placeholder selector example</h2>
    <input placeholder="Type here..." />
  </body>
</html>

Пример использования селектора ::placeholder в форме:

Пример кода CSS ::placeholder

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      * {
        box-sizing: border-box;
      }
      .container {
        margin: 20px auto;
        max-width: 250px;
        background-color: #8ebf42;
        padding: 20px;
      }
      input {
        border: 1px solid #666666;
        background-color: #eeeeee;
        padding: 15px;
        margin-bottom: 20px;
        display: block;
        width: 100%;
      }
      input::-webkit-input-placeholder {
        color: #666666;
      }
      input::-moz-placeholder {
        color: #666666;
      }
      input:-ms-input-placeholder {
        color: #666666;
      }
      input::placeholder {
        color: #666666;
      }
    </style>
  </head>
  <body>
    <h2>::placeholder selector example</h2>
    <div class="container">
      <form>
        <input type="text" placeholder="Lorem ipsum is simply..." />
        <input type="date" placeholder="DD/MM/YYYY" />
      </form>
    </div>
  </body>
</html>

Пример использования селектора ::placeholder с атрибутом autofocus HTML-элемента <input>:

HTML-пример placeholder

<!DOCTYPE html>
<html>
  <head>
    <title>Title of the document</title>
    <style>
      label {
        display: block;
        color: #777777;
        margin: 0 0 4px;
      }
      input {
        border: 1px solid transparent;
        padding: 15px;
        font-size: 1.2em;
        outline: 0;
      }
      input::placeholder {
        color: #8ebf42;
      }
      label,
      input {
        font-family: sans-serif;
      }
    </style>
  </head>
  <body>
    <h2>::placeholder selector example</h2>
    <form action="#">
      <div>
        <label for="name">Name:</label>
        <input id="name" name="name" type="text" placeholder="Enter your name here" autofocus />
      </div>
    </form>
  </body>
</html>

Связанные темы

Практика

Практика
Что представляет собой псевдоэлемент ::placeholder в CSS?
Что представляет собой псевдоэлемент ::placeholder в CSS?
Was this page helpful?