Формы
Формы <form> атрибут action определяет куда именно будут отправляться данные из формы, атрибут method определяет каким методом http-протокола будут отправлять данные (GET или POST)
<form action="script.php" method="GET">
<input type="text" name="login">
<input type="password" name="password">
<input type="submit" value="Залогиниться">
</form>
<input> Различные типы text, password, hidden, submit, radio, checkbox.
В hidden полях мы можем хранить дополнительную информацию в форме
<input type="hidden" name="x" value="x_value">
radio button
Для того, чтобы сделать обеспечить переключение между radio-кнопками нужно сделать их с одним и тем же name
<input type="radio" name="sex" value="Male">
<input type="radio" name="sex" value="Female">
checkbox
Для выделения добавляем атрибут checked
<input type="checkbox" checked>
<select><option>
Это классический выпадающий список. То, что обычно называют классический ComboBox.
Что делать дома?
<select>
<option value="sitcom">Посмотреть сериал</option>
<option value="book">Почитать книгу</option>
<option value="site" selected>Сверстать сайт</option>
</select>
Полезное чтиво:
- Стилизация radiobutton и checkbox http://code.stephenmorley.org/html-and-css/styling-checkboxes-and-radio-buttons/
- Пример радио-баттонов
https://codepen.io/AngelaVelasquez/pen/Eypnq
<textarea>
Текстовая область. Идеально подходит, когда нам нужна не одна строчка текста, а хороший текстовый блок.
<textarea>
Тут может быть несколько строчек текста внутри
</textarea>
Чтобы убрать синее свечение при выделении
textarea {
outline: none;
}
Убираем resize
textarea {
resize: none;
}
Добавляем принудительный перенос
<textarea wrap="off" cols="30" rows="5"></textarea>
Подробнее https://css-tricks.com/textarea-tricks/
Тег <legend>
Тег <label>
<label for="male">Male</label>
<input type="radio" name="gender" id="male" value="male"><br>
range
<input type="range">
<input type="range" min="5" max="10" step="0.01">
метки-риски
<input type="range" list="tickmarks">
<datalist id="tickmarks">
<option value="0">
<option value="10">
<option value="20">
<option value="30">
<option value="40">
<option value="50">
<option value="60">
<option value="70">
<option value="80">
<option value="90">
<option value="100">
</datalist>
Полезное чтиво:
Подробнее о range https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/range
Стилизация range средствами css https://css-tricks.com/styling-cross-browser-compatible-range-inputs-css/
Стилизация range средствами css и js https://css-tricks.com/custom-interactive-range-inputs/
атрибут tabindex
Особенности работы с формами в HTML5
Новые html5 типы для input'ов
http://htmlbook.ru/html5/forms
required, autofocus, placeholder
placeholder - подсказка внутри input'a
<input type="text" placeholder="Ваше имя">
required - обязательное для ввода поле
:required {
background: red;
}
<input type="name" name="fname" required>
autofocus - ставит фокус на поле при его загрузке
Псевдоклассы полей ввода
:empty - пустое поле
:focus - поле, у которого есть фокус
:required - оформление для обязательных полей
:optional - в противоположность required, оформление для необязательных полей
:valid - срабатывает, если данные соотвествуют типу поля ввода, например введении емейла в input type="email"
:invalid - и соответственно, если данные не верны, срабатывает этот псевдокласс
:disabled - оформление для заблокированных полей
:checked - срабатывает для выбранного checkbox или radio-button
Более подробный список селекторов для форм описан здесь http://webdesignerwall.com/tutorials/the-power-of-css-selectors-and-how-to-use-them
contenteditable="true"
Для того, чтобы сделать контент внутри блока редактируемым ставим html-атрибут contenteditable="true"
<div contenteditable="true"></div>
Имитация placeholder для contenteditable
[placeholder]:empty:before {
content: attr(placeholder);
color: #555;
}
[placeholder]:empty:focus:before {
content: "";
}
Внимание! Чтобы сработал :empty нужно, чтобы не было лишних пробелов между дивами
Полезное чтиво:
- Про дизайн форм
https://uxplanet.org/designing-more-efficient-forms-structure-inputs-labels-and-actions-e3a47007114f#.i2q4e4uzh - Дизайн форм для залогинивания
https://uxplanet.org/designing-ux-login-form-and-process-8b17167ed5b9#.42uiuca2p - Коллекция эффектов для текстовых полей ввода
https://tympanus.net/Development/TextInputEffects/ checkbox или переключатели что и когда лучше использовать
https://vc.ru/design/51721-chekboks-ili-pereklyuchatel-chto-vybrat-ux-dizayneru-pri-sozdanii-form-vyboraПримеры плохих интерфейсов через формы https://userinyerface.com/
Практика:
- Сделать внутри поля ввода иконку поиска (лупа)
- При получении инпутом фокуса, фон за инпутом должен размываться.
- При выборе чекбокса "Я хочу получать спам" показываем картинку со смайликом.
- Добиться, чтобы при переключении радио-баттона менялась картинка.
- Когда выбраны все три чекбокса, показываем пользователю смайлик.
- Сделать имитацию placeholder для DIV'a с атрибутом contenteditable
- Сделать, чтобы при клике на input, placeholder перетекал наверх