creator cover Expa
Expa

Expa 

Исследую галактику фронтенда 🚀

6subscribers

80posts

About

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

План статей на ближайшее время

Сейчас передо мной стоит задача разобраться с CSS-спецификациями посвещённые работе скролов.

Новые дефолтные курсоры над полями форм

Не знаю, застали вы или нет, но раньше мы очень много спорили, нужно ли ставить cursor: pointer для <button>. Холивар заключался в том, что по умолчанию у кнопок стоит курсор default и это якобы соответствует поведению нативных приложений. Другие же, адекватные люди, говорили, что пользователю нужно подсказать, что с элементом можно взаимодействовать, например, с помощью смены курсора на pointer. Тут ведь ещё проблема в том, что не все интерактивные элементы выглядят как интерактивные. То есть это касалось не только кнопок, но и других элементов, на которые можно тыкнуть.
 
В CSS Working Group обсудили, какие курсоры должны использоваться для элементов форм и приняли официальное решение.
 
Что решили:
- cursor: pointer — для кнопок, выпадающих списков, чекбоксов, радиокнопок и других элементов, на которые можно нажать
- cursor: grab — для ползунков (range), а при перетаскивании — grabbing
- cursor: not-allowed — для отключённых элементов (disabled)
- cursor: default — для элементов с readonly и групп <optgroup>.
 
В основе решения лежит уже упомянутое решение адекватных людей. Курсор должен подсказывать пользователю, что можно сделать с элементом. pointer означает возможность нажатия, text — ввод текста, а grab — перетаскивание.
 
Ладно, теперь без накидывания и для полноты картины напишу, что на самом деле они обсудили. Это для тех, кто читает до конца =)
 
Сейчас если добавить <button> на страницу, то у него по умолчанию будет указано свойство appearance: auto. С внедрением новой спецификации CSS Form Control Styling Level 1 этот дефолт изменится на appearance: base. Именно для этого режима CSSWG решила использовать cursor: pointer у кнопок и некоторых других элементов форм. Подчеркну, что тип курсора меняется из-за appearance: base, а не потому что элемент "кнопка".
 
Дисскусия: https://github.com/w3c/csswg-drafts/issues/14251

Дайджесь #69

🦊 Привет, это Фронти!
Я принёс свежий выпуск #69 и собрал главное за неделю ✨
В этом выпуске: HTML осваивается внутри canvas, TanStack предлагает облегчённую замену React, TypeScript расширяет границы проверки типов, Node.js 26 становится LTS, а забытые вкладки буквально зарастают травой.
Полный выпуск 👉 https://frontend-weekly.ru/weekly-digest-69/
🧪 HTML и веб-платформа
  • HTML-in-Canvas объединяет графику с живыми HTML-элементами: формы остаются интерактивными, текст — доступным для поиска и выделения.
  • Safari экспериментирует со складными экранами: интерфейс сможет учитывать сгиб и размещать содержимое по разные его стороны.
  • Firefox включил scroll-driven animations по умолчанию, а Chrome разрешил повторять загрузку модулей после сетевых ошибок.
🎨 CSS и интерфейсы

Дайджест #68

🦊 Привет, это Фронти!
Я принёс свежий выпуск #68 и собрал главное за неделю ✨
В этом выпуске: разработчики выбирают приоритеты Interop 2027, CSS осваивает random(), форматирование JavaScript превращает Tetris в Snake, TanStack Start 1.0 выходит в стабильную версию, TypeScript ускоряется, а Astro помогает выяснить, куда уходит время сборки.
Полный выпуск 👉 frontend-weekly.ru/weekly-digest-68/
🧪 HTML и веб-платформа

Дайджест #6

