Логово верстальщика
7.97K subscribers
1.16K photos
68 videos
4 files
2.01K links
Логово верстальщиков: HTML, CSS, JavaScript, практики современной верстки, вайбкодинг и использование ИИ в разработке.

Личный блог автора - @just_genych
По вопросам рекламы или разработки: @g_abashkin
Download Telegram
⁣View Transitions API в production: нативная SPA-подобная навигация без JS

Когда в MPA нужна плавная смена страниц, большинство инженеров тянут React Router с анимациями или jQuery-плагины. Но браузер уже умеет это нативно, причем без единой строчки скриптов. View Transitions API — это не игрушка, а рабочая техника для лендингов, документаций и каталогов, где важен UX даже на медленных каналах.

Как работает и базовая активация

View Transitions API делает снимки старого и нового DOM-состояния, затем анимирует наложение слоев. Включение — один CSS-блок:
@view-transition { navigation: auto; }

::view-transition-old(root) {
animation: 0.35s ease-in both fade-out;
}
::view-transition-new(root) {
animation: 0.3s ease-out both fade-in;
}

Браузер сам ловит момент перехода между страницами одного origin. Код минимальный, без библиотек и inline-скриптов.

Индивидуальная анимация для элементов

Типичная ошибка: перезапуск всего layout при навигации, из-за чего шапка «прыгает». Решение — задать view-transition-name: header на <header>. Браузер анимирует этот блок отдельно от остального контента. Заголовок остается на месте, а основной блок плавно заменяется.

Trade-off: не назначайте одно и то же имя разным элементам — сломанная селективность даст сбой анимации.

Production-ready: выборочные переходы и fallback

Firefox и Safari на десктопе (до 18.2) полностью игнорируют API. В продакшене обязателен fallback:
- Условия активации через @media (prefers-reduced-motion) или :has() для разных страниц. Например, на каталоге скролл-эффект, на карточке — только fade.
- Если браузер не поддерживает — страница должна загружаться мгновенно, без ошибок блокировки.

Пример для списка статей: article { view-transition-name: entry; }. При клике на заголовок — масштабирование карточки в новую страницу, а не моргание всей вьюпорта.

Практическая ловушка: cross-document с data-атрибутами

Cross-document переходы работают между разными HTML-файлами одного origin. Но если у вас ленивая загрузка изображений или динамический контент через AJAX — API может захватить неполный снимок. Всегда задавайте view-transition-class или style="view-transition-name" явно, не полагаясь на CSS-селекторы до мутации DOM.

Предупреждение: не используйте на страницах с интерактивными картами или iframe — их состояния не захватываются корректно.

Вывод: View Transitions API дает нативную, предсказуемую анимацию навигации для MPA, но требует явного задания имен, fallback для старых браузеров и отказа от декоративных эффектов на сложных виджетах.
❤1👍1
⁣CSS anchor-positioning: теперь тултипы и попапы без единой строчки JS-координат

Тултипы, дропдауны и контекстные меню в production-интерфейсах (кабинеты, дизайн-системы, e-commerce) часто страдают от ручных расчётов координат через getBoundingClientRect. Типичная ошибка: забыли обновить позицию при скролле или ресайзе, и на мобильном устройстве компонент улетает за край экрана. CSS anchor-positioning решает это системно.

Как это работает
Якорному элементу задаёшь CSS-свойство anchor-name: --anchor-id (или атрибут anchor). Прикреплённому элементу — position-anchor: --anchor-id и inset-area: top center для привязки по стороне. Координаты рассчитывает браузер, без JS.
.button {
anchor-name: --anchor-btn;
}
.tooltip {
position: absolute;
position-anchor: --anchor-btn;
inset-area: top center;
margin-top: 8px;
}

<button class="button">Наведи</button>
<div class="tooltip">Я тултип!</div>


