FRONTEND

Доступность сайтов для «самых маленьких» Google Webmaster Guidelines Использование WAI-ARIA Disabled Buttons More Inclusive Как люди с особыми потребностями пользуются сайтом Как люди с особыми потребностями пользуются сайтом
  • Стандарты тестирования доступности: чтобы протестировать страницу, используйте WAVE.Wave testing.
  • Навигация с помощью клавиатуры: проверьте свой сайт, пользуясь только клавиатурой. Все элементы на сайте должны быть доступны для использования.
  • Скрин-ридер: все страницы сайта должны работать в программах для чтения информации (VoiceOver, ChromeVox, NVDA или Lynx).
  • Фокус: если фокус для элементов отключен, он заменяется видимым в CSS состоянием

Около 15% людей от всего мирового населения или примерно 1 миллиард живёт с инвалидностью. При разработке надо учитывать доступного сайта: например, структуру заголовков, контролы, цветовой контраст и другое. Ответственность только разработчика. Это командная работа. Дизайнеры создают доступный UI, разработчики его разрабатывают, тестировщики проводят тестирование доступности, менеджеры проектов следят за тем, чтобы доступность была частью рабочих процессов. Для пользователей со слепотой, глухотой, дальтонизмом, с моторными нарушениями и ментальными расстройствами, для пожилых и вообще для всех. Необходимо кому-то, полезно для всех. Это удовлетворённость пользователей и репутация компании. Веб-доступность — это о понимании потребностей всех пользователей, а также об эмпатии и осведомлённости.

validator
  • валидный HTML не гарантирует accessibility
  • валидный HTML не гарантирует хороший UX (user experience)
  • валидный HTML не гарантирует функционирующий сайт
  • валидный HTML не гарантирует корректное отображение сайта
  • множество сайтов, в том числе топовых, невалидны
Продвинутый выбор даты

В стандарте для input type="date" поддерживаются атрибуты min, max и step, благодаря которым можно частично ограничить выбор даты прямо в HTML

Несколько email-ов в одном поле

Указать атрибут multiple input type="email" inputmode="text" multiple

Mark

Текст, выделенный в справочных целях из-за своей актуальности в определённом контексте

Accept

Указывает, файлы какого типа разрешены в качестве входящих данных. accept=".jpg, .png"

Autofocus

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

Inputmode

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

Pattern

Задает регулярное выражение, с шаблоном которого сравнивается значение input при отправке формы.

Autocomplete

Указывает, можно ли браузеру помогать пользователю в заполнении поля формы (например, email-адрес, номер телефона, страну и т. п.).

Contenteditable

Дает возможность пользователю редактировать содержимое элемента.

Spellcheck

Определяет, будет ли проверяться орфография в данном элементе.

Translate

Определяет, должен ли элемент переводиться при локализации страницы.

Loading

Указывает, должен браузер сразу начинать загрузку изображений или отложить ее. Загрузка может начаться, например, когда пользователь прокрутит страницу до этих изображений.Поведение по умолчанию — eager, а для отложенной загрузки используется значение lazy («ленивая загрузка).

Onerror

Дает возможность добавить запасное изображение (fallback) на случай, если основное не загрузится.

Poster

Добавить изображение, которое будет показываться, пока загружается видео.

Draggable

Указывает, можно ли перетаскивать элемент.

Проверка кроссбраузерности: browsershots browserstack Основные движки:
Blink — Google (Opera, Яндекс.Браузер, Vivaldi )
WebKit — Apple (Safari)
Gecko — Mozilla
Использование префиксов
свойство написано для конкретного браузера, и оно не содержится в стандартном списке свойств;
свойство экспериментальное, еще находится в разработке;
свойство реализует частичный функционал.
-moz- используется в Firefox;
-ms- используется в Edge и Internet Explorer;
-webkit- используется в Safari, Chrome и браузерах на основе движков WebKit и Blink;
@-moz-document url-prefix() { .hackBlock { background: blue; } }
Разделение стилей для браузеров (для IE)
!—[if IE 9]
link rel="stylesheet" href="style-for-ie9.css"
![endif]—

