61

Haritonov

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Haritonov
Page 2: Haritonov

Формы в вебеРоберт Харитонов

Page 3: Haritonov
Page 4: Haritonov
Page 5: Haritonov
Page 6: Haritonov

Можно!

Page 7: Haritonov

Но зачем?

Page 8: Haritonov

Против

• Требует знаний

• Зона риска

• «Мне и так хорошо»

08

Page 9: Haritonov
Page 10: Haritonov

За!

Page 11: Haritonov
Page 12: Haritonov
Page 13: Haritonov
Page 14: Haritonov

Масштаб?

• Социальные сети

• Персонализированный поиск

• Почта, платёжные системы

• и другие сервисы...

14

Page 15: Haritonov

Счастливый пользователь =

• Удобное заполнение

• Подсказки об ошибках

• Приятный UX

15

Page 16: Haritonov

Поговорим про

• Новые поля и атрибуты

• Валидацию форм

• Стилизацию

• Доступность

16

Page 17: Haritonov

Поля иатрибуты

Page 18: Haritonov

Надёжно

• autofocus

IE 10+

18

Page 19: Haritonov

Надёжно

• input type= url, tel, number (min/max/step = "")

19

Page 20: Haritonov

Надёжно

• input type=file accept="MIME" multiple

20

Page 21: Haritonov

Аккуратно

• email - проблема с локализованными доменами (double-byte)

• pattern="[̂ @]*@[̂ @]*"

• placeholder="" - не заменяя label

21

Page 22: Haritonov

С обратной совместимостью

• list="" + datalist

Мягкая деградация

22

Page 23: Haritonov

Желательно с полифилом

Не работает в Firefox и IE:

• range - плохая деградация

• date - разный формат даты, плохая стилизация

Простой полифил из Webshims Lib и другие

23

Page 24: Haritonov

Рано

Page 25: Haritonov

Рано

Слабая поддержка браузеров

• datetime, datetime-local

• month, week

• color

• formation, formmethod, formtarget, formenctype - без IE

Тест на поддержку форм

25

Page 26: Haritonov

Полезно знать

• true/false:

• autocomplete=""

• spellcheck=""

• <output> - о семантике

26

Page 27: Haritonov

Валидация

Page 28: Haritonov

Нативно

Минимальный набор для лояльной валидации:

• required

• url, tel, number, email

(основные браузеры, IE 10+, без Safari и мобильных)

28

Page 29: Haritonov

Pattern

Регулярные выражения:

• pattern="[̂ @]*@[̂ @]*" - email

• [a-zA-Z0-9]+ - apha-numeric

• [̂a-zA-Z][a-zA-Z0-9-_\.]{1,20}$ - username

Больше паттернов

29

Page 30: Haritonov

Pattern

<input type="text"

pattern="[0-9]" title="Введите цифровое значение">

30

Page 31: Haritonov

Нативно

Временно без валидации:

• formnovalidate="true/false" - на кнопку отправки

На велосипеде:

• novalidate="true/false" - на форму

31

Page 32: Haritonov

JS API валидации

Все основные браузеры (включая Safari) и IE 10+.

• Смена текста ошибки

• Переопределение вывода ошибок

• Дополнительная валидация

Доступен лёгкий полифил H5F. Подробней об API.

32

Page 33: Haritonov

Строгая валидация

Нативная валидация не рекомендуется, используйте фреймворки:

• Parsley.js

• jQuery Validation plugin

• и другие

Не забываем про валидацию на сервере

33

Page 34: Haritonov

Вывод

Строгость валидации:

• Минимальная - только в HTML

• Средняя - JS API + сервер

• Высокая - Фреймворки + сервер

34

Page 35: Haritonov

Стилизация

Page 36: Haritonov

Реальность

Page 37: Haritonov

CSS3 селекторы

Из WHATWG

• :invalid, :valid

37

Page 38: Haritonov

CSS3 селекторы

Из WHATWG и W3C

• :checked, :not(:checked)

• :disabled, :enabled

38

Page 39: Haritonov

CSS3 селекторы

Из WHATWG

• :required, :optional

• :read-only, :read-write

39

Page 40: Haritonov

CSS3 селекторы

• :placeholder

40

Page 41: Haritonov

CSS3 селекторы

• :placeholder

Везде, кроме Оперы, с помощью проприетарных селекторов:

:-webkit-input-placeholder { }

:-moz-placeholder { }

:-ms-input-placeholder { }

Ограничения по свойствам

41

Page 42: Haritonov

CSS3 селекторы

По атрибутам:

• input[type=email]

• input[required]

• ...

42

Page 43: Haritonov

Частичный доступ

• ошибки валидации

43

Page 44: Haritonov

Частичный доступ

• ошибки валидации

::-webkit-validation-bubble { }

::-webkit-validation-bubble-message { }

::-webkit-validation-bubble-arrow { }

::-webkit-validation-bubble-arrow-clipper { }

44

Page 46: Haritonov

Без доступа

• date

• range

• number

• color

И снова Webshims Lib

46

Page 47: Haritonov

Доступность

Page 48: Haritonov

Черный экран - так выглядет ваш сайт для 39 миллионов людей в мире.

Page 49: Haritonov

Стандарт Aria

• role="alert"

• aria-live = "off/polite/assertive"

• aria-labelledby = "ID", aria-label = "ID"

• aria-required = "true/false"

• aria-invalid = "true/false"

49

Page 50: Haritonov

Стандарт Aria

• aria-autocomplete = "inline/list/both"

• aria-valuenow = "num", aria-valuetext = "text"

• aria-valuemax, aria-valuemin = "num"

• + все лучшие практики

Еще aria

50

Page 51: Haritonov

Нативная валидация,

date и другие HTML5 элементы форм

пока не поддерживаются читалками.

51

Page 52: Haritonov

Теперь знаем

• Новые HTML5 поля и атрибуты

• Валидация форм

• Стилизация

• Доступность

52

Page 53: Haritonov
Page 54: Haritonov

Но...

Page 55: Haritonov

The state of HTML5 forms support

is changing very quickly though,

and continues to improve.

Jan Kleinert

«

55

Page 56: Haritonov

Forms Boilerplate

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

• Примеры использования типов полей

• Лучшие практики и рекомендации

• Базовая разметка и стилизация

• Доступность (Accessability)

Уже на гитхабе — rhr.me/FBP!

56

Page 57: Haritonov
Page 58: Haritonov

Профит!

Page 59: Haritonov

Бонус

Расширенная версия слайдов на rhr.me/pres/forms

• <Progress>, <meter>

• Рабочие примеры кода

• Больше ссылок →

59

Page 60: Haritonov

Бонус

Теория:

• HTML5 doctor об атрибутах и о типах полей

Практика:

• О стилизации

• Исследования особенностей форм от Wufoo

• Демонстрация HTML5 форм

60

Page 61: Haritonov

Роберт Харитонов

Ведущий верстальщик, Одноклассники

@operatino rhr.me

слайды на rhr.me/pres/forms