Production-пример с попапом
В связке с popover можно открывать меню вообще без JS. Атрибут popovertarget на кнопке + popover на блоке. Браузер сам приклеивает попап к якорю и двигает его при переполнении окна. Это снижает визуальную регрессию и упрощает поддержку в компонентных библиотеках.

Типичная ошибка и trade-off
Не путай inset-area с anchor(). Первое — это готовое правило для одной из 12 сторон (top center, left middle и тд). Второе — функция для гибкой привязки к конкретной стороне якоря, если нужна нестандартная позиция. Ошибка: пишут inset-area, потом переопределяют его через транслейты в position-try-fallbacks. Лучше сразу использовать anchor() для сложных вариантов.
.tooltip {
position: absolute;
position-anchor: --anchor-btn;
bottom: anchor(top);
left: anchor(center);
transform: translateX(-50%);
}


Предупреждение о поддержке и fallback
Chrome 125+ и Edge 125+ работают стабильно. Firefox и Safari — за флагами. Всегда оборачивай новое поведение в @supports (anchor-name: --x). Если условие не сработало — оставляй старый JS-подход с useEffect или ResizeObserver. Не обещай pixel-perfect в старых браузерах.

Вывод: CSS anchor-positioning убирает ручные расчёты координат и делает позиционирование предсказуемым при скролле и ресайзе — это шаг к стабильным интерфейсам без координатного спагетти.
👍2👎1
В /code-review от Claude Code глубину анализа теперь можно выбирать самому

Под каждый уровень ревью зашили свою логику. Если воткнуть низкий — /code-review выцепит больше проблем, чем конкуренты, и при этом сожрет меньше токенов. А высокий уровень выдаст более жирный recall, если нужно реально прокопать код.

Раньше был один фикс-промпт на всё, тупо и без вариаций. Теперь под каждый уровень — своя стратегия. Система автоматом берет уровень, который висит на сессию, или можно ткнуть пальцем: /code-review high
.

На низком уровне — один проход по diff, достаточный, чтобы гонять перед каждым push. На среднем уже анализ с контекстом: несколько проходов поиска и проверка каждого бага. Высокий — там агенты поиска и проверки запускаются как сабагенты с чистым контекстом. x‑high проверяет, как изменение влияет на всё, что за пределами diff. И есть ultra: толпа агентов-ревьюеров независимо размножает каждую проблему. В Anthropic этот режим гоняют для каждого PR.

Подробнее

👉 Логово Верстальщика
⁣CSS :has(): Условная стилизация родителя и соседей без JavaScript-классов

Долгое время задача стилизовать родителя на основе его потомка или соседний элемент по состоянию соседа решалась только через JavaScript с ручным добавлением/удалением классов. Селектор :has() навсегда закрывает этот пробел, позволяя описывать такие паттерны декларативно, прямо в CSS, устраняя классы-костыли и снижая риск визуальных артефактов.

Как это работает и синтаксис

Селектор :has() применяет стили к элементу, если внутри его DOM-дерева есть другой элемент, удовлетворяющий заданному условию. Классический пример — подсветка списка при наличии выполненной задачи:
ul:has(li.done) {
border: 2px solid green;
}

Всё, никаких дополнительных классов на <ul> — браузер сам проверяет вложенность. Это радикально упрощает поддержку компонентов.

Conditional соседей и респонсив

:has() работает и с соседними селекторами, что открывает сценарии управления отступами или визуальной иерархией без JavaScript. Пример:

.card:has(+ .featured) {
margin-bottom: 24px;
}


Здесь margin-bottom у карточки добавляется только если сразу после неё идёт элемент с классом featured. Это идеально для списков в e-commerce или карточек в кабинетах, где порядок определяется бекендом, а визуальные отступы должны адаптироваться.

Типичная ошибка: перегрузка сложными селекторами

Самая частая проблема — использовать :has() для проверки глубоко вложенных условий внутри большой страницы, например:

body:has(.sidebar.open) .main {
margin-left: 300px;
}