Критерии качества вёрстки Кроссбраузерность
Переполнение
Текст должен оставаться в рамках родительского блока при переполнении.
Текст не должен обрезаться или вываливаться из родительского блока при переполнении.
Текст не должен смещать другие блоки.
Родительский блок должен сохранять минимальные размеры при недополнении.
Слова, длиннее минимальной ширины, должны переноситься.
Размеры элементов
Контент больше ширины родителя не должен выходить за его пределы, ломать сетку или смещать другие блоки.
При увеличении количества элементов они должны оставаться в рамках родительского блока.
Элементы могут переноситься на следующую строку при уменьшении размера родителя. При минимальном количестве элементов или их отсутствии родительский блок должен сохранять минимальные размеры.
Последние блоки в сетках должны выравниваться по направлению текста.
Элементы могут переноситься на следующую строку при уменьшении размера родителя.
Стайлгайд
Для элементов форм, кнопок и ссылок:hover, focus, active.
Для элементов форм: disabled.
Валидация
Фавиконки 32×32 и в формате PNG
Фоновый цвет у фоновых картинок (картинка не загрузилась, но при этом цвет фона остался цвет, который соответствует преобладающему цвету изображения)
Конспект

События jQuery
События мыши
.click() клик
.dblclick() двойной клик
.mousedown() перетаскивание
.mousemove() передвижение мыши по стр
.mouseout() уведение указателя с эл-та
.mouseover() проведение по эл-ту
.mouseup() отпускание кнопки

События документа/окна .load() после загрузки всех файлов браузером
.resize() при изменении размера окна браузера
.scroll() при использовании полосы прокрутки
.unload() покидание стр (щелчок по ссылке для перехода на др. стр, закрываете вкладки или окна браузер)

События форм
.blur() поле формы выводится из фокуса
.change() при изменении статуса поля формы.focus() при переходе в поле
.reset() вернуть форму в первоначальное состояние, отменить изменения
.select() при выделении текста внутри текстового поля формы
.submit() при отправке формы (нажимая на кнопку)

События клавиатуры
.keydown() при нажатии клавиши
.keypress() при нажатии клавиши до тех пор, пока вы не отпустите
.keyup() отпускание клавиши
input

События jQuery
.hover() наведение / снятие указателя мыши
.toggle() запускается от щелчка кнопкой мыши ( открыть выпадающее меню одним щелчком и скрыть вторым)

Объект события
pageX Расстояние (px) от указателя мыши до левого края окна браузера
pageY Расстояние (px) от указателя мыши до верхнего края окна браузера
screenX Расстояние (px) от указателя мыши до левого края монитора
screenY Расстояние (px) от указателя мыши до верхнего края монитора
shiftKey TRUE при нажатой клавише SHIFT
which определение числового кода нажатой клавиши ( с shiftKey)
target объекту события щелкнули кнопкой мыши
data + bind() для передачи данных функции, управляющей событием

Селекторы jQuery
https://html5book.ru/jquery-selectors/
:even :odd :first :last :first-child :nth-child(n) :not(селектор) :contains(текст) :hidden :visible :active :checked :focus :hover :disabled :target :animated :button :checkbox

Манипуляции HTML-элементами

https://html5book.ru/jquery-manipulyacii/

.text() возврат / добавление текста
.append() добавляет содержимое
.appendTo()
.prepend() добавляется в начало
.prependTo()
.before() добавляет перед эл-том
.insertBefore() Вставляет содержимое перед элементом
.after() добавляет после эл-та
.insertAfter() Вставляет содержимое
.wrap() обертывает HTML-разметкой
.wrapAll() Оборачивает все элементы как единое целое в HTML-разметку
.wrapInner() Оборачивает содержимое элементов

.unwrap() Удаляет эл-т
.detach(селектор)
.remove() удаляет все элементы обернутого набора
.empty() Удаляет содержимое
.replaceWith() Заменяет элемент
.replaceAll()
.clone() Создает копии

Чтение и изменение CSS-свойств https://html5book.ru/jquery-svoistva-klassy-atribyti/
.addClass() .removeClass()
.toggleClass() добавляет при отсутствии / удаляет при присутствии
.hasClass() наличие класса true / false
.attr() .removeAttr()
.css() .width() .height()
.innerWidth() .innerHeight() с учетом padding
.outerWidth() .outerHeight() с учетом рамки и отступов
.offset() координаты (left и top)
.position()

Обход DOM и выборка html-элементов
https://html5book.ru/jquery-vyborka-elementov/

jQuery анимация
.fadeIn() прозрачность
.fadeOut() исчезание (opacity:0) .fadeTo() изменить степень прозрачности
.fadeToggle() исчезание/появление
.hide() скрыть видимый эл-т
.show() показать скрытый эл-т
.toggle() переключение состояния
.slideDown() появление скрытого эл-та
.slideUp() изменение height до 0, после display: none;
.slideToggle()
https://html5book.ru/jquery-animaciya/

