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

Личный блог автора - @just_genych
По вопросам рекламы или разработки: @g_abashkin
Download Telegram
Когда CSS умел запускать JavaScript

В 758-м выпуске Frontend Focus от 16 сентября 2026 — материал Declan Chidlow «CSS Curiosities of the Past». Экскурсия по нестандартным CSS-курьёзам, которыми разработчики заставляли браузеры — и особенно Internet Explorer — вести себя как надо. В списке: «star hack», CSS-выражения (это JavaScript в вашем CSS), DirectX-фильтры IE и легендарный хак box model.

Теперь рубрика «IN BRIEF». Приехал Safari 27 — вместе с iOS, iPadOS и macOS 27. В комплекте: кастомизируемые элементы, sizes="auto" для изображений, псевдокласс :heading, alpha() и многоцветный color-mix(). Apple заодно выкатила детали о том, как подцепить AI-агента к Safari ради тестирования и отладки. Отметился и Chrome 153 — притащил одноосные контейнеры прокрутки, правда, пока только в нестабильных каналах, а Chrome 154 уже в бете. Совет директоров Automattic отправил CEO Мэтта Мулленвега в отпуск — и тот сразу заявил, что «снова контролирует ситуацию». Плюс редактор Geoff Graham объяснил, почему на CSS-Tricks в последнее время затишье.

Читать выпуск: frontendfoc.us/issues/758

👉 Логово Верстальщика
Please open Telegram to view this post
VIEW IN TELEGRAM
ФП-жаргон: теперь это не список, а карта
Каррирование, чистота, функторы, монады — если эти термины свистят мимо тебя, у Hemanth HM, делегата TC39, припасён популярный справочник по жаргону функционального программирования. И вот он дорос до исследовательской карты концепций: видно, чем одно цепляется за другое, а рядом с каждой — простое определение и пример на JavaScript.

В JavaScript Weekly #802 от 15 сентября 2026 года прицепом идут другие заметки: атакующие прощупывают открытые Vite dev-серверы, вынюхивая обход server.fs.deny (залатано в Vite 7.3.2 и 8.0.5), npm вешает на аккаунт 72-часовой «security hold» после удачного входа по recovery-коду, Safari 27 уже вышел, а TC39 через две недели сядёт в Токио. Плюс к этому: Tailwind Labs присоединяется к Shopify.

👉 Логово Верстальщика
Please open Telegram to view this post
VIEW IN TELEGRAM
CSS :user-invalid и :user-valid: отложенная валидация без JS и без мигания ошибок

Классическая боль любой формы: input:invalid срабатывает сразу при рендере. Пользователь ещё ничего не вводил, а поле уже красное. Дальше - три костыля на выбор: :not(:placeholder-shown), класс .touched из JS или novalidate + ручная валидация.

Селекторы уровня 4 закрывают это нативно.

Как это работает

:user-invalid матчится, только если элемент одновременно:

1. кандидат на constraint validation и сейчас невалиден,
2. был «изменён пользователем» (user interacted).

Второй пункт - ключевой. По HTML-спеке флаг выставляется, когда пользователь изменил значение или попытался отправить форму. То есть до первого реального действия с полем оно остаётся нейтральным, а после сабмита все проблемные поля подсвечиваются разом - именно тот UX, к которому мы руками приходили через JS.

:user-valid - зеркало: валидно и было взаимодействие. Полезно, чтобы не красить зелёным пустые нетронутые поля.

Код