Такой селектор заставляет браузер при каждом изменении проверять всех потомков <body>. На статичных страницах это почти незаметно, но на динамических интерфейсах с частыми ре-рендерами (лендинги с анимациями, панели управления) может дать задержку. Практический совет: ограничивай глубину проверки до 1-2 уровней и избегай зацикливания через :has() внутри :has() — это гарантированно сломает layout.

Production-ориентированный пример: формы и валидация

Один из самых полезных сценариев — подсветка всей формы при невалидном поле без JS:

form:has(input:invalid) {
border: 2px solid #e53e3e;
box-shadow: 0 0 0 1px rgba(229, 62, 62, 0.3);
}


Это даёт пользователю мгновенный визуальный фидбек: если в форме есть ошибка, весь её контейнер выделяется красной рамкой. Для accessibility важно не забыть aria-атрибуты на самой форме, но это уже вопрос семантики. Основное trade-off: :has(input:invalid) работает только в современных браузерах (Safari 15.4+), поэтому для поддержки старых версий нужна progressive enhancement.

Вывод: :has() — инженерный инструмент, который делает верстку более предсказуемой, убирая лишние JS-проверки, но требует строгого контроля над глубиной вложенности и браузерной поддержкой.
👍4❤1
This media is not supported in your browser
VIEW IN TELEGRAM
👉 Логово Верстальщика

Штука для Codex, которая выискивает потенциальные баги, потом гоняет их через тесты и тыкает носом в точную причину проблемы. 🍆

Ссылка: https://github.com/Kappaemme-git/codex-bug-reproducer
Please open Telegram to view this post
VIEW IN TELEGRAM
Pete Hunt снова в игре — теперь рулить Next.js

Guillermo Rauch рапортует: Vercel подтянул Пита Ханта и Ника Шрока (того самого, что придумал GraphQL). Пит, в прошлом участник команды React, теперь будет разбираться с Next.js. С этого момента Vercel вводит ежемесячный график патчей безопасности Next.js — первый уже на подходе, буквально через пару дней.

Cloudflare тем временем перелопатил свой блог на EmDash — «духовного наследника WordPress», построенного на Astro.
Детали: в выпуске.

Что ещё стряслось: React Native Skia 2.9, Preact 11.0 Beta 2, shadcn/typeset — типографическая система для HTML, и куча всего остального.

👉 Логово Верстальщика
Please open Telegram to view this post
VIEW IN TELEGRAM
This media is not supported in your browser
VIEW IN TELEGRAM
Ага, классика: вложил в игрушку ползарплаты, а теперь пытаешься найти оправдание этому транжирству. 👉 Логово Верстальщика
Please open Telegram to view this post
VIEW IN TELEGRAM
❤1😁1
Ну и ну, рои агентов сваяли SQLite на Rust с нуля за четыре часа 🤔

В Cursor решили устроить (дикий тест): ИИ-агентам сунули только 835 страниц официальной документации SQLite и команду — забацать движок базы данных. Никакого доступа в интернет или других подсказок, только доки и руки.

Спустя жалкие четыре часа эти штуки уже корректно выполняли 73–85% запросов из скрытого теста, а потом и до 100% догнали. Но тут вскрывается пиздец по цене: связка Opus 4.8 с Composer 2.5 отдала за эту таску $1 400, а Fable вывалила аж $20 000 — разница почти в 15 раз, Карл.

И, кстати, пока работали, агенты наткнулись на знакомые людские проблемы: дублировали друг друга, дрались за файлы и тупо боялись брать ответственность, когда надо было переписывать ядро системы. Жиза, понимаем 😂

👉 Логово Верстальщика
Please open Telegram to view this post
VIEW IN TELEGRAM
❤3
This media is not supported in your browser
VIEW IN TELEGRAM
Зумеры — те ещё хитрецы: работодатели считают их идеалом, а они просто мастерски изображают занятость 😍

