Как сделать поля для ввода html
Многогранный тег позволяет создавать поля ввода, кнопки, переключатели и другие интерактивные элементы.
Время чтения: 9 мин
Открыть/закрыть навигацию по статье
Контрибьюторы:
- Светлана Коробцева ,
- Валерий Махнюк ,
- Егор Могилей
Обновлено 12 января 2022
Кратко
Скопировать ссылку «Кратко» Скопировано
Тег позволяет создавать интерактивные элементы на сайте — поле для ввода текста, кнопка, ползунок, переключатель и другие.
Пример
Скопировать ссылку «Пример» Скопировано
Создадим поле для ввода текста в одну строчку и ограничим количество допустимых символов в нём:
type="text" name="name" required minlength="4" maxlength="8" size="10">label for="name">Введите название (от 4 до 8 символов):label> input type="text" id="name" name="name" required minlength="4" maxlength="8" size="10" >
Как понять
Скопировать ссылку «Как понять» Скопировано
— это контейнер для интерактивных элементов, с помощью которых пользователь может ввести данные, что-то выбрать, поставить галочку или нажать кнопку.
Как пишется
Скопировать ссылку «Как пишется» Скопировано
Если хочется, чтобы введённые или выбранные в данные отправились на сервер, нужно поместить этот тег в либо связать этот элемент с формой через атрибут id .
Атрибут type определяет, какой вид примет элемент и какую функцию будет выполнять: например, для создания поля с паролем мы напишем type = «password» , чтобы сделать переключатель — type = «radio» , а для создания кнопки — type = «button» .
Благодаря огромному количеству вариантов и функций, которые задаются через type и другие атрибуты, стал одним из самых полезных и сложных тегов в HTML.
Атрибуты
Скопировать ссылку «Атрибуты» Скопировано
К элементу можно применить все глобальные атрибуты.
type
Скопировать ссылку «type» Скопировано
type — тип элемента : текстовое поле, кнопка, флажки выбора и так далее. Если не указать его, то элемент будет обычным текстовым полем text в одну строку.
Типы для ввода данных разных форматов:
- text — поле для ввода текста в одну строку. Если попробовать вставить текст из нескольких абзацев, то они всё равно сложатся в одну строчку.
- email — поле для ввода имейла. Браузер проверит, есть ли в нём знак «@» и домен.
- search — поле для поиска.
- tel — поле для ввода номера телефона.
- url — поле для ввода URL-адреса.
- password — ввод пароля. По мере ввода символы будут меняться на звёздочки ***. Можно задать минимальное и максимальное количество символов с помощью атрибутов minlength и maxlength .
- number — ввод числа.
Типы для различных кнопок:
- submit — простая кнопка для отправки формы.
- button — обычная кнопка.
- image — кнопка «Отправить» в виде картинки. Чтобы задать адрес картинки, используйте атрибут src , а для альтернативного текста — атрибут alt . Чтобы скорректировать размер изображения в пикселях, используйте атрибуты height и width .
- reset — кнопка, которая сбрасывает всё, что пользователь ввёл в поля текущей формы ранее.
Типы для ввода дат:
- date — ввод даты без времени: год, месяц и дата.
- datetime — local — ввод даты и времени в текущем часовом поясе, когда зоны UTC не указываются.
- month — ввод месяца и года, без указания часового пояса.
- week — ввод номера недели.
- time — ввод времени без указания часового пояса.
- checkbox — флажки, или чекбокс, с несколькими вариантами на выбор.
- radio — круглая кнопка-переключатель для выбора одного из нескольких вариантов.
- range — ползунок для выбора чисел из заданного диапазона.
- color — виджет для выбора цвета. Иногда его называют колорпикер (от английского colorpicker).
- file — выбор файла для отправки.
И отдельно стоит значение hidden . Поле ввода с этим значением атрибута type не видно на странице, но в то же время оно отправляет своё значение на сервер.
Большое преимущество установки правильного значения для type — в мобильных браузерах будет появляться «специальная» клавиатура, упрощающая и улучшающая пользовательский опыт. Так, для у пользователя отобразится клавиатура, содержащая лишь цифры и специальные символы, нужные для корректного ввода номера телефона. Пример такой клавиатуры можно увидеть на картинке ниже:
value
Скопировать ссылку «value» Скопировано
value — значение элемента , которое отправляется на сервер в формате «имя=значение». Имя задаётся атрибутом name , а значение — value . Например, .
- Если — кнопка ( ), то value будет надписью на ней. Значение value для кнопки ( ) не передаётся на сервер.
- Если — кнопка в виде картинки ( ), то value будет передано в виде двух значений координат нажатия относительно изображения имя . x и имя . y , где имя — это значение атрибута name .
- Если — текстовое поле ( ), то value задаст текст, который появится в этом поле при загрузке страницы. Пользователь сможет его удалить или отредактировать.
- Если вы вставляете флажок или переключатель ( ), то value задаст уникальное значение элемента, по умолчанию on .
Прочие атрибуты
Скопировать ссылку «Прочие атрибуты» Скопировано
- name — уникальное имя элемента. Обычно имя нужно, чтобы связать с формой и отправить данные на сервер.
- required — делает поле для ввода обязательным для заполнения. Пользователь не сможет нажать «Отправить», пока не введёт сюда данные. А если попробует, то браузер выведет сообщение о необходимости заполнить поле.
- disabled — отключает элемент. Пользователь не сможет, например, ввести текст или выбрать нужный параметр, а сам элемент будет отображаться в сером цвете, как неактивный.
- autocomplete — разрешает автозаполнение. Автозаполнение — это когда браузер предлагает сохранить, например, пароль или номер банковской карты, чтобы данные подставлялись при следующем входе. Подробнее можно прочитать в статье про autocomplete .
- autofocus — фокусируется на элементе сразу после загрузки страницы. Это значит, что пользователю не нужно специально нажимать на этот элемент, чтобы начать в нём что-то писать. В фокусе может быть только один элемент на странице. Но это не может быть элемент типа hidden .
- form — связывает отдельно стоящий элемент с формой. Для этого укажите в качестве значения имя идентификатора, который задан нужному тегу . Например, так form = «special — form» . Этот атрибут позволяет разместить в любом месте на странице за пределами . Если его не указать, элемент будет связан с ближайшей формой.
- list — связывает с элементом через его ID. В элементе указывают значения, которые пользователь может выбрать, когда вбивает текст в пустое поле. Допустим, вы ввели букву «М» в поле ввода города, и браузер предложил варианты из : «Москва», «Минск» и так далее. Этот атрибут не подходит для таких типов , как hidden , password , checkbox , radio , file и любых кнопок.
- readonly — не позволяет пользователю как-либо изменять элемент, оставляя его при этом рабочим. Применимо только для текстовых полей.
- step — указывает шаг, с которым будет изменяться значение поля. Задаётся в числовом формате и работает с любым из перечисленных типов: number , range , date и datetime — local .
- min , max — указывают минимальные и максимальные числовые значения соответственно для полей с типами number и range . Минимальные и максимальные значения даты в формате ГГГГ — ММ — ДД для полей с типами date и datetime — local .
- size — указывает ширину поля для ввода в символах.
- placeholder — это короткая подсказка (слово или фраза), предназначенная для помощи пользователю при вводе данных, когда поле для ввода пустует.
- pattern — задаёт регулярное выражение, по которому проверяется значение элемента .
- multiple — указывает, что пользователь может выбрать больше одного значения.
Подсказки
Скопировать ссылку «Подсказки» Скопировано
Чтобы даже те, кто использует специальные средства для чтения с экрана (скринридеры), могли точно понять, что делает тот или иной , используйте этот тег в паре с label .
Ещё пример
Скопировать ссылку «Ещё пример» Скопировано
Вот так будет выглядеть простая форма, собранная из нескольких элементов . Мы поместили их все в контейнер , чтобы данные, которые введёт пользователь, можно было отправить на сервер:
Текстовое поле в одну строчку: Радиокнопки: Вариант 1 Вариант 2 Вариант 3 Большое текстовое поле: form name="test" method="post" action="input1.php"> label> Текстовое поле в одну строчку: input type="text" size="40"> label> fieldset> Радиокнопки: label class="radio-label"> input type="radio" name="browser" value="ie" id="ie"> Вариант 1 label> label class="radio-label"> input type="radio" name="browser" value="opera" id="opera"> Вариант 2 label> label class="radio-label"> input type="radio" name="browser" value="firefox" id="firefox"> Вариант 3 label> fieldset> label> Большое текстовое поле: textarea name="comment" cols="40" rows="3">textarea> label> div> input type="reset" value="Очистить"> input type="submit" value="Отправить"> div> form>
На практике
Скопировать ссылку "На практике" Скопировано
Дока Дог советует
Скопировать ссылку "Дока Дог советует" Скопировано
У есть несколько полезных CSS-псевдоклассов. Например, может иметь разные стили в обычном, сфокусированном и выключенном виде. А если между этими видами добавлять анимацию, можно сделать даже красиво. Например, как поля в Bootstrap, когда ты нажимаешь на , он начинает плавно подсвечиваться обводкой.
Если вы используете или , можно сами инпуты вообще скрыть: переключение будет работать при нажатии на лейбл. Так можно сделать очень красивые чекбоксы и радиокнопки на чистом CSS. Например, я как-то сделал чекбоксы на сайте в стиле классических переключалок из iOS.
Как сделать поля в html
Для создания полей ввода в HTML используется тег . У этого тега есть атрибуты, которые позволяют настроить его внешний вид и поведение.
Вот несколько примеров:
- Чтобы создать поле для ввода текста:
type="text" name="myText" />
Здесь атрибут type="text" указывает, что это поле для ввода текста. Атрибут name="myText" задает имя поля, которое будет использоваться при отправке формы на сервер.
- Для создания поля для ввода пароля можно использовать атрибут type="password" :
type="password" name="myPassword" />
Атрибут type="password" скрывает вводимые символы, заменяя их на звездочки.
- Поле для выбора файла с помощью атрибута type="file" :
type="file" name="myFile" />
Атрибут type="file" позволяет выбрать файл на компьютере пользователя.
Кроме того, у тега есть множество других атрибутов, с помощью которых можно настроить его внешний вид и поведение. Например, атрибуты placeholder , required , disabled и т.д.
Тег HTML поле для ввода, кнопка
Тег в HTML определяет элемент формы. В зависимости от выбранного типа, элемент input может принимать вид поля для ввода текста, кнопки, переключателя, чек-бокса и т.д.
Атрибут type HTML элемента input указывает на его тип. Тип элемента определяет его вариант отображения и функционал. Типы тега input (например, input type="text" - текстовое поле, input type="submit" - кнопка отправки, input type="radio" - переключатель, input type="checkbox" - чек-бокс, input type="hidden" - скрытое поле, input type="password" - пароль и т.д.) подробно описаны ниже.
Тег HTML является элементом формы. Подробно о создании форм описано в статье: Все про формы и поля в HTML. Создание и работа с формами.
Синтаксис
Input type button - простая кнопка
Тип button соответствует простой кликабельной кнопке. Действия, которые будут происходить по нажатию кнопки, определяются через JavaScript.
HTML код input type="button" :
Input type checkbox - чек-бокс, флажок, галочка
Тип checkbox представляет собой поле, которое пользователь может отметить (чек-бокс). У поля checkbox есть только 2 состояния - отмечен или не отмечен. При отправке формы на сервер, данные передаются только для отмеченных чек-боксов.
Если для чек-бокса не задан атрибут value , как значение будет использовано значение по умолчанию - "on". Часто чек-боксы используются вместе с тегом , где указывается подпись чек-бокса.
Обычно чек-бокс отображается в виде квадрата, внутри которого находится галочка, если чек-бокс отмечен.
HTML код input type="checkbox" :
Input type color - выбор цвета
Тип color представляет собой поле, в котором пользователь может выбрать цвет. Цвет задается в формате HEX.
HTML код input type="color" :
Input type date - поле для ввода даты
Тип date представляет собой поле, в которое пользователь может ввести дату. Дата включает в себя год, месяц и число.
Стандартный формат даты YYYY-MM-DD, например, "2005-01-20" (соответствует 20 января 2005г.). Подробнее о дате в HTML.
Обычно, при заполнении поля, браузеры отображают возле него календарь, в котором можно выбрать дату. В этом случае формат даты для пользователя может быть изменен, но на сервер отправится дата в стандартном формате.
HTML код input type="date" :
Input type datetime - дата и время
Тип datetime представляет собой поле, в которое пользователь может ввести дату и время с указанием временной зоны.
Этот тип поля устарел, использовать его не рекомендуется. Используйте вместо него.
Input type datetime-local - локальное время
Тип datetime-local представляет собой поле, в которое пользователь может ввести дату и время (без указания временной зоны).
Обычно, при заполнении поля, браузеры отображают возле него календарь, в котором можно выбрать значение.
Формат значения, отправляемого на сервер: YYYY-MM-DDThh:mm, например, "2007-08-11T13:18" (соответствует 11 августа 2007г, 13 часов, 18 минут).
HTML код input type="datetime-local" :
Input type email - поле для ввода адреса электронной почты
Тип email представляет собой поле, в которое необходимо ввести адрес электронной почты. Браузеры контролируют правильность заполнения поля. Если введенное значение не соответствует формату email-адреса, браузер выведет сообщение об ошибке.
HTML код input type="email" :
Input type file - поле для загрузки файла
Тип file представляет собой поле, в котором в качестве значения используются файлы.
При использовании в HTML форме поля с типом file нужно установить значение multipart/form-data для атрибута enctype родительской формы.
HTML код input type="file" :
Input type hidden - скрытое поле
Тип hidden представляет собой скрытое поле. Такое поле не будет показано пользователю (не отображается на странице сайта). Поля типа hidden используют для передачи служебной информации.
HTML код input type="hidden" :
Input type image - кнопка-картинка
Тип image представляет собой картинку-кнопку. По нажатию на картинку (изображение) происходит отправка связанной формы. Адрес файла картинки определяется в атрибуте src .
HTML код input type="image" :
Input type month - поле для ввода месяца
Тип month представляет собой поле, в которое пользователь может ввести месяц (месяц конкретного года).
Формат значения, отправляемого на сервер: YYYY-MM, например, "2001-11" (соответствует ноябрю 2001г.).
HTML код input type="month" :
Input type number - поле для ввода чисел
Тип number представляет собой поле, в котором можно вводить только числа. Ограничение на вводимые числа можно задавать с помощью атрибутов max - максимальное значение, min - минимальное значение, step - шаг (подробнее в таблице атрибутов ниже).
HTML код input type="number" :
Input type password - поле для ввода пароля
Тип password представляет собой поле, предназначенное для ввода пароля. Значение, введенное в такое поле, будет показано под маской (обычно в виде точек, количество которых отражает количество введенных символов).
HTML код input type="password" :
Input type radio - переключатель
Тип radio представляет собой переключатель (также используется название радио кнопка).
Для создания переключателя используют несколько тегов input type="radio" , имеющих одинаковые значения атрибута name . Таким образом создается группа, где каждый тег соответствует одному положению переключателя. Одновременно выбранным может быть только один из элементов группы.
При отправке формы на сервер, данные передаются только у выбранного (отмеченного) тега радио-кнопки.
Для удобства использования, рядом с радио-кнопками обычно размещают подпись .
Положение 1
Положение 2
Положение 3
HTML код переключателя из input type="radio" :
Input type range - диапазон, ползунок HTML
Тип range представляет собой ползунок, с помощью которого можно выбрать значение в указанном диапазоне. Диапазон значений определяется с помощь атрибутов max - максимальное значение, min - минимальное значение. Атрибут step - устанавливает значение шага для ползунка.
HTML код input type="range" :
Input type reset - кнопка сброса, очистки полей
Тип reset представляет собой кнопку, нажатие которой очищает заполнение полей в связанной форме. После нажатия кнопки reset поля будут возвращены к своему первоначальному состоянию.
HTML код input type="reset" :
Input type search - поле для ввода поискового запроса
Тип search представляет собой поле, которое предназначено для ввода поискового запроса.
HTML код input type="search" :
Input type submit - кнопка отправки формы
Тип submit соответствует кнопке отправки формы. По нажатию на кнопку типа submit будет вызвано событие отправки (submit) связанной HTML формы.
К одной HTML форме может быть привязано несколько кнопок отправки. На сервер будут переданы данные только той кнопки, которая вызвала событие submit.
HTML код input type="submit" :
Input type tel - поле для ввода номера телефона
Тип tel представляет собой поле, которое предназначено для ввода номера телефона. По умолчанию шаблон ввода не установлен и поле может принимать любые текстовые значения. Указать шаблон можно с помощью атрибута pattern . Другой вариант - использование JavaScript библиотек для установки формата поля.
HTML код input type="tel" :
Input type text - текстовое поле HTML
Тип text представляет собой текстовое поле для ввода. Текст в input с типом text вводится в одну строку.
Если нужно создать многострочное поле для ввода, используйте текстовую область .
HTML код input type="text" :
Input type time - поле для ввода времени
Тип time представляет собой поле, в котором пользователь может ввести время.
Стандартный формат: hh:mm, например, "14:45". Подробнее о времени в HTML.
HTML код input type="time" :
Input type url - поле для ввода URL адреса
Тип url представляет собой поле, которое используется для ввода URL. Браузеры контролируют правильность заполнения поля. Если введенное значение не соответствует формату URL адреса, браузер выведет сообщение об ошибке.
HTML код input type="url" :
Input type week - поле для выбора недели
Тип week представляет собой поле, в которое пользователь может ввести неделю (например, отметить с помощью календаря, который выводит браузер при вводе в поле).
Стандартный формат: YYYY-Wxx, где "хх" - номер недели, начиная от начала года. Например, "2011-W12" (соответствует 12-й неделе в 2011 году).
Обычно, при заполнении поля, браузеры отображают возле него календарь, в котором можно выбрать неделю. В этом случае формат значения для пользователя может быть изменен, но на сервер отправятся данные в стандартном формате.
HTML код input type="week" :
Поддержка браузерами
| Тег | |||||
| Да | Да | Да | Да | Да |
Атрибуты тега input
audio/*
video/*
image/*
расширение файла
media_type
Определяет типы файлов, которые можно использовать в поле input.
Используется только для полей с типом file.
- audio/* - аудио файлы;
- video/* - видео файлы;
- image/* - файлы изображений;
- расширение файла - файлы, имеющие конкретные расширения (например, ".jpg", ".png");
- media_type - файлы указанного медиа типа.
Альтернативный текст. Используется только для полей с типом image.
Содержит текст, который будет выведен в случае, если изображение невозможно отобразить, а также прочитан программой - скрин-ридером.
Атрибут указывает, должен ли браузер, при повторном использовании поля, подставлять в него значения, введенные пользователем во время предыдущего использования.
- on - автозаполнение включено (значение по умолчанию);
- off - автозаполнение выключено.
Если атрибут использован, значение атрибута autocomplete родительской формы будет проигнорировано для данного поля.
Логический атрибут. Если указан, при загрузке документа фокус будет переведен на элемент ввода.
Логический атрибут. Используется только для полей с типами checkbox и radio.
Если указан, то чек-бокс (для checkbox) считается отмеченным или значение переключателя (для radio) выбранным.
Логический атрибут. Если указан, отключает возможность изменить состояние поля (ввести текст, поменять выбранное значение переключателя (для radio), отметить чек-бокс и т.п).
Данные поля, отмеченного этим атрибутом, не будут переданы на сервер при отправке формы.
Указывает на форму, к которой относится поле. Используется, если поле находится вне HTML кода формы.
Если поле находится внутри тега , то использовать атрибут form не нужно, поле по умолчанию привязано к форме, внутри которой находится.
URL адрес документа - обработчика формы. Используется для input с типом image и submit.
Если указан, форма будет отправлена по URL адресу, указанному в этом атрибуте, игнорируя атрибут action тега .
Способ кодирования информации. Используется для input с типом image и submit.
Указывает как именно нужно кодировать информацию при отправке на сервер, вызванной нажатием кнопки, содержащей этот атрибут.
- application/x-www-form-urlencoded - все символы кодируются перед отправкой в шестнадцатеричные значения (HEX) ASCII, пробелы заменяются на "+". Значение по умолчанию;
- multipart/form-data - символы не кодируются. Значение обязательно нужно использовать в форме с полем input type="file" (при использовании файлов в форме);
- text/plain - символы не кодируются, пробелы заменяются символом "+".
Атрибут используется только в случае отправки формы методом POST.
Этот атрибут переопределяет значение, указанное в атрибуте enctype тега .
HTTP метод передачи данных родительской формы.
- GET - передача данных в URL с помощью пар имя-значение (name-value). Значение по умолчанию.
- POST - передача данных в теле HTTP запроса.
Используется только для input с типом image и submit.
Этот атрибут переопределяет значение, указанное в атрибуте method тега .
Логический атрибут. Браузер не будет выполнять проверку правильности заполнения формы перед отправкой, вызванной нажатием input, содержащей этот атрибут. По умолчанию браузер проверяет наличие значения в обязательных полях (required), соответствие значений стандарту (например, для поля с типом email) и т.п.
Используется только для input с типом image и submit.
Этот атрибут переопределяет значение, указанное в атрибуте novalidate тега .
Определяет где будет открыт результат обработки формы (ответ сервера), при отправке по нажатию кнопки с этим атрибутом:
- _blank - в новой вкладке или окне;
- _parent - в родительском окне;
- _self - в текущем окне (используется по умолчанию);
- _top - на весь экран.
Используется только для input с типом image и submit.
Этот атрибут переопределяет значение, указанное в атрибуте target тега .
Высота изображения в пикселях.
Используется только для input с типом image.
Прикрепляет к полю список предопределенных вариантов .
Максимальное значение для поля.
Необходимо указывать значение, соответствующее формату поля для которого используется атрибут.
Используется только для input с типом date, datetime, datetime-local, month, number, range, time и week.
Максимальное количество символов, допустимое для ввода в поле input.
Минимальное значение для поля.
Необходимо указывать значение, соответствующее формату поля для которого используется атрибут.
Используется только для input с типом date, datetime, datetime-local, month, number, range, time и week.
Логический атрибут. Если указан, позволяет указывать в поле более одного объекта.
Используется только для input с типом email и file.
При использовании с input type="file" позволяет прикрепить несколько файлов.
При использовании с input type="email" позволяет ввести несколько адресов email через запятую.
Имя поля. Используется при передаче данных формы на сервер. Значение поля (value) будет передано в переменной, имеющей имя, указанное в этом атрибуте.
Шаблон ввода. Содержит регулярное выражение, с которым будет сравниваться значение перед отправкой формы. Браузер будет блокировать отправку формы, пока значение в поле не будет удовлетворять указанному регулярному выражению.
Используется только для input с типом date, email, password, search, tel, text, url.
Текст, который будет отображаться внутри поля для ввода, когда оно не заполнено. Обычно это описание того, что должен ввести пользователь, либо пример заполнения.
Используется только для input с типом email, password, search, tel, text, url.
Логический атрибут. Если указан, пользователь не сможет изменить значение в поле. Используется для создания полей, доступных только для чтения.
Логический атрибут. Если указан, поле будет определено как обязательное для заполнения. Форма не будет отправлена на сервер, если такое поле не будет заполнено.
Заполнение контролируется браузером. При попытке отправить форму с незаполненным обязательным полем, браузеры обычно выводят на экран ошибку заполнения.
Используется только для input с типом checkbox, date,datetime, datetime-local, email, file, month, number, password, radio, search, tel, text, url, week.
Определяет ширину поля в символах. Ширина поля будет подобрана таким образом, чтобы в поле одновременно было видно количество символов, указанное в атрибуте.
Значение атрибута соответствует количеству символов только для моноширинных шрифтов.
Используется только для input с типом email, password, search, tel, text, url.
URL адрес файла изображения. Обязательный для заполнения.
Используется только для input с типом image.
Шаг изменения значения.
Значение по умолчанию: "1".
При указании числового значения в поле можно будет использовать только значения кратные указанному числу. Например, при указании "5" в поле можно будет ввести числа 0, 5, -5, 25, -155 и т.п., но нельзя будет ввести 1, -3, 28, 156 и т.п. (так как они не кратны числу "5"); при указании "2.5" в поле можно будет вводить 0, 2.5, 5, 7.5 и т.п., но нельзя будет 1, 2.4, 6.2, 8 и т.п. (так как они не кратны числу "2.5").
При указании "any" поле будет принимать любые числа.
Используется только для input с типом date, datetime, datetime-local, month, number, range, time и week.
Тип элемента. Определяет отображение и функционал элемента.
Элементы одинакового типа могут отличаться в различных браузерах, однако, как правило, это не влияет на функциональность.
- button - простая кликабельная кнопка. Действие по нажатию кнопки определяется с помощью скриптов. Подробнее
- checkbox - чек-бокс (флажок, галочка). Подробнее
- color - окно выбора цвет. Подробнее
- date - поле для ввода даты. Подробнее
- datetime - поле для ввода даты и времени с указанием временной зоны. Этот тип поля является устаревшим. Подробнее
- datetime-local - поле для ввода локального времени (даты и времени). Подробнее
- email - поле для ввода адреса электронной почты. Подробнее
- file - поле, к которому можно прикрепить файлы в качестве значения. Подробнее
- hidden - скрытое поле. Подробнее
- image - кнопка-картинка, нажатие по которой вызывает событие отправки формы. Подробнее
- month - поле для ввода месяца и года (например, "декабрь, 2010г."). Подробнее
- number - поле для ввода числа. Подробнее
- password - поле для ввода пароля. Подробнее
- radio - переключатель (одно из значений переключателя). Подробнее
- range - диапазон (ползунок). Подробнее
- reset - кнопка сброса введенных значений в форме. Подробнее
- search - поле для введения поискового запроса. Подробнее
- submit - кнопка, нажатие по которой вызывает событие отправки формы. Подробнее
- tel - поле для ввода телефона. Подробнее
- text - текстовое поле. Подробнее
- time - поле для ввода времени. Подробнее
- url - поле для ввода URL адресов. Подробнее
- week - поле для ввода недели (недели определенного года, например, "неделя 12, 2017г."). Подробнее
Значение элемента, которое будет отправлено на сервер.
На сервер отправляется переменная, имеющая название, указанное в атрибуте name элемента и значение, указанное в этом атрибуте.
Ширина изображения в пикселях.
Используется только для input с типом image.
Как оформить поле ввода: советы и техники
Поле ввода HTML — простой и удобный элемент. Оно содержит более 30 вариантов атрибутов и является одним из самых надежных и заслуживающих изучения HTML-тегов. Поскольку пользователи постоянно взаимодействуют с полями на странице, приходится прилагать множество усилий, чтобы сделать их максимально удобными. Однако по ходу дела могут возникнуть различные сложности.
Базовая разметка
Помечать поля — отличная CSS-практика. В статье мы будем использовать вложенное поле внутри разметки метки, которое связывает метку и входной тег и устраняет необходимость указывать атрибут for для метки и id для ввода. К тому же это значительно упрощает стилизацию поля.
label
placeholder">Enter Email
label>
Другой альтернативой может послужить тег div в качестве обертки для таких элементов, как позиционирование, чтобы у них был общий родитель. Тег fieldset также может быть полезен в некоторых случаях. Данный метод позволяет расположить метку и ввод рядом и рассматривать их как единое целое.
id="email-field" type="email"/>
Еще более короткая и допустимая альтернатива — использовать тег label с полем ввода внутри, но с атрибутом aria-label для читателей экрана, а затем применить псевдоэлемент CSS after для создания заполнителя.
// Создание заполнителя
.custom-field::after content: attr(aria-label);
>
Все три альтернативы подойдут для типа стиля, который будет использоваться в данной статье, поэтому выберите любой из них по своему предпочтению. Ниже показано, что все три параметра отображают одно и то же на странице. Результат отображен в браузере Chrome.
Для чего мы ставим метку после ввода? Данный шаг дает возможность использовать такие состояния ввода, как focus и т. д. Таким образом мы сможем настроить метку и контролировать ее внешний вид и анимацию. В качестве альтернативы можно использовать Javascript, но это выходит за рамки данного руководства.
Начальная настройка
Если вы не используете CSS-нормализаторы, вам все же стоит добавить такие элементы CSS, как border-box и box-sizing — они важны для данного руководства. Если в конечном итоге готовое поле выглядит не так, как в статье, то, скорее всего, вам понадобится следующий фрагмент кода:
*, *::before, *::after box-sizing: border-box;
>
Базовый стиль
Придадим данной области очень простой и минималистичный вид. Мы cможем улучшить его по ходу работы.
Для этого поля размер текста составит 14 пикселей. Элемент placeholder будет располагаться над полем ввода, поэтому необходимо установить относительное ( relative ) положение.
.custom-field font-size: 14px;
position: relative;
>
Стиль поля ввода в основном предназначен для его сброса, например для удаления внешнего вида и границ. Обратите внимание, что ширина поля ввода определяет размер элемента custom-field . Следующей важной деталью здесь является заполнение, которое нужно сопоставить при размещении элемента-заполнителя наверху.
.custom-field input border: none;
-webkit-appearance: none;
-ms-appearance: none;
-moz-appearance: none;
appearance: none;
background: #f2f2f2;
padding: 12px;
border-radius: 3px;
width: 250px;
font-size: 14px;
>
Мы расположили заполнитель слева от 12 пикселей, чтобы он соответствовал заполнению ввода. Мы также использовали преобразование для выравнивания по вертикали -50% с верхней частью — 22 пикселя. Такое количество пикселей необходимо для создания идеально центрированного преобразования. Верхняя часть 50% также работает, но из-за сообщения об ошибке мы используем пиксели.
Чтобы текст заполнителя не был слишком длинным, ограничиваем его ширину максимальным 100%-значением минус 24 пикселя (сумма входных левых и правых отступов). Затем устанавливаем переполнение в виде многоточия.
.custom-field .placeholder position: absolute;
left: 12px;
bottom: 50%;
top: 22px;
transform: translateY(-50%);
width: calc(100% - 24px);
color: #aaa;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
>
Вы можете использовать переменную CSS, но, если вы измените заполнение ввода позже, это также повлияет на заполнитель.
.custom-field .
--field-padding: 12px;
>.custom-field input .
padding: var(--field-padding);
>.custom-field .placeholder .
left: var(--field-padding);
width: calc(100% - (var(--field-padding) * 2));
>
Эффект всплывающей метки
Если нажать на поле, заполнитель уменьшиться и переместится в верхний левый угол над полем.
Чтобы добавить этот переход, нужно обозначить пространство над полем, куда будет перемещаться заполнитель. Оно также пригодится, если перед полем появится другой элемент. 20 пикселей на верхней границе — отличный вариант: метка остается центрированной, а граница выступает внешней частью.
.custom-field .
border-top: 20px solid transparent;
>
Далее нужно узнать, когда ввод получает фокус, чтобы анимировать заполнитель. Воспользуемся сиблинг-комбинатором, чтобы выбрать заполнитель, а затем уменьшить шрифт, установить темный цвет и поднять его на 10 пикселей.
.custom-field input:focus + .placeholder top: -10px;
font-size: 10px;
color: #222;
>
При наличии значения заполнитель должен оставаться в таком положении, даже если фокус отсутствует. Достичь этой цели можно несколькими способами. Например, использовать псевдокласс ввода :valid вместе с атрибутом required . Однако стоит учитывать, что это работает только для обязательных полей.
required/>// Если обязательное поле допустимо, значит оно имеет значение
// Если указано большое количество правил подтверждения, то это может привести к нарушению ввода: valid + .placeholder .
>
Другой альтернативой является использование Javascript для определения класса, вне зависимости от наличия значения. Однако данное руководство предназначено только для CSS, поэтому laceholder-shown вместе с атрибутом заполнителя может послужить отличным решением.
// Заполнитель НЕ должен быть пуст,
// чтобы этот метод сработал,
// а - просто пустое пространство
placeholder=" "/>// Если заполнитель не отображается,
// значит, пользователь начал вводить значение ввода: not(:placeholder-shown) + .placeholder .
>
Чтобы получить хорошую анимацию, можно добавить переход наверх, размер шрифта и цвет в элемент-заполнитель.
.custom-field .placeholder .
transition:
top 0.3s ease,
color 0.3s ease,
font-size 0.3s ease;
>.custom-field input:not(:placeholder-shown) + .placeholder
.custom-field input:focus + .placeholder top: -10px;
font-size: 10px;
color: #222;
>
Отображение сообщения об ошибке
В зависимости от формы, вам может потребоваться отобразить сообщение об ошибке. Для тега метки можно включить другой элемент для ошибки.
.custom-field .
margin-bottom: 24px;
>.custom-field .error-message width: 100%;
display: flex;
align-items: center;
padding: 0 8px;
font-size: 12px;
background: #d30909;
color: #fff;
height: 24px;
>.custom-field .error-message:empty opacity: 0;
>
Важно помнить, что поле ошибки по ширине равно полю ввода и располагается под ним. Вы также можете проверить наличие ошибки и отобразить элемент сообщения об ошибке.
Вежливое значение показывает то, как следует сообщить пользователю об ошибке. Для данного сценария необходим такой атрибут, чтобы помочь с текстом mix ox внутри тега label.
Вывод
Данные техники можно применять для создания полей, при этом не затрагивая доступность и SEO. Разобраться в них более подробно вам поможет исходный код.
А в этом ролике представлена информация о стилизации полей ввода:
- 12 ошибок начинающих веб-разработчиков
- Основные принципы кэширования веб-приложений
- Краткая история инструментов веб-дизайна
