Новый выпуск Firefox — это не просто набор обновлений, а настоящий прорыв в инструментах для веб-разработки. Основные нововведения: CSS Anchor Positioning по умолчанию, мощный Navigation API и расширенные возможности View Transitions. Давайте разберем все детали.
CSS Anchor Positioning (якорное позиционирование) — это настоящая революция в CSS. Теперь можно «привязывать» один элемент (например, тултип или выпадающее меню) к другому (якорю) прямо в CSS, без JavaScript, создавая отзывчивые интерфейсы.
Что теперь можно в Firefox 147:
Включено по умолчанию! Больше никаких флагов.
anchor-center: Новое, удобное значение для свойств align-self, justify-self и других, чтобы центрировать элемент относительно его якоря.position-anchor: none: Новое значение для отвязки элемента от якоря.@position-try правила отображаются в панели CSS.Практический пример создания тултипа:
/* 1. Объявляем якорь (кнопка) */
.button {
anchor-name: --tooltip-anchor;
}
/* 2. Создаем и привязываем тултип */
.tooltip {
position: absolute;
position-anchor: --tooltip-anchor; /* Связываем с кнопкой */
bottom: anchor(top); /* Размещаем тултип над кнопкой */
left: anchor(center); /* Центрируем по горизонтали */
translate: -50% 0; /* Точная центровка */
}
Преимущество: такой тултип автоматически адаптируется к прокрутке и границам экрана.
🛠 Улучшения для SPA: Navigation API и View Transitions
Firefox 147 делает разработку одностраничных приложений (SPA) значительно удобнее.
⚡️ Navigation API — новый стандарт для управления навигацией.
Позволяет перехватывать навигационные действия, управлять историей браузера и получать информацию о записях в истории. Он призван заменить History API и
window.location, устраняя их недостатки. Подробнее об API можно узнать в полной спецификации на MDN.🎭 View Transitions (Типы переходов)
API для плавных анимаций между состояниями страницы теперь поддерживает типы переходов (
types). Это позволяет задавать разные анимации для разных обновлений контента (например, «переход вперед» и «переход назад»). Доступно свойство Document.activeViewTransition для получения активного перехода. Узнать больше можно в полном руководстве по View Transition API.Инструменты разработчика также получили улучшения для View Transitions: псевдоэлементы :
:view-transition теперь видны в DOM, а анимации — в панели анимаций.Iterator.concat() для объединения итераторов.-webkit-perspective для совместимости, новые единицы измерения (rcap, rch, rex, ric) на основе шрифта корневого элемента, свойства counter-* и quotes для ::marker.API: WebGPU теперь для всех macOS на Apple Silicon, Brotli-сжатие в CompressionStream, CSS-модули (импорт стилей как CSSStyleSheet), Service Workers как ES-модули.localhost.Firefox 147 — это не просто обновление, а серьезный шаг к более выразительной, производительной и простой в разработке веб-платформе. CSS Anchor Positioning обещает сократить объем пользовательского JavaScript для раскладки. Navigation API и View Transitions делают навигацию в SPA предсказуемой и кинематографичной. А WebGPU и другие API открывают двери для новых классов веб-приложений.
#Firefox #WebDev #CSS #JavaScript #AnchorPositioning #ViewTransitions #NavigationAPI #Frontend
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Устали выбирать между быстрой первой загрузкой и моментальными переходами по сайту? Словари сжатия в HTTP/3 решают эту проблему, сокращая объём передаваемых CSS до минимума.
В статье разбираем:
🔹 Как технология устраняет дублирование кода
🔹 Пошаговая настройка
🔹 Стратегия внедрения с fallback для всех браузеров
Это не теория — метод уже работает в Chromium и готов к использованию в production.
#DevOps #CSS
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🤔1
matchMedia()Знаешь, как в JavaScript проверить, соответствует ли текущий viewport мобильному виду?
Не нужно городить
window.innerWidth и слушать resize вручную.Используй
matchMedia — тот же самый медиа-запрос, что и в CSS:const mq = matchMedia('(max-width: 550px)');
// Текущее состояние
console.log(mq.matches); // true / false
// Реагируем на изменения
mq.addEventListener('change', e => {
console.log('Мобильный?', e.matches);
});#JavaScript #CSS #Frontend
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥1
CSS
Надоело ломать голову над классами вроде
С декабря 2025 года у нас есть официальное решение:
В новом материале разобрали, как технология меняет повседневную работу:
✅ Упрощаем BEM: класс только на родителе, внутри — простые теги.
✅ Дружим с Tailwind: оставляем утилиты для сетки, а уникальный дизайн выносим в
✅ Убираем
Спойлер:внедрять можно точечно, не переписывая весь проект.
🖥 Читать статью
📱 @dev_notes_ru
#CSS #Frontend #BEM #Tailwind
@scope: Как изолировать стили без BEM и TailwindНадоело ломать голову над классами вроде
.user-panel__subscription-status--is-pending? Устали от простынь из утилитарных классов в HTML? 😫С декабря 2025 года у нас есть официальное решение:
@scope получил статус Baseline и работает во всех современных браузерах. Это не препроцессор, а нативный CSS, который останавливает «войны специфичности».В новом материале разобрали, как технология меняет повседневную работу:
@scope.!important: правило близости (proximity) решает конфликты без костылей.Спойлер:
#CSS #Frontend #BEM #Tailwind
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
Интеграция каскадных слоёв в существующий проект
В теории каскадные слои (
Мы провели рефакторинг реального сайта с 450+ строками «органически выросшего» CSS. Результат — пошаговая стратегия внедрения Cascade Layers без остановки разработки.
В статье:
✅ Подготовка: анализ, удаление мёртвого кода и зачистка
✅ Архитектура: почему выбрали именно 5 слоёв (
✅ Болевые точки: куда размещать медиазапросы, как импортировать шрифты и подключать библиотеки.
Основной вывод: Слои не исправляют хаос автоматически. Они лишь инструмент, и успех миграции зависит от качества подготовительного рефакторинга.
🖥 Читать статью
📱 @dev_notes_ru
#CSS #Frontend
В теории каскадные слои (
@layer) выглядят как серебряная пуля для управления специфичностью. Но что делать, если у вас не стартап с нуля, а проект, который рос и развивался годами?Мы провели рефакторинг реального сайта с 450+ строками «органически выросшего» CSS. Результат — пошаговая стратегия внедрения Cascade Layers без остановки разработки.
В статье:
!important (это критически важно).reset, base, layout, components, animations) и отказались от под-слоёв.Основной вывод:
#CSS #Frontend
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Модальное окно или диалог: как выбрать и не сломать доступность
Проектируете модальные окна? А знаете, чем они принципиально отличаются от не-модальных диалогов? 🤔
Это не просто вопрос терминологии. Неверный выбор типа компонента ломает сценарии для клавиатурных пользователей и людей со скринридерами. А неправильная реализация даже правильного выбора делает интерфейс недоступным.
В новом материале разобрали тему от и до:
✅ Алгоритм выбора: три вопроса, которые переводят проектное решение из разряда «по ощущениям» в разряд обоснованных критериев.
✅ Техническая реализация: что нативный
✅ Стилизация и анимация: важное ограничение
✅ Чек-лист доступности: 20+ пунктов для проверки перед релизом.
Бонус:Разбор вложенных модалок, работы с кастомными контролами и обработки длинного контента.
🖥 Читать статью
📱 @dev_notes_ru
#a11y #Frontend #CSS #HTML #JavaScript
Проектируете модальные окна? А знаете, чем они принципиально отличаются от не-модальных диалогов? 🤔
Это не просто вопрос терминологии. Неверный выбор типа компонента ломает сценарии для клавиатурных пользователей и людей со скринридерами. А неправильная реализация даже правильного выбора делает интерфейс недоступным.
В новом материале разобрали тему от и до:
<dialog> делает за вас, а за что всё ещё отвечаете вы (спойлер: возврат фокуса — за вами).transition и как его обойти.Бонус:
#a11y #Frontend #CSS #HTML #JavaScript
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2🔥1
Как писать CSS с
Помните головную боль с переопределением стилей во вложенных компонентах? Когда в навигации нужно стилизовать ссылки, но не трогать те, что внутри выпадающих меню? Раньше — сбросы и !important. Теперь — нативный
🔥 Событие, которого мы ждали годы: последний из мейнстрим-браузеров (да, Firefox) включил поддержку
В новом материале — только практика, без воды:
🔹 Как работает donut scoping (скоуп в виде бублика)
🔹 Где писать
🔹 Чем
Код можно копировать и вставлять в проект уже сегодня.
🖥 Читать статью
📱 @dev_notes_ru
#CSS #Frontend #JavaScript #scope
@scope: Полный разбор синтаксиса, изоляция стилей и donut scopingПомните головную боль с переопределением стилей во вложенных компонентах? Когда в навигации нужно стилизовать ссылки, но не трогать те, что внутри выпадающих меню? Раньше — сбросы и !important. Теперь — нативный
@scope.🔥 Событие, которого мы ждали годы: последний из мейнстрим-браузеров (да, Firefox) включил поддержку
@scope. Это значит, что технология получила статус Baseline и готова к продакшену.В новом материале — только практика, без воды:
🔹 Как работает donut scoping (скоуп в виде бублика)
🔹 Где писать
@scope: во внешних CSS или прямо в HTML-компонентах🔹 Чем
:scope в CSS отличается от :scope в JavaScriptКод можно копировать и вставлять в проект уже сегодня.
#CSS #Frontend #JavaScript #scope
Please open Telegram to view this post
VIEW IN TELEGRAM
Fluid-типографика: полное руководство по созданию адаптивных и доступных текстов
Вы когда-нибудь увеличивали масштаб страницы (
Хорошая новость: современный CSS позволяет сделать так, чтобы текст одновременно:
✅ Плавно подстраивался под экран
✅ Уважал личные настройки шрифта
✅ Проходил WCAG 1.4.4 (доступность)
В новой статье разобрали подход от простых медиазапросов к сложной, но элегантной системе на
🖥 Читать статью
📱 @dev_notes_ru
#CSS #Frontend #A11y
Вы когда-нибудь увеличивали масштаб страницы (
Ctrl/Cmd +), чтобы прочитать текст, но ничего не происходило? 🧐 Это не баг, а особенность «адаптивной» верстки, в которой размер привязан только к ширине экрана.Хорошая новость: современный CSS позволяет сделать так, чтобы текст одновременно:
В новой статье разобрали подход от простых медиазапросов к сложной, но элегантной системе на
clamp() и pow(). В конце — готовый чек-лист и формула, которую можно скопировать в проект.#CSS #Frontend #A11y
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3
Понижаем приоритет группы CSS-правил с помощью
Управление приоритетами CSS-правил — одна из ключевых задач при поддержке проекта любого масштаба. Традиционные методы (контроль порядка подключения, повышение специфичности) не всегда эффективны, особенно при работе со сторонними библиотеками или унаследованным кодом.
Альтернативный подход — использование каскадных слоёв (
В статье рассматриваются:
✅ Три типовых сценария для применения этой техники.
✅ Особенности интеграции слоёв в существующую архитектуру.
✅ Специфика работы
Будет полезно всем, кто стремится выстроить чистую и предсказуемую CSS-архитектуру.
🖥 Читать статью
📱 @dev_notes_ru
#CSS #Frontend
@layerУправление приоритетами CSS-правил — одна из ключевых задач при поддержке проекта любого масштаба. Традиционные методы (контроль порядка подключения, повышение специфичности) не всегда эффективны, особенно при работе со сторонними библиотеками или унаследованным кодом.
Альтернативный подход — использование каскадных слоёв (
@layer). Помещение "базовых" стилей (например, reset.css) в отдельный слой гарантирует, что они будут уступать основным правилам проекта, написанным вне слоя.В статье рассматриваются:
!important внутри каскадного слоя.Будет полезно всем, кто стремится выстроить чистую и предсказуемую CSS-архитектуру.
#CSS #Frontend
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1