/* Плохо: красное с первого кадра рендера */
input:invalid { border-color: #e5484d; }

/* Ок: ошибка - только после взаимодействия */
input:user-invalid { border-color: #e5484d; }
input:user-valid { border-color: #30a46c; }

/* сообщение без JS: заранее в разметке, показ через CSS */
.field .msg { visibility: hidden; }
.field:has(:user-invalid) .msg { visibility: visible; }
.field:has(:user-invalid) .msg::before { content: attr(data-msg); }


<div class="field">
<input type="email" required>
<span class="msg" data-msg="Похоже, в адресе опечатка"></span>
</div>


Работает с input, select, textarea, любым типом и любым ограничением: required, pattern, minlength, type="email". Реагирует и на «ввёл - стёр», и на попытку сабмита.

Подводные камни

* Поддержка - Baseline с конца 2023 (Chrome 119+, Firefox 88+, Safari 16.5+). Для более старых - тот же селектор в :where()-фолбэке или @supports selector(:user-invalid).
* Blur сам по себе флаг не ставит. Если нужно «валидировать по потере фокуса, даже если значение не менялось» - это по-прежнему JS. Но в 95% форм такое поведение и не нужно.
* required никуда не делся. :user-invalid меняет момент показа, а не правила валидации.
* A11y не бесплатно. Псевдоклассы не выставляют aria-invalid - скринридер про ошибку не узнает. Либо дублируйте состояние атрибутом, либо полагайтесь на нативную браузерную валидацию при сабмите.
* Не стилизуйте :invalid вообще в формах с ранним показом - иначе правила конфликтуют и «мигание» возвращается.

Итого

:user-invalid убирает целый слой JS-состояния: флаг «тронуто/не тронуто» больше не нужно тащить в классы и стейт-менеджер. Разметка описывает намерение, CSS - момент показа. Классический кейс, где платформа догнала практику.
1👍1
Игнорите эти HTML-элементы — и зря

Про семантическую вёрстку этот человек талдычит уже лет десять. Но в последнее время — молчок, ни строчки по теме. И вот решил наконец закрыть этот должок.

В нынешних веб-интерфейсах ему постоянно попадается один и тот же джентльменский набор: header, main, nav, footer. Бывает, что и button затешется — правда, пореже остальных, но всё-таки.

А сегодня он разберёт ещё парочку элементов, которые по какой-то причине почти никто не трогает. Хотя с ними вёрстка выйдет ещё семантичнее — а значит, и интерфейсы станут ещё лучше. Читать далее

👉 Логово Верстальщика
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Кроссбраузерные баги: какого чёрта они всё ещё живы

Запустил фичу — и привет. Бэкендер со своим Firefox заявляет, что у него «ничего не работает». Или юзер с Safari ноет, что ему неудобно. Да и ладно: лезу в поиск, выкапываю причину, затыкаю баг — и дальше пилю в Chrome, как будто так и надо.

В статье разбираемся, с чего это в 2026-м проблемы кроссбраузерности никуда не делись, и пытаемся въехать, как ловить эти ошибки ещё до того, как они вылезут.

Читать далее

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

JobSync сам мониторит вакансии компаний на разных площадках, ИИ сравнивает их с вашим резюме и вытаскивает наиболее подходящие. Внутри ещё есть трекер откликов, разбор резюме, генерация сопроводительных и статистика поиска работы — короче, полный фарш.

Всё бесплатно, опенсорс.

✖️ xCode Journal
Please open Telegram to view this post
VIEW IN TELEGRAM
content-visibility: auto: рендер-виртуализация без JS

Браузер по умолчанию считает layout и paint для всей страницы, даже если 80% контента за фолдом. content-visibility: auto говорит: пока элемент не «релевантен пользователю», пропускай style/layout/paint его поддерева. DOM, a11y-дерево и поиск по странице при этом работают - в отличие от content-visibility: hidden.

Но есть цена: у пропущенного элемента нет внутреннего размера, и его block-size схлопывается. Скроллбар прыгает, scrollHeight врёт, anchor-ссылки и scroll-restore уезжают.

Лечится contain-intrinsic-size - placeholder-размер, который подставляется вместо настоящего, пока секция не отрендерена:

.feed > article {
content-visibility: auto;
/* 420px - оценка; после первого рендера запомнится реальная высота */
contain-intrinsic-size: auto 420px;
}


Ключевое слово здесь - auto. Без него placeholder всегда будет тем, что вы написали. С ним браузер запоминает последний отрендеренный размер и дальше использует его как placeholder - при повторном выезде элемента скролл уже не дёргается. Поэтому оценку берите близкой к реальности: от неё зависит длина скроллбара и позиция скролла до первого рендера.

Нужны две оси - используйте две величины (width height) или логические contain-intrinsic-block-size / contain-intrinsic-inline-size.

Где ломается

1. content-visibility: auto неявно включает contain: layout style paint. Элемент становится containing block для absolute/fixed потомков, а overflow обрезается. position: fixed внутри секции перестаёт цепляться к вьюпорту, sticky ведёт себя иначе, выносы отрицательными margin обрезаются.
👍1
🤣 Типичный ИИ

💥 xCode Journal
Please open Telegram to view this post
VIEW IN TELEGRAM
😁1
This media is not supported in your browser
VIEW IN TELEGRAM
«ИИ-агенты закроют до половины текущих операционных процессов» — такую цель обозначил Станислав Макеев, директор по технологиям и AI-трансформации Яндекс Лавки, на недавнем deep tech night.

По его словам, Лавка уже перекраивает процессы под то, чтобы решения в бизнесе принимал ИИ.

Скажем, в коммерции агент будет разбирать спрос, возиться с ассортиментом, искать поставщиков и готовить предложения. А человеку оставят самое ответственное — сложные переговоры. Правда, это пока хотелки: на текущий момент агент просто клепает управленцу короткие бизнес-справки с рекомендациями по действиям.

Хотя кое-что уже автоматизировали. Поиск потерявшихся посылок раньше вручную разгребал десяток человек на фуллтайме. Теперь этим занимается агент. Будущее, блин, уже тут 😨

👉 Логово Верстальщика
Please open Telegram to view this post
VIEW IN TELEGRAM
Claude Code наконец-то завёз поддержку AGENTS.md

Никаких допнастроек: теперь Claude Code по умолчанию первым делом читает AGENTS.md, а если файла нет — подхватывает CLAUDE.md.

Доступно с версии 2.1.277. 💬
2
This media is not supported in your browser
VIEW IN TELEGRAM
Зачем держать localhost взаперти, если Cloudflare раздаёт туннель бесплатно? Всё, что крутится у тебя на машине, выставляется наружу для кого угодно. Хватит одной команды:

cloudflared tunnel --url http://localhost:8000


Дальше крути с этим что хочешь: локальные проекты, тестирование вебхуков, демонстрация клиентам, как там у тебя всё работает, быстрые превью и доступ ИИ-агентов к локальным приложениям

try.cloudflare.com

👉 Логово Верстальщика
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥1
Байка о npm‑либе morphing‑scroll

Автор трещит про свою npm‑библиотеку. На момент статьи это его второй npm‑проект — и самый сложный. В кишки кода он не полезет: в тексте — как оно создавалось и с какой мотивацией.

Читать далее

👉 Логово Верстальщика
Please open Telegram to view this post
VIEW IN TELEGRAM
Media is too big
VIEW IN TELEGRAM
AgentCloak выкатил бесплатное браузерное расширение: личные данные больше не улетают в промпты к ИИ

Как говорит разработчик, прямо в браузере крутится небольшая ИИ-модель — локально. Она выцепляет имена, номера счетов и прочую личную требуху и подменяет её ненастоящими значениями ещё до того, как запрос куда-то уйдёт.

Ответ пришёл — расширение откатывает всё назад и подсовывает оригинальные данные. Из поддерживаемого: ChatGPT, Claude, Gemini, Grok, DeepSeek и другие модели. Регистрироваться не нужно. incountry.com

👉 Логово Верстальщика
Please open Telegram to view this post
VIEW IN TELEGRAM
Китайцы за пару дней выкатили аж ДВЕ нормальные модели — судя по всему, в ИИ-гонке они замедляться не намерены и вкалывают вообще без выходных.

Qwen3.8-LiveTranslateштука для синхронного перевода в реальном времени. Держит 60 языков, различает, кто из говорящих сейчас вещает, и в переводе сохраняет их настоящие голоса. Средняя задержка просела с 2,8 до 2,3 секунды.

Qwen-Image-2.1 — свежая облегчённая модель для генерации картинок, и она обставляет Nano Banana 2.0. Рисует нативно в 2K, умеет прозрачный фон, переваривает сразу 10 референсов и точечно правит те области, которые отметили. На HF уже выложили. Ждём на неделе мощную ответочку

👉 Логово Верстальщика
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
tinyjs: десктопные приложения на JavaScript меньше 10 МБ

В JavaScript Weekly #803 от 22 сентября 2026 года — про tinyjs. Автор собрал на нём приложение и остался впечатлён: бэкенд на txiki.js с полным доступом к системе (FFI в том числе), нативный рендеринг в webview, компактные сборки под macOS, Linux и Windows. Плюс подпись и нотаризация финального приложения — тоже проще.

Вариантов в этой нише — вагон. Electrobun: возможностей побольше, несколько окон и GPU, но рантайм TypeScript крупнее — хотя для крошечного нативного main-процесса там можно взять Zig, Rust, Go или Odin. Perry — AOT-компилятор TypeScript в нативный код; его основная модель UI рендерит виджеты AppKit, Win32 и GTK4, чтобы ощущалось привычнее по-нативному. Electron и экспериментальный Deno Desktop — мощные, но исполняемые файлы у них обычно в разы тяжелее. У Neutralinojs приложения бывают даже меньше, чем у tinyjs, — только привилегированный бэкенд на JavaScript там теряется по дизайну.

Полный выпуск: #803 — JavaScript Weekly

👉 Логово Верстальщика
Please open Telegram to view this post
VIEW IN TELEGRAM
React 19.3 — уже в npm. View Transitions и Fragment Refs год назад закинули как экспериментальные API с прицелом на React. Теперь обе штуки дослужились до стабильного статуса в React 19.3.

В статье разбирают, как они работают, и заодно прочие заметные изменения этого релиза.

Читать далее

👉 Логово Верстальщика
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM