
Адаптивность в CSS и JavaScript: типичные ошибки вёрстки
Почему макет разъезжается на телефоне, resize срабатывает 60 раз в секунду, а 100vh обрезает контент в Safari. Разбор частых ошибок адаптивной вёрстки и рабочие замены.

Почему макет разъезжается на телефоне, resize срабатывает 60 раз в секунду, а 100vh обрезает контент в Safari. Разбор частых ошибок адаптивной вёрстки и рабочие замены.

Как разбить интерфейс на компоненты без React: изоляция стилей, состояния, переиспользование. Разбираем BEM, кастомные свойства, Custom Elements и Shadow DOM — с ценой каждого подхода.

Скелетон-заглушка выглядит красиво в Storybook и разваливается на реальных данных: прыгает лейаут, крутится вечный спиннер, при ошибке пусто. Разбираем, что проверить до релиза.

Спиннер, скелетон, оптимистичный UI или ничего — четыре подхода к тому, что показать пользователю, пока грузятся данные. Разбираем цену каждого и когда какой выбирать.

Спиннер по центру экрана и layout shift на весь список — две самые частые ошибки в состояниях загрузки. Разбираем, когда скелетон помогает, когда мешает и как не сломать разметку при подмене плейсхолдера на данные.

Бесконечный скролл кажется современнее нумерованных страниц, но ломает возврат к товару, память браузера и SEO. Разбираем четыре подхода на конкретных задачах: каталог, лента новостей, поиск, админка.

Бесконечный скролл кажется современнее, но ломает возврат к товару, глубокую ссылку и SEO. Разбираем, какой подход к списку выбрать под конкретную задачу и чем платит каждый.

Прогресс-бар при загрузке файла ломается там, где его не ждут: fetch не даёт события прогресса, а прыгающий процент — это не баг сети, а особенность буфера. Разбираем частые ошибки и рабочие приёмы.

Прогресс-бар на fetch не работает при аплоаде, а на 2-гигабайтном файле браузер съедает память и отваливается по таймауту. Разбираем, что проверить до релиза.

fetch не умеет отдавать прогресс аплоада штатно, XMLHttpRequest умеет, а поверх обоих — сторонние библиотеки и presigned-загрузки в облако. Разбираем, что выбрать под конкретную задачу и чем платишь за каждый вариант.

Собрать поле для номера карты вручную — значит попасть под полный объём требований PCI DSS. Разбираем три способа принять оплату во фронтенде и считаем, чем платишь за каждый.

Платёжная форма может терять клиентов из-за одного неверного события, лишнего поля или двойной отправки. Разбираем практические приёмы для браузерного интерфейса: валидацию, состояния кнопки, ошибки, редиректы и защиту данных.