Как сделать подпись к input

Добавил пользователь Валентин П.
Обновлено: 05.10.2024

Тег label задает метку для поля ввода типа input , textarea , select и так далее.

Метка привязывается к определенному полю ввода с помощью атрибута for . В нем следует указывать значение атрибута id поля ввода, к которому привязана метка. Также метка привязывается к элементу, если этот элемент положить вовнутрь тега label. В этом случае атрибут for указывать не надо. Смотрите примеры для лучшего понимания.

По нажатию на метку привязанные к ней чекбоксы или радио кнопочки будут менять свое состояние с отмеченного на неотмеченное и наоборот. Метка в данном случае нужна для удобства: в мелкие элементы формы тяжело попасть курсором, а в длинную метку с текстом - на порядок легче.

Привязанное к метке текстовое поле ввода типа input и textarea будет получать фокус ввода. Фокус - это когда курсор моргает в поле ввода, в этом случае, если вы что-то будете писать на клавиатуре - текст попадет в это поле (см. псевдокласс focus для продвинутого понимания фокуса).

Метку label можно использовать для имитации чекбокса или радио кнопочки. Это нужно для того, чтобы сделать checkbox или radio со своим дизайном (что на CSS запрещено, но с помощью хитрых приемов возможно).

Атрибуты

Атрибут Описание
for В данном атрибуте следует указывать значение атрибута id того поля ввода, к которому привязана метка label .
accesskey Задает горячую клавишу, с помощью которой можно перейти к привязаному к метке (через атрибут for ) элементу формы. Подробнее см. атрибут accesskey .

Пример . Чекбокс

Давайте к флажку checkbox привяжем метку с помощью атрибута for . Понажимайте на метку и вы увидите смену состояния флажка с отмеченного на неотмеченное и наоборот:

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

Эта техника — пример прогрессивного UX, когда подписи к полям формы утрачивают важность по мере того, как пользователь продолжает заполнять форму. Утрачивающие по ходу взаимодействия с пользователем важность элементы уходят на второй план, а новые и актуальные перемещаются на передний план.

Рассуждения о семантике

Всю HTML-разметку веб-страницы можно сделать с помощью только

Это плохо не только для доступности, но и для самой HTML-разметки, состоящей из элементов одинакового типа, например, из одних div . Поначалу с этим ещё можно справляться, но по мере развития кода, отсутствие семантики в разметке доставит немало проблем с его поддержкой и расширением. Поэтому следует использовать правильные HTML-элементы в правильном контексте, т.е. в соответствии с их назначением. Так можно бесплатно получить много готовых решений и обойтись без изобретения велосипедов.

В случае с текстовыми полями и метками к ним, для обоих есть соответствующие HTML-элементы: input и label . У HTML-элемента label есть атрибут for , который позволяет связать метку и текстовое поле input . Вот как это выглядит в коде:

Пробел в значении атрибута placeholder — трюк, позволяющий для управления логикой фокуса использовать только CSS.

Обнаружение изменений при вводе текста

Атрибут placeholder у поля формы позволяет использовать CSS-правило :placeholder-shown . Тогда только с помощью CSS и без Javascript, можно легко определить, есть ли в input значение. Когда значение атрибута placeholder текстового input должно быть видимым, в текстовом поле (из примера кода выше) будет показываться прозрачный пробел. Если браузер показывает содержимое из placeholder , точно известно, что у input нет значения, т.е. поле не заполнено.

После ввода в текстовое поле текста браузер автоматически скрывает его placeholder . Это не будет заметно, поскольку в нём используется прозрачный пробел. Зато технически теперь у текстового поля есть значение, а браузер переключил отображаемое состояние подсказки ( placeholder ). Это состояние позволяет CSS управлять другими элементами в зависимости от того, есть ли в текстовом поле input какое-нибудь значение или нет.

Как работает CSS-правило :placeholder-shown

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

  1. Фокус помещён в текстовом поле
  2. У input есть какое-то значение. Это рассмотренный выше случай, когда скрывается placeholder .

Вот как написать эти условия в CSS:

Фрагмент CSS устанавливает стиль подписи-метки в зависимости от состояния текстового поля. Селектор ~ — это то, что соединяет input и следующий после него в HTML-коде label и расположенный на том же уровне. Когда это CSS-правило становится активным, подпись к полю меняет свой внешний вид: перемещается и масштабируется. Т.е. покидает поле ввода и не мешает пользователю печатать в нём.

Чтобы оживить переход состояния метки, можно добавить такой переход.

Лучше этот переход разделить на два и таким образом выделять метку, когда фокус переместится в поле ввода текста. Всегда полезно дать пользователю визуальную подсказку о том, где находятся курсор и фокус. Курсор во многих случаях слишком тонкий, поэтому уделить больше внимания тому факту, что фокус перемещен в поле для ввода не повредит.

Кармашки для меток

Для кармашков подойдут контейнеры со скругленными углами того же цвета, что и фон.

кармашки для прыгающих label