🦊 Привет, это Фронти!
Я принёс свежий выпуск #67 и собрал главное за неделю ✨
В этом выпуске: Bun учится проверять типы, Bootstrap 6 осваивает современный CSS, TanStack Start добирается до стабильной версии, а сторонние скрипты отправляются тусоваться в Web Worker.
Полный выпуск 👉 frontend-weekly.ru/weekly-digest-67/
🧪 HTML и платформа
  • Потоковый HTML и декларативные частичные обновления позволяют получать фрагменты страницы по мере готовности и собирать их в нужном порядке. Пока это эксперимент Chromium.
  • Нативный loading="lazy" работает в браузерах по-разному: картинки начинают загружаться заранее, но расстояние до видимой области отличается.
  • Уже выбираем приоритеты Interop 2027: какие возможности браузерам пора научиться понимать одинаково.

Дайджест #66

🦊 Привет, это Фронти!
 
Я принёс свежий выпуск #66 и собрал главное за неделю ✨
В этом выпуске: Cloudflare открыла данные о реальной скорости веба, Chrome 155 получил JPEG XL, CSS учится сам ставить tooltip’ы на место, Deno присоединяется к Cloudflare, Next.js включает Cache Components по умолчанию, Preact 11 и Remix 3.0 выходят на новый виток, а TypeScript 7 уже пытаются переписать на Rust.
 
🧪 HTML и платформа
  • Cloudflare открыла ежедневно обновляемый набор реальных Core Web Vitals с 10 000 крупных сайтов — в том числе с данными Safari/WebKit.
  • Chrome 155 получил JPEG XL: компактнее изображения, HDR и современные возможности сжатия.
  • Открыт State of HTML 2026: можно повлиять на приоритеты развития браузерной платформы.
  • progress(), alpha() и revert-rule теперь доступны во всех основных браузерах.
  • SVG 2 приблизился к статусу рекомендации W3C.
  • Свежий опрос WebAIM напоминает: доступность нельзя сводить к одному автоматическому прогону.
  • 95% сайтов авиакомпаний не проходят Core Web Vitals на мобильных — хороший повод тестировать не только на своём MacBook.
  • Платформа снова предлагает перед установкой библиотеки проверить, не умеет ли это уже браузер.
🎨 CSS и интерфейсы
  • CSS Anchor Positioning берёт на себя привязку tooltip’ов и выпадающих меню: меньше измерений, подписок и JavaScript.
  • Dart Sass 2.0 выйдет в декабре, а нынешние предупреждения о старом синтаксисе станут ошибками.
  • Panda CSS 2.0 получил Rust-компилятор, дизайн-системы и поддержку View Transitions.
  • children-count() позволяет адаптировать стили к числу дочерних элементов.
  • CSS Doodle продолжает доказывать, что CSS — ещё и отличный генератор узоров, фонов и иконок.
  • Появились удобные заготовки для доступных bottom sheet на CSS Scroll Snap и scroll-driven animations.
📦 JavaScript
  • Deno присоединяется к Cloudflare: рантайм и edge-инфраструктура становятся ещё ближе.
  • astromd4x обещает ускорить Markdown-рендеринг в Astro в 50–70 раз.
  • µsignal предлагает реактивность в примерно 816 байтах с Brotli.
  • wasm-git переносит Git на WebAssembly — использовать его можно и в Node.js, и прямо в браузере.
  • Amber компилирует типобезопасный язык в Bash, помогая поймать ошибки до запуска скрипта.
⚛️ React и фреймворки
  • Next.js 16.4 рекомендует Cache Components по умолчанию для новых приложений.
  • Preact 11 принёс Hydration 2.0 и автоматическую передачу ref.
  • Remix 3.0 вышел из стабильной ветки и больше не построен на React.
  • TanStack Charts 1.0 предлагает типизированные графики для SVG и Canvas.
  • React Aria Sheet добавляет доступную свайпаемую нижнюю панель на scroll snapping и view timelines.
  • MSW 3.0 стал ESM-only, получил GraphQL-подписки и похудел.
  • Lexical 0.51 тоже перешёл только на ESM — эпоха require() продолжает сдавать позиции.
