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

Личный блог автора - @just_genych
По вопросам рекламы или разработки: @g_abashkin
Download Telegram
Тайм-менеджмент сдох, или как чужие проблемы воруют твое время

Все эти техники управления временем летят в помойку, когда в игру вступает срочность — она жрет важность без соли. Кто главный поставщик этой самой срочности? Люди, блин. Коллеги с горящими дедлайнами, клиенты с паническими письмами, родственники с внезапными просьбами — на их совести процентов 90 всех «пожаров». И они отлично умеют давить на твои социальные роли и чувство вины.

Можно, конечно, забиться в угол и орать «нет» каждому, но это вариант так себе. Гораздо умнее сдвинуть фокус с таймеров и помидорок на реальное искусство — жесткие разговоры. Да, те самые, неудобные.

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

👉 Логово Верстальщика
Please open Telegram to view this post
VIEW IN TELEGRAM
OpenAI решила раздать $100 кредитов Codex тем, кто расскажет, чё им зашло в GPT-5.6 Sol или как он выбесил до перехода.

Правила игры: шлёпаешь пост в X, забираешь плюшки, получаешь больше доступного юзанья. Первые 10 000 человек отхватят бесплатные токены.

Инфа по ссылке: https://switch-to-codex.openai.chatgpt.site/

👉 Логово Верстальщика
Please open Telegram to view this post
VIEW IN TELEGRAM
⁣CSS initial-letter: буквицы без float и подгонок

Типографика в вебе всё ещё страдает, когда дело доходит до буквиц. В production — будь то лонгриды, премиальные лендинги или медиа-сайты — верстальщики часто мучаются с float, магическими font-size и line-height, чтобы буква не вылезла за границы. Решение есть в спецификации CSS Inline Layout Level 3: свойство initial-letter.

Как это работает
Свойство задаёт, на сколько строк должна растянуться первая буква. Браузер автоматически вычисляет размер шрифта и позицию, без float и подгонок. Пример:
p::first-letter {
initial-letter: 3;
}

Если нужно смещение вниз, добавляется второй параметр:
p::first-letter {
initial-letter: 3 1;
}

Первая цифра — высота в строках, вторая (опционально) — смещение. Буква не вылезает за границы абзаца.

Практический совет
Используйте initial-letter в лонгридах, книжной вёрстке или премиальных лендингах. Оно идеально сочетается с font-family и color, а если браузер не поддерживает (Safari — да, Firefox и Chrome — пока нет), работает graceful degradation: остаётся обычная первая буква. Это избавляет от сложных кастомных решений в дизайн-системах.

Типичная ошибка
Пытаться эмулировать буквицу через float и line-height с магическими числами. Это ломается при изменении шрифта, размера или межстрочного интервала, а доступность страдает, так как трудно предсказать переполнение. initial-letter решает проблему предсказуемости layout и визуальной стабильности без костылей.

Вывод: initial-letter — это инженерно чистый инструмент для типографики, который упрощает поддержку и избавляет от визуальной регрессии в адаптивных интерфейсах.
👍2👎1
Ну нифига себе: Grok Build выкатили в опенсорс! 😨 SpaceXAI выложила код своего ИИ-агента для разработки прямо на всеобщее обозрение — причем с полной документацией.

Почти весь код на Rust, лицензия — Apache 2.0. GitHub вон он.

Выходит, компания Маска теперь душит открытостью сильнее, чем OpenAI? Ждем, когда эти подтянут ответ.

👉 Логово Верстальщика
Please open Telegram to view this post
VIEW IN TELEGRAM
⚡2
⁣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