.animate() JS

Математика для верстальщика

Функции сравнения CSS: min(), max() и clamp().
Построение 3D

Подробнее
Оптимизация

Тестируем и оптимизируем верстку. Инструменты.

Подробнее
Chrome DevTools

Инструменты разработчика в браузере. Инструменты Firefox.

Подробнее
Псевдоэлементы & псевдоклассы

Обзор и примеры.

Подробнее
Pure CSS

Функцияонал чистого CSS.

Подробнее
Переменные CSS

Пользовательские CSS-свойства

Подробнее
Руководство по word-wrap, overflow-wrap и word-break в CSS

Переполнение контента и принудительный перенос строки.

Подробнее
Анатомия css-каскада

Фундаментальные механизмы: обработка значений (value processing), каскад и наследование.

Подробнее
Многослойные элементы

Попапы, модальные окна, тултипы, прокручивающиеся вместе со всем сайтом «липкие» меню, выпадающие элементы, «прелоадеры».

Подробнее

Блоки

page — корневой элемент страницы
header — шапка (страницы или элемента)
footer — подвал (страницы или элемента)
section — раздел контента (один из нескольких)
body — основная часть (страницы или элемента)
content — содержимое элемента
sidebar — боковая колонка (страницы или элемента)
aside — блок с дополнительной информацией
widget — виджет, например, в боковой колонке

Раскладка

wrapper, wrap — обёртка, обычно внешняя
inner — внутренняя обёртка
container, holder, box — контейнер
grid — раскладка (страницы или элемента) в виде сетки (обычно содержит в себе row и col)
row — контейнер в виде строки
col, column — контейнер в виде столбца

Элементы управления

button, btn — кнопка, например, для отправки формы
control — элемент управления, например, стрелки «Вперёд/назад» в фотогалерее, кнопки управления слайдером
dropdown — выпадающий список

Текст

title, subject, heading, headline, caption — заголовок
subtitle — подзаголовок
slogan — слоган
lead, tagline — лид-абзац в тексте
text — текстовый контент
desc — описание, вариант текстового контента
excerpt — отрывок текста, обычно используется перед ссылкой «Читать далее…»
link — ссылка
copyright, copy — копирайт

Списки

list, items — список
item — элемент списка

Изображения

image, img, picture, pic — картинка
icon — иконка
logo — логотип
userpic, avatar — юзерпик, маленькая картинка пользователя
thumbnail, thumb — миниатюра, уменьшенное изображение

Медиавыражения

phone, mobile — мобильные устройства
phablet — телефоны с большим экраном (6-7″)
tablet — планшеты
notebook, laptop — ноутбуки
desktop — настольные компьютеры

Размеры

tiny — маленький, крохотный
small — небольшой
medium — средний
big, large — большой
huge — огромный
narrow — узкий
wide — широкий

Состояния

active, current — активный элемент, например, текущий пункт меню
hidden — скрытый элемент
error — статус ошибки
warning — статус предупреждения
success — статус успешного выполнения задачи
pending — состояние ожидания, например, перед сменой статуса на error или success

Дополнительно

search — поиск
socials — блок иконок соцсетей
advertisement, adv, commercial, promo — рекламный блок (режутся Адблоком, не рекомендуется использовать такие классы для блоков с внутренней рекламой)
features, benefits — список основных особенностей товара, услуги
slider, carousel — слайдер, интерактивный элемент с прокруткой содержимого
pagination — постраничная навигация
user, author — пользователь, автор записи или комментария
meta — блок с дополнительной информацией, например, блок тегов и даты в посте
cart, basket — корзина
breadcrumbs — навигационная цепочка, «хлебные крошки»
more, all — ссылка на полную информацию
modal — модальное (диалоговое) окно
popup — всплывающее окно
tooltip, tip — всплывающие подсказки
preview — анонс, отрывок, например новости или поста, может состоять из заголовка, описания и картинки. Предполагается ссылка на полную версию

Источник
11920x1080 22.89%
21536x864 7.31%
31366x768 6.74%
41440x900 4.95%
5800x600 4.70%
62560x1440 4.39%
71280x720 2.68%
81680x1050 2.03%
9414x896 2.02%
10393x873 1.79%