📘 TypeScript

Дайджест #65

🦊 Привет, это Фронти!
Принёс свежий выпуск #65 и собрал главное за неделю ✨
В этом выпуске: Chrome готовит контроль подключений страницы, GitHub ускорил серверный рендеринг с помощью CSS Modules, у JavaScript скоро появятся новые методы итераторов, Remix 3 вышел без обязательного React, а Vite+ собрал инструменты разработки под одной командой.
🧪 HTML и браузерная платформа
  • Chrome 152 получит Connection-Allowlist: сайт сможет указать, к каким серверам странице разрешено подключаться.
  • Разработчики обсуждают будущие возможности браузеров — от Sanitizer API до новых способов управления фокусом и CSS-сетками. Пока это предложения.
  • Нолан Лоусон напоминает: прежде чем ставить библиотеку, стоит проверить, не умеет ли браузер уже решать эту задачу.
🎨 CSS и интерфейсы
  • GitHub за три года перешёл со styled-components на CSS Modules. По измерениям команды, время серверного рендеринга сократилось на 55%.
  • CSS-эксперименты добрались до обнаружения пересечения элементов и получения сведений о Grid без JavaScript.
  • Контейнерные запросы помогают подстраивать компонент под место, которое ему досталось, а не только под ширину экрана.
📦 JavaScript
  • Три новых метода итераторов — chunking, join и includes — достигли финальной стадии стандартизации.
  • Разбор объектов без прототипа показывает, как сохранить быстрый доступ к свойствам даже после удаления прототипа.
  • А если хочется чего-то совсем другого, Take on Me воссоздали целиком на JavaScript, включая вокал.
⚛️ Библиотеки и фреймворки
  • Preact 11 улучшил гидрацию и работу с ref, но теперь публикуется только как ESM.
  • Remix 3 вышел без обязательной зависимости от React.
  • Nuxt 4.6 экспериментирует со сборкой серверной части через Vite, а SvelteKit 3 приводит в порядок существующие возможности.
  • Angular разрабатывает компоненты нового компилятора на Rust, Vinext 1.0 переносит возможности Next.js на Vite.
📘 TypeScript

Дайджест #64

🦊 Привет, это Фронти!

 
Я принёс свежий выпуск #64 и собрал главное за неделю ✨
 
В этом выпуске: браузеры готовят нативные превью изображений, DuckDB хранит полноценную базу прямо на клиенте, CSS продолжает избавляться от JavaScript, tinyjs собирает desktop-приложения легче 10 МБ, GitHub рендерит миллионные диффы за пределами React, а Transformers.js запускает всё больше AI-моделей через WebGPU.
 
🧪 HTML и платформа
  • Атрибут previewsrc может передать браузеру загрузку и замену размытого превью изображения.
  • DuckDB-Wasm вместе с OPFS превращает вкладку в приложение с полноценной локальной базой данных.
  • Chrome 154 научился адаптировать размер iframe под его содержимое.
  • Chrome, Edge и DevTools продолжают готовить веб к работе с AI-агентами через MCP и новые платформенные API.
🎨 CSS и дизайн
  • Нативная вложенность, :has(), современные цвета и другие возможности CSS уже закрывают задачи, ради которых раньше подключали препроцессор или JavaScript.
  • Scroll-triggered animations запускают эффекты в нужной точке прокрутки и дополняют scroll-driven animations.
  • CSS-функция round() помогла победить дрожащие индикаторы загрузки в Safari.
  • Хорошая дизайн-система — это ограниченные варианты и общие токены, а не компонент с сорока семью пропсами.
♿ Доступность и развитие

Дайджест #63

🦊 Привет, это Фронти!
Я принёс свежий выпуск #63 и собрал главное за неделю ✨
В этом выпуске: Safari 27 и Chrome 153 расширяют HTML, React 19.3 стабилизирует View Transitions, Node.js 26.9 открывает дорогу к нативным библиотекам, pnpm объединяет три экосистемы, WebMCP готовит сайты к общению с агентами, а открытые Vite-серверы снова напоминают беречь .env.
🧪 HTML, браузеры и доступность
  • Safari 27 улучшил формы, адаптивные изображения и CSS, а top-level await теперь надёжно работает во всех основных браузерах.
  • Chrome 153 добавил HTML-элементы <camera> и <microphone> для более понятного запроса доступа к устройствам.
  • Новые <geolocation>, <install>, настраиваемый <select> и HTML внутри Canvas постепенно превращают браузер в полноценный UI-фреймворк.
  • Front-End Checklist вырос почти до 400 правил, а сложные таблицы всё ещё важно проверять реальными скринридерами.
🎨 CSS и дизайн

Дайджест #62

🦊 Привет, это Фронти!
Я принёс свежий выпуск #62 и собрал главное за неделю ✨
В этом выпуске: HTML спокойно избавляется от наследия старых браузеров, CSS учится связывать компоненты почти без JavaScript, Safari наконец исправляет top-level await, React 19.3 стабилизирует Fragment Refs и View Transitions, Shopify возвращается к Swift и Kotlin, а Node.js готовит встроенные бенчмарки.
 
🧪 HTML и веб-платформа
  • В большом обзоре собрали новые HTML-возможности 2026 года: эксперименты с геолокацией, камерой, микрофоном, 3D-моделями и Canvas.
  • Условные комментарии, X-UA-Compatible, старые настройки ClearType и даже initial-scale=1.0 во многих случаях можно спокойно оставить в прошлом.
  • W3C собирает обратную связь о будущем веб-стандартов, а браузерные команды уже принимают предложения для Interop 2027.
  • Chrome перешёл на двухнедельный цикл обновлений. Веб-платформа теперь обновляется почти так же часто, как список зависимостей в чужом package.json.
🎨 CSS и дизайн
  • Lea Verou предлагает переосмыслить переключатели тёмной темы: если сайт хорошо следует системным настройкам, отдельная кнопка может быть просто не нужна.
  • Typed attr() вместе с container style queries позволяют передавать состояние компонента через HTML-атрибуты и принимать решения в CSS — без дополнительных классов и JS-обвязки.
  • CSS Anchor Positioning помогает анимировать перестроение Grid, а современные CSS-свойства заметно упрощают кастомные scrollbar.
  • Drawably добавляет в интерфейсы рисованные анимированные элементы всего с несколькими килобайтами JavaScript.
🔐 Безопасность и доступность
  • Исследование PortSwigger показало, что CSS в веб-почте может быть инструментом атаки: подменять интерфейс, обходить прокси изображений и собирать данные.
  • Dropbox автоматизировала аудит cookie на сотнях внутренних поверхностей.
  • WCAG Radar проверяет текущую страницу по WCAG 2.1 и 2.2 AA прямо в браузере.
  • SimpleWebAuthn 14.0 добавил поддержку постквантовых passkey.
Subscription levels4

<div>

$1.31 per month
Ты как <div> — без тебя не собрать ни один интерфейс.
Этот уровень — отличный способ сказать «спасибо» за статьи, переводы и новости.

<section>

$6.6 per month
Как <section> задаёт структуру странице, так и ты помогаешь проекту расти и становиться системнее.
- У тебя будет возможность участия в голосованиях за будущие темы и статьи.
- Ты получаешь доступ к еженедельному дайджесту фронтенд-новостей раньше остальных.

<main>

$13.1 per month
Главный контент — здесь.
На этом уровне ты получаешь максимальную ценность и прямое влияние на развитие канала.
- Возможность задать свой вопрос и получить персональный ответ/разбор.
Subscription Spots Are Limited

h1

$1 951 per month
На этой странице ты одинок.
Это просто шутка 😊
Go up