Свежий опрос нарыл: целых 80% зумеров регулярно притворяются, что работают, а на деле — фиг там. У миллениалов такая же халтура у 68%, у поколения X — 58%.

В среднем на этот спектакль уходит почти пять часов в неделю — да это ж почти 7 полных рабочих недель в год! И вот забавно: чем жёстче контроль в конторе, тем чаще народ начинает мухлевать и изображать кипучую деятельность.

Так что теперь секрет ваших зумер-коллег раскрыт 😁

Источник: New York Post

👉 Логово Верстальщика
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
Всё, геймдев можно хоронить — первая настоящая игра, сделанная ИИ, уже в Steam 🫨

Какой-то чувак без опыта в разработке и кодинге собрал «Cook The Dungeon» за три недели. Движок — Godot, основная кузница — Cursor, а код ему клепали GPT-5.5, Opus 4.8 и Grok 4.5.

Графика тоже вся сгенерирована через ChatGPT. И знаешь что? Выходит не очередная нейросраная поделка, а вполне себе игра. Уже можно запилить в вишлист Steam (Cook The Dungeon) 😊

👉 Логово Верстальщика
Please open Telegram to view this post
VIEW IN TELEGRAM
Claude Code наконец-то прокачали для людей, кто реально пользуется скринридерами 🏁

Команда claude --ax-screen-reader убирает с глаз долой визуальный геморрой терминала и выдает обычный линейный текст. VoiceOver, NVDA и прочие софтины теперь его без проблем читают.

Еще в этом режиме подтягиваются помеченные строки (you:, claude:, tool:), меню с нумерацией (жмешь цифру — летит ответ) и звуковой сигнал, когда Клод ждет твоей реакции.

Если хочешь, чтобы такая дичь была включена всегда — просто закинь "axScreenReader": true в ~/.claude/settings.json или дерни переменную окружения CLAUDE_AX_SCREEN_READER=1.

Документация

👉 Логово Верстальщика
Please open Telegram to view this post
VIEW IN TELEGRAM
Текстовая MMO RPG на движке форума Invision 5 с PWA приложением и кубиками

Йо, народ. Текстовые браузерные MMO в духе старой «Тюряги онлайн» — штука доисторическая, но до сих пор живет, особенно у тех, кто тащится по олдскульным вселенным. В тусовке готоманов нашу поделку уже смело обозвали «Тюрягой онлайн 2.0», и тут не поспоришь: и там, и там на бэкенде злой выживач в зоне.

В Тюряге ты просто зэк на шконке, а вот Миненталь — это зона под магическим куполом, где каждый кусок падальщика на вес золота. Или игрок шарашит на охоту и вкалывает на фракцию, или быстро кони двинет в канаве от голода или первого же встречного каторжника. Когда мы на Бесте с нашими технарями решили замутить эту тактическую RPG «Путь Героя», пришлось думать, на чем крутить серверную часть.

В итоге решили не заморачиваться и взяли наш же древний форум аж с 2004 года, апнув его с убогой версии 3.4.6 до свеженького каркаса IPS 5. Из коробки там уже есть все, что надо: адекватная система прав, готовая база юзеров и более-менее рабочее API. Но чтобы слепить из обычного форума вменяемую игру, пришлось знатно покопаться под капотом и в базах. Первым делом понадобилось решить два главных геморроя: как запихнуть все это в легкое PWA-приложение и раз и навсегда отвадить хитрецов от мухлежа с кубиками.

Читать далее

👉 Логово Верстальщика
Please open Telegram to view this post
VIEW IN TELEGRAM
Этот инструмент сам наводит красоту в твоём GitHub README.

Он не высасывает из пальца фичи, которых нет. Сначала глядит, что там в проекте на самом деле, а потом уже переписывает описание под реальность.

Ссылка на репу: https://github.com/oil-oil/beautify-github-readme

👉 Логово Верстальщика
Please open Telegram to view this post
VIEW IN TELEGRAM
🥲 Зарплаты айтишников растут медленнее инфляции

Это показало новое исследование на 45+ тысяч зарплат специалистов. Изучаем главное, чтобы быть готовыми к рынку:
- Медианная зарплата в IT в первой половине 2026 года составила 191 000 ₽ — это всего на 4% больше, чем полгода назад. При этом прогнозируемая годовая инфляция — 4,5–5,5%.

- Самый щедрый по офферам город, разумеется, Москва. Там медиана по зп — 235 тысяч, в регионах же всего 160.

- Топ-5 самых высокооплачиваемых специальностей в IT: на первом месте — разработчики, дальше идут менеджеры, администраторы, специалисты по информационной безопасности и аналитики.

- Самые высокие зарплаты среди языков при этом у Objective-C — этим гигачадам предлагают 400 000 ₽. Следом идут Elixir (348к), Swift и Golang с 326 и 325 тысячами рублей.


✖️ xCode Journal
Please open Telegram to view this post
VIEW IN TELEGRAM
👎1😁1
This media is not supported in your browser
VIEW IN TELEGRAM
Anthropic докинули свежих плюшек в Claude Managed Agents 🏋️‍♂️

Чё там нового:

— для каждого агента теперь можно выставить свой effort level
— сессии стартуют с заранее проставленными событиями
— за раз можно накидать до 500 скиллов
— окружения и хранилища памяти теперь общаются через вебхуки
— стрим событий от субагентов летит в реальном времени

Потыкать всё это добро можно в их cookbook.

👉 Логово Верстальщика
Please open Telegram to view this post
VIEW IN TELEGRAM
Чё там интересного: ChatGPT Work втыкает платным юзерам полноценную виртуалку — 9 ядер и 20 гигов ОЗУ.

По сути, это почти VPS, только встроенный. Закидывай туда любые удалённые сервисы: хоть автоматизацию, хоть агентов разворачивай, хоть что угодно.

В эту песочницу даже OpenClaw забацать и потестить можно. 😜

👉 Логово Верстальщика
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
OpenAI явно поднажала так, что конкурентам стало душно.

Сегодня ребята из Anthropic неожиданно для себя сдувают ограничения сразу на пять часов и на неделю. Для них это вообще нетипичный ход.

Скорее всего, всему виной Codex — он растет как на дрожжах, после релиза 5.6 лимиты сбрасывали уже не раз (в том числе сегодня: приурочили к 9 млн активных юзеров Codex).

👉 Логово Верстальщика
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
This media is not supported in your browser
VIEW IN TELEGRAM
🛡 Anthropic запустили официальный плагин для поиска уязвимостей

Можно отправить Claude Security проверить изменения перед коммитом или просканировать всю репу.

Он найдет дыры и предложит, что можно и нужно исправить

✖️ xCode Journal
Please open Telegram to view this post
VIEW IN TELEGRAM
👎1
🤯 Автор «Чистого кода» больше не читает код, написанный ИИ-агентами

73-летний Дядя Боб признался, что теперь вообще не проверяет код. Вместо этого он обкладывает агентов юнит-тестами, QA, метриками качества и жёсткими ограничениями. И если вайбкод прошёл всю эту систему проверок, то и читать его необязательно.

«Это единственный способ, которым я могу воспользоваться их продуктивностью.»


✖️ xCode Journal
Please open Telegram to view this post
VIEW IN TELEGRAM
😎 Anthropic выпустила официальный гайд по работе с новенькой Claude Opus 5

Главный совет — перестаньте микроменеджить модель. Opus 5 лучше работает, если просто дать ей полное ТЗ и не просить лишний раз перепроверять себя.

Ещё один нюанс: если хотите короткие ответы, теперь это нужно писать явно, так как по умолчанию модель стала гораздо многословнее.

✖️ xCode Journal
Please open Telegram to view this post
VIEW IN TELEGRAM