Формы исплользуются для сбора информации у пользователей. Форма может быть совсем маленькой, как например поисковое поле или формы могут быть большими и собирать кучу информации.
Мы поговорим о том, какие элементы доступны для веб-разработчиков для работы с данными пользователя и как можно использовать CSS чтобы сделать элементы форм удобными.
Прежде всего, для создания формы необходим элемент form
Этот элемент должен обворачивать собой все остальные элементы форм. Кроме того, нельзя наследовать одну форму в другую — это не имеет смысла и не будет работать
Мы поговорим об аттрибуте action
немного позже — этот аттрибут определяет адрес сервера который умеет понимать данные формы.
Существует несколько разных элементов определяющих поля форм — мы начнем с текстового поля. Элемент input
со значением аттрибута type="text"
или вообще без этого аттрибута.
Если мы хотим задать значение по-умолчанию для текстового поля, нам будет необходимо использовать аттрибут value
Кроме того, для корректной работы формы, обязательно каждому элементу input
задавать аттрибут name
. Его значение должно описывать что это за текстовое поле, маленькими латинскими буквами без пробелов, для разделения слов используйте знаки «минус».
Аттрибут placeholder
позволяет добавить «подсказку» для пользователя.
Текстовые поля могут иметь и другие типы.
type="password"
– type="number"
– type="date"
– type="time"
– type="email"
Для большего количества текста, например для ввода комментариев, можно использовать элемент textarea
. Так же как и остальным полям форм этому элементу необходим аттрибут name
описывающий что за информацию вводит пользователь.
Элемент label
позволяет создать интерактивный элемент интерфейса описывающий какое-то поле
Для достижения эффекта, когда при нажатии на label нужное поле формы будет выбрано [сфокусировано], необходимо использовать аттрибут for
для элемента label
, а значение этого аттрибута должно указывать на значение аттрибута id
поля формы
Давайте вернемся к сайту desktimeapp и сделаем форму контактов.
Let’s get started.
We’ll help you setup your space and walk you through the entire Desktime experience. By the end of the session you’ll be ready to use Desktime full-time.
Промежуточный результат (some CSS)
Мы использовали новое свойство box-shadow
и «псевдо-элемент» :after
Вы можете прочитать больше о пседвоэлементах на CSS-Tricks
Использовали псевдокласс :focus
, анимации, inline-block
Существуют «группированные» типы полей — такие как чекбоксы и радио-кнопки. Они определяют возможность выбора нескольких или *из* нескольких возможных ответов и группированы вместе при помощи аттрибута name
Элемент <input type="checkbox">
определяет возможность нескольких значений одновременно
Элемент <input type="radio">
определяет возможность выбрать одно из нескольких значений
Но форма бесполезна если данные никаким образом не обрабатываются. Для того, чтобы указать на сервер—обработчик данных нужно использовать аттрибут action
.
Этот аттрибут указывает браузеру по какому адресу нужно отправить данные, когда будет нажата кнопка «отправки» (или нажата кнопка enter)
Обычно, программист серверной части будет писать специальный код на языке PHP, Ruby, Python или любом другом, который будет обрабатывать данные. Я хочу показать один из бесплатных сервисов, который устроен так — вы регистрируетесь на нем, этот сервис предоствляет адрес, который вы потом вставляете как значение аттрибута action
для своей формы. После этого, при отпраке формы с вашего сайта, этот сервис будет отправлять письмо на указанный вами email.
Такие сервисы называются form to email и часто являются частью пакета услуг веб-хостинга
Сервис о котором говорю я называется AllForms
Давайте вставим видео в наш проект desktime
В CSS существует возможность задавать транформации элементам, такие как scale, rotate, translate, skew.