На картинке для наглядности цвет контейнеров-кармашков показан ярким и четким. Он иллюстрирует форму HTML-узлов, которые для этого используются.

Может показаться излишним использовать два элемента для label и его подложки вместо того, что окажется одним. Однако так будет проще нарисовать кармашек поверх существующей разметки и добавить ему какие-нибудь трансформации для эффектного появления.

Тогда для перемещения кармашка-подложки можно использовать точно такую ​​же логику трансформации как для текста. Единственное отличие состоит в том, что контейнер со скругленными углами по вертикали перемещается в противоположном направлении навстречу тексту.

Пример

В заключение

Лёгкая анимация элементов формы в ответ на действия пользователя усиливает ощущение ответной реакции, а перемещение подсказок в ответ на изменение состояния поля ввода — хороший пример прогрессивного UX.

Чтобы определить, когда нужно активировать анимацию используется только CSS.

Для демонстрации перемещения подписи-метки поля ввода формы, использован CSS-transition для translate и scale .

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

Он связывает текст и поле ввода логически. А ещё если щёлкнуть по тексту в такой подписи, то курсор переместится в соответствующее поле.

Иногда обернуть поле и текст подписи в тег нельзя. Например, когда они размещены в разных ячейках таблицы.

В этом случае можно связать подпись с полем с помощью атрибута id. Алгоритм такой:

1. Добавляем к полю ввода идентификатор с помощью атрибута id.

2. Оборачиваем текст подписи в тег .

3. Добавляем тегу атрибут for.

4. В атрибут for записываем такое же значение, что и в атрибуте id у поля.

Имяпользователя . много-многодругихтегов.

Многострочное текстовое поле создаётся с помощью парного тега

Поле-галочка — это тег с типом checkbox.

Чтобы галочка стояла по умолчанию, нужно добавить к тегу атрибут checked. Вот так:

Поле-переключатель — это тег с типом radio.

Обычно переключатели размещают группами по несколько штук. Причём у переключателей из одной группы должно быть одинаковое имя и разные значения, которые задаются c помощью value.

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

Раскрывающийся список так же, как и переключатель, позволяет выбрать один вариант ответа из нескольких.

Раскрывающийся список создаётся с помощью парного тега

В атрибуте value тега задаётся значение варианта ответа, а внутри этого тега располагается подпись варианта ответа.

Если при отправке формы у выбранного варианта задан value, то на сервер отправится значение этого атрибута. В противном случае будет отправлен текст подписи.

Чтобы сделать это, нужно добавить к тегу атрибут multiple

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

При отправке данных мультиселекта на сервер с PHP после имени в значении атрибута nameставятся символы квадратных скобок []. Например, . Это необязательное требование для имени мультиселекта, а нужно только для корректной обработки данных в PHP.

Поле для загрузки файлов

Поле для загрузки файлов — это тег с типом file. Для этого поля обязательным атрибутом является имя.

Чтобы поле заработало и браузер смог передать выбранный файл на сервер, необходимо добавить форме атрибут enctype со значением multipart/form-data. Не полю, а форме.

Скрытое поле

Например, это могут быть реквизиты заказа или номер пользователя в форме оплаты.

Скрытое поле — это тег с типом hidden.

Введение в CSS

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

· работа с размерами и отступами;

· декоративные: цвета, фон, тени;

Когда для одного и того же элемента есть несколько CSS-правил с одинаковыми свойствами, браузер использует понятия приоритетов и специфичности, чтобы выбрать значение свойства из нескольких возможных. Упрощённо, можно сказать что:

1. CSS-правила в значении атрибута style самые приоритетные,

2. за ними идёт селектор с id,

3. затем селектор с классом,

4. затем селектор с именем тега.

Если селекторы однотипные, как в нашем случае, то тогда более приоритетным является CSS-правило, которое расположено ниже в коде.

Другой важный механизм CSS — это наследование. Он заключается в том, что часть стилей может передаваться от родительского элемента к дочерним (вложенным в него).

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

Ещё пример: тег ul является родительским по отношению к вложенным в него тегам li. Если задать для ul шрифт курсивом, то и внутри всех li шрифт станет курсивным.

Контекстные селекторы используются для вложенных друг в друга элементов, а соседние — для расположенных рядом.

Соседние селекторы записываются с помощью знака +, например, селектор1 + селектор2. Стили применятся к элементу, подходящему под селектор2, только если сразу перед ним расположен элемент, подходящий под селектор1.

Пример. Есть два элемента списка:

Селектор .hit + .miss применит стили к элементу с классом miss, так как перед ним есть элемент с классом hit.

Контекстные селекторы влияют на всех потомков, что не всегда удобно. Иногда необходимо задать стили только для дочерних элементов. Особенно это полезно при работе с многоуровневыми списками.

Для этого существует дочерний селектор, в котором используется символ >. Например: ul>li или ul>li>span.

Псевдоклассы

Псевдокласс добавляется к селектору c помощью символа :, вот так селектор:псевдокласс. Например:

a:visited < . >li:last-child < . >.alert:hover

Псевдокласс first-child позволяет выбрать первый дочерний элемент родителя, а last-child — последний дочерний элемент.

С помощью псевдокласса nth-child можно выбирать теги по порядковому номеру, не используя классы. Синтаксис псевдокласса: селектор:nth-child(выражение). Выражением может быть число или формула. Например:

1. li:nth-child(2) < . >2. li:nth-child(4) < . >3. li:nth-child(2n)

Первый селектор выберет второй элемент списка, второй селектор — четвёртый элемент списка, третий селектор — все чётные элементы.

Сначала познакомимся с псевдоклассом :hover.

Этот псевдокласс позволяет выбрать элемент, когда на него наведён курсор мыши и кнопка мыши не нажата. Примеры:

1. a:hover < . >2. tr:hover < . >3 .menu-item:hover

Это означает, что при наведении на селектор1 мы изменяем свойства селектор2

Опасности нашей повседневной жизни: Опасность — возможность возникновения обстоятельств, при которых.

Стилизация текстовых полей формы

В этой статье рассмотрим различные варианты стилизации текстовых полей HTML-форм. Сначала создадим базовый вариант оформления input, а затем множество других, дополняя каждый из них небольшим количеством CSS.

Введение

Веб-формы являются неотъемлемой частью многих веб-сайтов. Они позволяют пользователю ввести те или иные данные, которые затем отправляются на сервер или обрабатываются на стороне клиента, например, для изменения интерфейса.

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

Стилизация формы выполняется через CSS. В этом руководстве остановимся и подробно рассмотрим различные варианты оформления её текстовых полей .

Нормализация стилей

1. Настройка box-sizing .

Обычно хорошей практикой считается для всех элементов включая псевдоэлементы установить box-sizing: border-box :

В этом случае браузер при рассчитывании ширины и высоты элементов будет включать в них поля (padding) и границы (border). Как правило, это сильно упрощает работу с размерами элементов, и избавляет нас от множества проблем при размещении контента.

2. Нормализация стилей .

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

Базовый вариант оформления input

Для удобного добавления к элементам стилей создадим следующую HTML-разметку:

Т.е. добавим к с type="text" класс text-field__input , к – text-field__label , а затем обернём их в элемент

Теперь напишем стили для этих элементов. А также сразу включим в них стили для нормализации, чтобы не добавлять их отдельно:

Примененные CSS свойства к элементу , и то, что они делают:

В результате получили следующее оформление:

Базовый вариант стилизации текстовых input

Стилизуем плейсхолдер . По умолчанию плейсхолдер отображается полупрозрачным или светло-серым цветом. Получить его можно с помощью ::placeholder . Оформим его следующим образом:

Стилизация плейсхолдера в input

Стили для в состоянии фокуса (получить это состояние можно с помощью псевдокласса :focus ):

Стилизация input в состоянии фокуса

Оформление , когда он находится в состоянии disabled и readonly :

Стилизация input в состоянии disabled и readonly

Этот набор стилей будет у нас отправной точкой для создания других.

input с иконкой

Рассмотрим пример вставки в input иконки с помощью псевдоэлементов.

Для этого дополнительно обернём элемент в

Первый класс ( text-field__icon ) будем использовать для того, чтобы установить относительное позиционирование ( position: relative ). Это действие позволит нам разместить иконку в нужном месте относительно input , используя уже абсолютное позиционирование ( position: absolute ). Второй класс ( text-field__icon_email ) будет определять иконку, которую мы хотим вставить.

Ещё один вариант оформления:

input с активной svg-иконкой

В этом примере поместим в input иконку, на которую можно нажать.

Для этого мы также как и в предыдущем примере обернули в

Оформление выполнили так:

Ещё пример вставки иконки в input :

input с кнопкой

HTML-разметка input с кнопкой:

Расположение кнопки справа от input выполним с помощью флексов:

input с плавающим label

Разметка input с плавающим label:

Пример оформления input с плавающим label

Пример оформления input с плавающим label

Пример оформления input с плавающим label

input со счётчиком символов

Пример в котором под input отображается количество набранных символов и максимальная длина:

Пример оформления input со счётчиком символов

Это выполняется посредством следующего кода:

Стили для отображения состояния валидации input

Применить стили в зависимости от состояния поля в CSS можно с помощью специальных псевдоклассов. Например, :valid позволяет выбрать валидные элементы, а :invalid - не валидные.

Но, если вы хотите контролировать этот процесс и добавлять стили с помощью JavaScript, то тогда лучше это делать через классы. Например, использовать класс text-field__input_valid при успешной валидации, а text-field__input_invalid - при не успешной. Их следует добавлять к .

Пример оформления input для отображения состояния валидации

Для с плавающим :

Пример оформления input для отображения состояния валидации

Пример оформления input для отображения состояния валидации

Пример оформления input для отображения состояния валидации

Пример валидации формы с помощью JavaScript

Читайте также: