Рамки в форме вырезов — без SVG, картинок и костылей
➿ ➿ ➿ ➿ ➿ ➿ ➿ ➿ ➿ ➿
Кажется, CSS-маски умеют всё… пока дизайнер не говорит: «А можно, чтобы рамка повторяла форму выреза?»
В новом выпуске «CSS Боль» рассказываем, почему привычные
🐭 Смотреть на YouTube
🐹 Смотреть в VK
Кажется, CSS-маски умеют всё… пока дизайнер не говорит: «А можно, чтобы рамка повторяла форму выреза?»
В новом выпуске «CSS Боль» рассказываем, почему привычные
border и box-shadow внезапно перестают работать, и как современный CSS позволяет решить задачу аккуратно, надёжно и с отличной поддержкой.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥12❤🔥3🥰1
Forwarded from Коля Шабалин и великий аттрактор кода
Что стало Widely available в Baseline в декабре 2025
Коротко:
• calc() keywords
• JavaScript modules in workers
• window.print() 😄
Длинно: https://habr.com/ru/articles/979276/
Коротко:
• calc() keywords
• JavaScript modules in workers
• window.print() 😄
Длинно: https://habr.com/ru/articles/979276/
🔥6
В начале 2025-го казалось, что всё кончено: ИИ нас заменит, разработчиков уволят, стартапы будут делать в одиночку люди без опыта, а один джун с агентами закроет работу целой команды.
К концу года паника прошла — наступило нейроотрезвление.
➿ ➿ ➿ ➿ ➿ ➿ ➿ ➿ ➿ ➿
В новом выпуске «CSS Боли» спокойно разбираемся, что на самом деле происходит. Почему ИИ стал удобным прикрытием для увольнений, а не их причиной. Сколько денег сожгли на вайб-кодинге. И главное — ставим эксперимент: даём ChatGPT реальную задачу и смотрим, как он с ней справляется. Спойлер: после долгих препирательств нейросеть призналась — «Я соврал концептуально».
Ролик для всех, не только для программистов: код будет, но понимать его не нужно — всё и так видно. Если тревожно за будущее профессии, самое время посмотреть и выдохнуть.
🐭 Смотреть на YouTube
🐹 Смотреть в VK
К концу года паника прошла — наступило нейроотрезвление.
В новом выпуске «CSS Боли» спокойно разбираемся, что на самом деле происходит. Почему ИИ стал удобным прикрытием для увольнений, а не их причиной. Сколько денег сожгли на вайб-кодинге. И главное — ставим эксперимент: даём ChatGPT реальную задачу и смотрим, как он с ней справляется. Спойлер: после долгих препирательств нейросеть призналась — «Я соврал концептуально».
Ролик для всех, не только для программистов: код будет, но понимать его не нужно — всё и так видно. Если тревожно за будущее профессии, самое время посмотреть и выдохнуть.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥9🥰5💯3
Когда дизайнер присылает макет с «инвертированным углом», начинаются страдания. Псевдоэлементы, абсолютное позиционирование, подгонка радиусов — и всё это разваливается, как только под карточкой появляется градиент или картинка.
Александр Першин написал nebo.css — опенсорсную библиотеку для впуклых углов. Название расшифровывается как negative border radius. По духу это как normalize.css: подключаете один CSS-файл, добавляете класс
Разбираем, как это устроено: https://habr.com/ru/articles/987944/
Демонстрация: https://htmlacademy.ru/demos/195
GitHub: https://github.com/htmlacademy/nebo.css
Александр Першин написал nebo.css — опенсорсную библиотеку для впуклых углов. Название расшифровывается как negative border radius. По духу это как normalize.css: подключаете один CSS-файл, добавляете класс
nebo — и угол готов. Работает на любых фонах, настраивается через CSS-переменные.Разбираем, как это устроено: https://habr.com/ru/articles/987944/
Демонстрация: https://htmlacademy.ru/demos/195
GitHub: https://github.com/htmlacademy/nebo.css
👏12🔥6❤🔥3
CSS scroll-driven animations позволяют привязать любую анимацию к состоянию прокрутки — без JavaScript, без вычислений
Раньше для анимаций по скроллу приходилось вспоминать, как работают все эти
В новом выпуске CSS Боли разбираем, как это работает. Функция
Это первая часть серии — знакомство с анонимной временной шкалой прокрутки. В следующих выпусках — ещё больше.
Демонстрации:
🔜 Прогрессбар со scroll-анимацией
🔜 Абсолютное позиционирование
🐭 Смотреть на YouTube
🐹 Смотреть в VK
offset, без боли.Раньше для анимаций по скроллу приходилось вспоминать, как работают все эти
offsetTop, scrollY, getBoundingClientRect. Потом — математика, потом — кроссбраузерность. Теперь достаточно одного CSS-свойства: animation-timeline: scroll(). Попробуйте в демке.В новом выпуске CSS Боли разбираем, как это работает. Функция
scroll() с параметрами scroller и axis, тонкости с containing block и позиционированием, почему nearest ведёт себя не так очевидно.Это первая часть серии — знакомство с анонимной временной шкалой прокрутки. В следующих выпусках — ещё больше.
Демонстрации:
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥13❤🔥4💯2
Forwarded from PiterJS (Дим)
✨ На грядущем PiterJS для вас выступит Александр Першин (20 лет в веб-разработке, сооснователь HTML Academy, много лет исследует современный CSS) с докладом:
📜 Вырезы в блоках. Революция
🎫 Регистрируйся, пока есть места: https://piterjs.org/#meetup=16t4un_a87dnm
✔️ А если передумал идти — отмени регистрацию там же.
📜 Вырезы в блоках. Революция
В современном CSS произошла тихая революция — теперь простые вырезы в блоках можно делать всего одним свойством.
В докладе мы сравним старый и новый подходы к созданию блоков с вырезами, а также разберём полную "обвязку" визуальных решений: как делать тени, рамки и аутлайны, повторящие форму вырезов.
Это доклад про будущее, которое уже наступило, и про решения, которые упрощают разработку сложных интерфейсных решений на порядок.
🎫 Регистрируйся, пока есть места: https://piterjs.org/#meetup=16t4un_a87dnm
✔️ А если передумал идти — отмени регистрацию там же.
🔥10❤🔥3
Вывести значение CSS-переменной прямо на страницу — без JavaScript. Звучит как фантастика, но CSS это умеет: две строчки, работает во всех браузерах.
➿ ➿ ➿ ➿ ➿ ➿ ➿ ➿ ➿ ➿ ➿ ➿
Связка
В новом выпуске «CSS Боли» — путь от простого счётчика до анимированного кругового прогресс-бара. Попробуйте в демке самостоятельно и смотрите разбор целиком.
🐭 Смотреть на YouTube
🐹 Смотреть в VK
Связка
counter-reset + counter() + content превращает CSS-переменную в текст на экране. Для целых чисел — элементарно. Для дробных — обход через calc(), чтобы подсказать счётчику тип данных. А если в переменной хранятся градусы или пиксели? Тут помогает tan(atan2()) — трюк, который убирает единицу измерения из значения.В новом выпуске «CSS Боли» — путь от простого счётчика до анимированного кругового прогресс-бара. Попробуйте в демке самостоятельно и смотрите разбор целиком.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8💯4❤🔥3😱1
Авторский "тирлист" CSS-фич, которые недавно стали широко доступны, с подробной аргументацией
Forwarded from Веб-платформа
Что нового Baseline Widely Available, часть 1
В прошлом году (+ в январе 2026) довольно много платформенных фич достигли статуса Baseline Widely Available — это значит, что они поддерживаются во всех основных браузерах уже 30 месяцев! А это поводбескомпромиссно тащить их в прод проверить аналитику по пользовательским устройствам и браузерам в вашем проекте (скорее всего ваши пользователи уже обзавелись браузером, которые эти фичи поддерживают).
Собрал списком все фичи с кратким описанием и моими комментами к их использованию.
CSS
Container Queries — применение стилей на основе размеров родительского контейнера, а не viewport. Позволяет создавать адаптивные компоненты, которые реагируют на свой контейнер.
Мнение: 5 из 5, но требует перестроить майндсет в целом при работе с UI (то есть не только вам как разработчику, но ещё из продукту и дизайнеру, часто думающим "мобилками"). Хорошо ложится на UI-киты и разработку изолированных компонентов.
—
Individual Transform Properties — отдельные свойства
Мнение: 3 из 5, приятный сахар, помогает сократить повторящийся код при написании трансформов, легко внедрить.
—
Motion Path — анимация элементов вдоль заданного пути с помощью
Мнение: 2 из 5, специфичная, но прикольная фича, но если появится подходящая задача и вовремя вспомнить, можно избежать использования JS для анимации движения элемента по траектории.
—
Grid Animation — анимация свойств
Мнение: 2 из 5, в целом прикольная фича для разъезжающихся динамических лейаутов, но применимость нечастая.
—
animation-composition — выбор способа комбинирования анимаций, влияющих на одно свойство.
Мнение: 2 из 5, если делаете руками CSS-анимации, может пригодиться, иначе не будет полезно.
—
color-mix() — смешивание двух цветов в заданном цветовом пространстве. Полезно для создания светлых/тёмных оттенков.
Мнение: 4 из 5, чрезвычайно мощная штука, если настраиваете собственную дизайн-систему, стайлгайд или UI-кит в проекте.
—
color() — выбор цвета из указанного цветового пространства. Поддерживает wide-gamut пространства вроде
Мнение: 4 из 5, аналогично мнению про
—
Lab и LCH — цветовые пространства с перцептивной равномерностью. Lab использует прямоугольные координаты, LCH — полярные.
Oklab и OkLCh — цветовые пространства, разработанные для лучшего соответствия человеческому восприятию цвета. OkLCh — полярный вариант Oklab.
Мнение: 4 из 5, формат
—
Small, Large, Dynamic Viewport Units — единицы
Мнение: 4 из 5, если вы когда-нибудь боролись с fullscreen-высотой в вёрстке на мобилках, то в следующий раз присмотритесь к этим значениям.
продолжение следует...
#Пульс_веб_платформы
@web_platform | Поддержать платформу⭐️
В прошлом году (+ в январе 2026) довольно много платформенных фич достигли статуса Baseline Widely Available — это значит, что они поддерживаются во всех основных браузерах уже 30 месяцев! А это повод
Собрал списком все фичи с кратким описанием и моими комментами к их использованию.
CSS
Container Queries — применение стилей на основе размеров родительского контейнера, а не viewport. Позволяет создавать адаптивные компоненты, которые реагируют на свой контейнер.
.card {
container-type: inline-size;
}
@container (min-width: 300px) {
.card { background-color: lightblue; }
}
Мнение: 5 из 5, но требует перестроить майндсет в целом при работе с UI (то есть не только вам как разработчику, но ещё из продукту и дизайнеру, часто думающим "мобилками"). Хорошо ложится на UI-киты и разработку изолированных компонентов.
—
Individual Transform Properties — отдельные свойства
translate, scale, rotate вместо одного transform. Упрощает анимации и улучшает читаемость кода.
.element {
translate: 20px 10px;
scale: 0.8;
rotate: 90deg;
}
Мнение: 3 из 5, приятный сахар, помогает сократить повторящийся код при написании трансформов, легко внедрить.
—
Motion Path — анимация элементов вдоль заданного пути с помощью
offset-path.
.element {
offset-path: path('M10 10 L 100 100');
animation: move 2s linear infinite;
}
Мнение: 2 из 5, специфичная, но прикольная фича, но если появится подходящая задача и вовремя вспомнить, можно избежать использования JS для анимации движения элемента по траектории.
—
Grid Animation — анимация свойств
grid-template-columns и grid-template-rows.
.grid {
display: grid;
grid-template-columns: 1fr 1fr;
transition: grid-template-columns 0.3s;
}
.grid:hover {
grid-template-columns: 1fr 2fr;
}
Мнение: 2 из 5, в целом прикольная фича для разъезжающихся динамических лейаутов, но применимость нечастая.
—
animation-composition — выбор способа комбинирования анимаций, влияющих на одно свойство.
.element {
animation-composition: add; /* replace, add, accumulate */
}
Мнение: 2 из 5, если делаете руками CSS-анимации, может пригодиться, иначе не будет полезно.
—
color-mix() — смешивание двух цветов в заданном цветовом пространстве. Полезно для создания светлых/тёмных оттенков.
.element {
background: color-mix(in srgb, red 50%, white 50%);
}
Мнение: 4 из 5, чрезвычайно мощная штука, если настраиваете собственную дизайн-систему, стайлгайд или UI-кит в проекте.
—
color() — выбор цвета из указанного цветового пространства. Поддерживает wide-gamut пространства вроде
display-p3 для более насыщенных цветов.
.element {
color: color(display-p3 0.5 0.2 0.8);
}
Мнение: 4 из 5, аналогично мнению про
color-mix().—
Lab и LCH — цветовые пространства с перцептивной равномерностью. Lab использует прямоугольные координаты, LCH — полярные.
Oklab и OkLCh — цветовые пространства, разработанные для лучшего соответствия человеческому восприятию цвета. OkLCh — полярный вариант Oklab.
.element {
color: lab(50% 20 -30);
background: lch(60% 50 150);
color: oklab(0.5 0.2 -0.1);
background: oklch(0.6 0.5 120);
}
Мнение: 4 из 5, формат
oklch может также пригодиться для гибкой настройки цветовой палитры и её производных в проекте.—
Small, Large, Dynamic Viewport Units — единицы
dvh, svh, lvh для учёта UI мобильных браузеров. sv* — минимальный размер, lv* — максимальный, dv* — динамический.
.element {
height: 100svh; /* 100% минимального viewport height */
width: 100dvw; /* 100% динамического viewport width */
}
Мнение: 4 из 5, если вы когда-нибудь боролись с fullscreen-высотой в вёрстке на мобилках, то в следующий раз присмотритесь к этим значениям.
продолжение следует...
#Пульс_веб_платформы
@web_platform | Поддержать платформу
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥8🦄1
Круглый вырез в карточке — пять обёрток, 20 строчек CSS и сломанный фон на стыках блоков. Знакомо?
Классический подход заставляет «нарезать» карточку на кусочки: колонка для контента, колонка для выреза, внутри — три блока с
Одно свойство
Демонстрация: https://htmlacademy.ru/demos/235
Читать статью → https://habr.com/ru/articles/993310/
Классический подход заставляет «нарезать» карточку на кусочки: колонка для контента, колонка для выреза, внутри — три блока с
flex-grow и radial-gradient. И всё ломается, если карточке задать градиентный фон — состыковать части принципиально невозможно.Одно свойство
mask-image с тем же radial-gradient решает задачу без единой обёртки. Карточка остаётся цельной — и корректно тянется, и принимает любой фон. В статье собираем оба варианта пошагово и сравниваем.Демонстрация: https://htmlacademy.ru/demos/235
Читать статью → https://habr.com/ru/articles/993310/
🔥14🎉6💯3🥰1😍1
DUMP SPB 2026 × HTML Academy
Весь внешний вид компонента — в CSS-переменных. JavaScript только переключает состояния. Звучит непривычно, но это рабочий подход.
На DUMP SPB 13 февраля Александр Першин выступит с докладом «Реактивный CSS» — про перенос логики отображения из JavaScript в стили. В докладе — сравнение двух реализаций одного компонента: классической на JS и реактивной на CSS. Можно будет оценить разницу в объёме и сложности кода.
Промокод PERSHIN — скидка 10% на билет.
Конференция · О докладе
Весь внешний вид компонента — в CSS-переменных. JavaScript только переключает состояния. Звучит непривычно, но это рабочий подход.
На DUMP SPB 13 февраля Александр Першин выступит с докладом «Реактивный CSS» — про перенос логики отображения из JavaScript в стили. В докладе — сравнение двух реализаций одного компонента: классической на JS и реактивной на CSS. Можно будет оценить разницу в объёме и сложности кода.
Конференция · О докладе
🔥8❤🔥3😍3
clip-path и CSS-маски не меняют форму блока — они её имитируют. Рамка, тень, outline не знают о вырезах и работают как с обычным прямоугольником.
Свойство border-shape работает по-другому. Как border-radius научил рамки скругляться, так border-shape + функция shape() учат их принимать произвольную форму. Рамки повторяют контур, box-shadow и outline тоже.
В спецификации CSS Borders Level 4 уже есть черновик, а в Chrome Canary — первые работающие прототипы. Пока ждём поддержку в браузерах, самое время разобраться с функцией shape().
В новом выпуске «CSS Боли» — как мы дошли от border-radius до произвольных форм и почему маски оказались тупиком для рамок и теней.
🐭 Смотреть на YouTube
🐹 Смотреть в VK
Свойство border-shape работает по-другому. Как border-radius научил рамки скругляться, так border-shape + функция shape() учат их принимать произвольную форму. Рамки повторяют контур, box-shadow и outline тоже.
В спецификации CSS Borders Level 4 уже есть черновик, а в Chrome Canary — первые работающие прототипы. Пока ждём поддержку в браузерах, самое время разобраться с функцией shape().
В новом выпуске «CSS Боли» — как мы дошли от border-radius до произвольных форм и почему маски оказались тупиком для рамок и теней.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥7👏2🤩2