14544
Блог Lead JS-разработчика из Хельсинки Автор: @bekharsky По рекламе: https://telega.in/channels/htmlshit/card?r=GLOiHluU или https://t.me/it_adv Чат: https://t.me/htmlshitchat
#статья дня
В Chrome 139 появилась возможность писать собственные функции прямо в CSS. Теперь можно не дублировать calc() и clamp(), а объявлять их один раз и вызывать как в JS.
Уна Кравец показала 5 примеров:
— --negate() — переворачивает знак числа;
— --opacity() — задаёт прозрачность цвета;
— --fluid-type() — делает адаптивную типографику;
— --conditional-radius() — убирает скругления у края экрана;
— --layout-sidebar() — строит сетку с сайдбаром без медиазапросов.
Дальше — больше: в будущем появятся @mixin и @apply, и CSS наконец-то получит свои настоящие функции. Ну хоть в Хроме теперь будет счастье.
una.im/5-css-functions
#css #function
Коллеги, привет! 👋
На связи команда международной IT-компании Garage Eight. Мы создаём финтех-продукты для сотен тысяч пользователей. И уверены, что крутых результатов можно достигать только в поддерживающей атмосфере. Поэтому мы создали среду, где можно экспериментировать, ошибаться и реально влиять на продукт и процессы.
Живём мы не только работой — ещё хакатонами, митапами, встречами комьюнити и ежемесячными тусовками. И у нас есть новая таска на Q3 — рейтинг работодателей HeadHunter
Мы понимаем, что голосовать за «чужую» команду может быть странно. Но на самом деле ваша поддержка поможет показать, что компании с открытой культурой и уважением к людям должны быть стандартом.
#такое дня
React Native-разработчики: радуются, что благодаря нативным виджетам их приложения выглядят прекрасно как в iOS18, так и в iOS26
Flutter-разработчики: ищут способ внедрить нативные элементы без изменения архитектуры фреймворка и находят их.
Разработчики Telegram на QML: да срали мы на пользователей всех ОС вообще, как получилось так получилось.
#liquidglass #fail
#статья дня
Для субботней статьи дня я решил выбрать чтение полегче:
Что происходит, когда вы посещаете сайт?
А и правда, что? Как давно вы об этом задумывались? А вот на собеседованиях до сих пор спрашивают.
Возможно, кто-то опять заверещит, что знать это — подобно знанию ассемблера. А я отвечу: «А почему бы и нет?».
1. Парсинг URL
2. DNS-резолвинг
3. Установка TCP-соединения
4. TLS-рукопожатие (HTTPS)
5. Отправка HTTP-запроса
6. Обработка запроса на сервере
7. Получение HTTP-ответа (TTFB)
8. Парсинг HTML и построение DOM
9. Загрузка внешних ресурсов
10. Построение CSSOM и render tree
11. Выполнение JavaScript
12. Рендеринг и композитинг (painting)
13. Активация интерактивности
14. Кэширование и CDN
15. Фоновые оптимизации
Ладно, я пошутил. Вот вам крестики-нолики на чистом CSS и без HTML кроме body: https://lyra.horse/fun/tic-tac-nohtml/
#web #interview
Сейчас фреймворки закрывают большинство задач в современных интерфейсах. Но до сих пор есть проекты, на которых придется обойтись без готовых решений. Фронтенд-разработчик Илья Пономарев рассказывает, как собираются интерфейсы в условиях ограниченного инструментария. Илья более 10 лет работает с крупными клиентами из ритейла, фармы и финансового сектора.
Больше полезных материалов для разработчиков, менеджеров и веб-дизайнеров, а также вакансии в проектные команды крупных брендов — в канале Далее.
#видео дня
Буквально час назад вышла документалка о Vite. Собственно, вот: https://youtu.be/bmWQqAKLgT4
Прекрасная история о единении.
Илья, твой выход!
#video #vite
#инструмент дняgit-absorb — инструмент, который автоматизирует работу с fixup!-коммитами.
Да-да, я тоже про fixup вот только что услышал, когда мне лид про absorb рассказывал.
Когда вы исправляете старый коммит (например, после ревью), многие делают так:git commit --fixup <хэш_коммита>
git rebase -i --autosquash
Git потом «вплетает» эти fixup!-коммиты прямо в нужные места истории.
Красиво, но муторно, особенно если правок много.git-absorb делает всё это сам.
Он смотрит, какие строки вы изменили, определяет, к какому коммиту они относятся, и автоматически создаёт нужные fixup!-коммиты:git add .
git absorb
Дальше — одно git rebase -i --autosquash, и у вас идеальная чистая история, будто вы никогда не ошибались. Идея пришла из Mercurial (hg absorb).
Для тех, кто любит порядок в истории, но не хочет заниматься им вручную.
👉 github.com/tummychow/git-absorb
Я всё равно буду делать атомарные коммиты, впрочем. Я человек простой.
#git #fixup
#такое дня
Некоторые люди серьёзно предъявляют джаваскрипту за подобное.
Другие им говорят: «Ты бы у меня собес не прошёл!»
Чо, котаны, надо такое понимать, или ну нахер? :)
Хотите провести харденинг инфраструктуры? 😎
Эксперты по кибербезопасности расскажут, как выбрать стратегию и ее придерживаться, достигать киберустойчивости и вовремя находить бреши в защите на четырехнедельном онлайн-практикуме «Харденинг ИТ-инфраструктуры».
Старт уже 20 октября. Под руководством опытных менторов — экспертов с многолетним опытом прокачки защищенности инфраструктур — вы научитесь:
🔴 самостоятельно задать системе непротиворечивые настройки зонирования сети, политик ОС, параметров виртуализации и пр.;
🔴 сделать инфраструктуру более устойчивой, опираясь на стратегию результативной кибербезопасности и требования регуляторов;
🔴 проходить аудит без блоков;
🔴 внедрить системный подход к харденингу и не зависеть от внешних консультантов.
❗️ Важно: до создания собственных решений вы сможете разобрать типичные ошибки на реальных кейсах, а свои гипотезы протестировать в песочницах до внедрения в прод.
Присоединяйтесь, больше информации о практикуме — на портале Positive Education.
#фишка дня
Пишешь чат или выводишь данные лога в консоль и хочешь чтобы каждое новое сообщение снизу было видимым?
Ни слова больше! Спека has us covered: https://drafts.csswg.org/css-scroll-snap/#example-d0a2d86f
Удивительное дело, конечно, видеть примеры прямо в черновике спецификации :)
Вот, кстати, пример от Брамуса Ван Дамма: https://codepen.io/bramus/pen/PorRORd
Обратите внимание, за нас подумали, что пользователь может поскроллить наверх.
На старых версиях Chrome иногда проявляется баг с пружинящим скроллом — Chrome теряет событие и «снапит» нас назад, но недавно и это пофиксили.
Ну если вы за старое доброе решение на JavaScript, вот, держите хук от Vercel.
#scroll #snap #css #бородач
#такое дня
Я просто зае**лся, честно скажу. Само написание кода — самое простое, что мы делаем. Всё остальное — это, бл**ь, полный трэш. Эти бесконечные билды, созвоны, тикеты. Постоянно собирать и разбирать этот еб**ый фронт каждую, бл**ь, неделю. Я просто уже, бл**ь, не могу. Я зае**лся. Мой организм уже меня шлёт нах**: у меня третий раз за полтора месяца деплой падает, бл**ь, и состояние непонятно какое. В плане тестов хуже фронтенда работы в мире нет. Просто, бл**ь, полная х**ня.
#codepen дня
Мы когда-то давно смотрели на интересный пример использования clip-path и маскинга в CSS для создания кружочка статуса пользователя в сети: /channel/htmlshit/2741
И вот Саймон Гелнер довёл этот пример до идеала! Размер, положение — всё настраивается через CSS-переменные и выглядит шикарно. Вот, можно поиграться: https://codepen.io/simeydotme/pen/ogNWvMN
Кстати, что даже более интересно, там используется прикольный API аватарок! https://www.dicebear.com/
Максимально неожиданная штука, конечно, с весьма интересными решениями по настройке внешнего вида аватарки и даже с предопределёнными генераторами (seed) на тысячи и миллионы вариантов.
Потрясающая находка, я считаю.
#css #svg #api #avatar
Что насчёт поучиться у лучших? 😉😉
Мы решили, что это отличная идея, поэтому запускаем розыгрыш. Приз — встреча с лидерами IT&Digital экспертиз Альфа-Банка!
Что вам нужно будет сделать:
🔢 Нажать на кнопку под постом
🔢 Выбрать свою экспертизу
🔢 Написать короткое мотивационное сообщение, почему именно вам нужна менторская сессия
Будет 7 победителей — по одному на каждую из доступных экспертиз:
— Кибербезопасность
— AI-продакты
— Фронтенд-разработка
— QA
— Системный анализ
— Prompt-инжиниринг
— HR tech
#статья дня
Я уже откровенно боюсь иной раз выкладывать статьи с какой-то теорией или генераторами, потому что обязательно в комментариях будет «есть же ИИ». Таким темпом проще рассказывать о продакт-инициативах (я вот про Story Map недавно узнал, надо?). Но вдруг продактов тоже заменит ИИ? Я бы с удовольствием.
Ладно, к чему это я. Конечно же к очередной статье про Big O aka сложность алгоритмов!
Да, сеньоров вряд ли спросят, разве что бровью поведут, а вот собесы на джунов и мидлов всё ещё очень часто в себе содержат требования или оценить сложность алгоритма, или написать «без квадратов».
Итак, что же тут у нас? А тут у нас и сама статья:
https://samwho.dev/big-o/
И её перевод: https://habr.com/ru/companies/timeweb/articles/942956/
Но честное слово, лучше идите смотреть статью. Там наш с вами любимый интерактив!
#bigo #algorithm #cs
#ссылка дня
Вы ждали этого. Вы хотели этого. Вы жаждали этого!
Вы рисовали мемы, вы унижали бакендеров, вы унижались сами. Но теперь все проблемы решены!
Итак, 100 способов отцентировать div: https://css-generators.com/center/
Красненькое не надо использовать.
#css #div #center
#ссылка дня
Coinbase Design System (CDS) — это библиотека интерфейсных компонентов от Coinbase для React и React Native, которая задаёт единый визуальный язык во всех их продуктах.
Основная цель — консистентность и кроссплатформенность: те же компоненты работают и в вебе, и в мобильных приложениях, без боли с адаптацией.
В арсенале поддержка тёмной и светлой темы, кастомизация через темы и атомарные стили для скорости.
Анимации у них забавные. И, ожидаемо, различные рекламные блоки аж хорошо вышли.
Крипта упадёт, а дизайн-система останется: cds.coinbase.com
#design #system
#заметка дня
Итак, в разработке пульта на Flutter случилось — конечно же — неожиданное.
И неожиданное это тот факт, что новые телевизоры Samsung не поддерживают получение списка приложений и их иконок. Выдают 401. Выходит, API-то есть, а вот разрешения на использование — нет. И его не получить, потому что Samsung сдвигает свою инфраструктуру в сторону полурабочего SmartThings-облака.
Ну как, новые. Года с 2020. Просто меня интересовал конкретно мой, а он 2019 и документации в принципе исчезающе мало. Tizen и Tizen.
Что же делать?
Да ничего особого не делать. Нужно где-то найти список приложений и их иконки, ведь запуск всё так же остался возможен: по id приложения.
Очевидно, в голову приходит мысль, что для Smart TV должно быть некое подобие аппстора. И действительно: https://www.samsung.com/us/tvs/smart-tv/samsung-tv-apps/
Надеюсь, оно хотя бы SPA? Да! Список приложений получается через эндпоинт /list с вполне однозначным набором параметров: https://vdapi.samsung.com/tvs/tvpersonalize/api/tvapps/appserver/list?country_code=US&language_code=en&offset=0&size=24&order=asc&category=all
Выглядит шикарно! В ответ получаем JSON с полным числом приложений — total — и массивом из 24 позиций. Так, а остальное как?
И тут моя беспокойная голова зачем-то решила проверить, а что там по остальным странам, и я начал перебирать коды стран в адресе самого магазина.
Финский вообще не заработал, французского нет, а в российском не работала постраничная навигация.
Ладно, не первый же раз работаем. Смотрим на список параметров запроса, видим offset и size. Это у нас типичный случай оконной пагинации (помимо курсорной и постраничной). В таких случаях просто передаем что-то вида загрузить 48 приложений начиная с 96. И… не работает. Какой вывод я сделал? Правильно: API сломано.
Посмотреть, работает ли навигация в американском аппсторе, я не догадался. Поэтому решил абьюзить на полную и просто передал 3336 в size с offset 0. Число 3336 не случайно — API сам отдает его с пустой категорией. И, внезапно, я получил ответ, содержащий все приложения. Ждать пришлось весьма долго, я ожидал, что для таких вещей нужен токен. Но нет.
Вывод 1: защищайте свои API.
Ну и мне стоило все же посмотреть на работу американского аппстора. Потому что, как оказалось, offset у них — это страница! То есть, для получения приложений с 11 по 20 надо было передавать не offset=10&size=10, а offset=1&size=10. Сбивает с толку, спасибо, что хотя бы не курсор.
Вывод 2: играешь в CTF — хотя бы немного думай.
Впрочем, своей цели я добился. Списки приложений есть, иконки — там же. Осталось подготовить наборы самых популярных приложений разных стран — и вперёд.
…а ведь Samsung мог просто не закрывать API на телевизоре.
#api #ctf
#дайджест недели
1️⃣ Понедельник
CSS Scroll Snap теперь умеет делать автопрокрутку чата вниз без костылей на JS.
Есть пример прямо в спецификации и демо от Брамуса. Старый баг с Chrome уже пофиксили.
/channel/htmlshit/3823
2️⃣ Вторник
Линус Торвальдс ругает rustfmt за «эвристику», которая ломает историю коммитов.
/channel/htmlshit/3824
Как уменьшить вариативный шрифт с 785 до 58 КБ.
/channel/htmlshit/3826
3️⃣ Среда
› 'wtf' instanceof String — false
› typeof 'wtf' — 'string'
/channel/htmlshit/3827
5️⃣ Четверг
git-absorb автоматизирует fixup-коммиты.
Сам находит, что вы правили, и создаёт нужные fixup! перед rebase.
/channel/htmlshit/3829
Вышла документалка о Vite. Любовные сцены сняты прекрасно:
/channel/htmlshit/3831
5️⃣ Пятница
Evil Martians показали, как сделать офлайн-поиск в Astro без бэкенда.
JSON-индекс на сборке, MiniSearch в браузере — и всё работает мгновенно.
/channel/htmlshit/3832
— Это код, он не может сделать больно!
Код:
/channel/htmlshit/3838
6️⃣ Суббота
Что происходит, когда вы посещаете сайт — пошагово от DNS до рендеринга.
И бонусом — крестики-нолики на чистом CSS и без HTML.
/channel/htmlshit/3839
#js #css #git
#фишка дня
— Это код, он не может сделать больно!
Код:
const a = [1, 4, -2, 5, -6];Читать полностью…
let i;
for (i = 0; i < a.length && a[i] > 0; i++);
// i: 2
#статья дня
Давно я не вспоминал Злых Марсиан! А они не прекращали писать в блог. На сей раз — как организовать поиск в Astro.
Сразу ссылка: https://evilmartians.com/chronicles/how-to-add-fast-client-side-search-to-astro-static-sites
Astro хорош тем, что рендерит всё статично — сайт мгновенно загружается, не требует бэкенда и остаётся простым даже при куче контента.
Впрочем, как и многие другие генераторы.
Но у такого подхода есть боль — нет встроенного поиска.
Evil Martians показали, как добавить быстрый клиентский поиск без внешних API и серверов:
— на этапе сборки Astro создаёт JSON-индекс страниц;
— на клиенте подключается MiniSearch, который ищет прямо в памяти;
— подсветка совпадений, клавиатурная навигация и хоткей Ctrl+K прилагаются.
Результат — поиск, который:
+ мгновенный,
+ не требует серверной логики,
+ работает офлайн и полностью в браузере.
Берём, котаны?
P. S. Вам так Vite не нравится, документалки или Илья? :)
#astro #search #fuzzy
Фронтенд, покодим на Yandex Cup?
Открыта регистрация на Yandex Cup — чемпионат Яндекса для разработчиков с призовым фондом 12 млн рублей и финалом в Стамбуле!
Участники смогут соревноваться за призы и выход в финал, а ещё — пройти собеседование в Яндекс по упрощённой схеме.
В направлении Фронтенд 5 призовых мест:
1 место — 500 000 ₽
2 место — 400 000 ₽
3 место — 300 000 ₽
4 место — 200 000 ₽
5 место — 100 000 ₽
Этапы Yandex Cup: 20–29 октября пройдёт пробный тур для знакомства с платформой и задачами. 2 ноября состоится квалификация, где будут определены 180 финалистов. Финал и церемония награждения пройдут офлайн 5–7 декабря в Стамбуле.
Регистрируйтесь до 29 октября.
Заходите на юбилей 🥳
29 октября наше A?.Frontend Community празднует свой третий день рождения и организует грандиозный митап. Вас ждут доклады о микрофронтендах, OpenAI и вайб-кодинге в разработке, а ещё диджей-сет, квиз, демо-зоны и, конечно, праздничный торт.
Подробнее, что в программе:
➡️ «Миграция фронтенд-кода: лёгкая поддержка проектов» — Иван Усынин, технический лидер разработки, Альфа-Банк.
➡️ «JavaScript на большом экране: как укротить WebOS и не сломать пульт от ТВ» — Антон Халин, старший разработчик, VK.
➡️ «Dreamcoding или как вернуть искру разработки, на примере трёх проектов» — Зар Захаров, Rutube.
➡️ «Эволюция OpenAI API — как это влияет на взаимодействие с AI в продуктах, которые мы разрабатываем» — Андрей Мелихов, ведущий разработчик интерфейсов, Yandex Cloud.
➡️ 3… 2… 1… Quiz от A?.Frontend Community с розыгрышем юбилейных призов.
➡️ Networking party c диджеем, активностями и демо по докладам.
Регистрируйтесь по ссылке. Встречаемся 29.10 в 19:00 в Санкт-Петербурге или онлайн.
#анонс
➿➿➿➿➿➿
@alfadigital_jobs — канал о работе в IT и Digital в Альфа-Банке
#статья дня
Что делать, если использовать вариативный шрифт очень хочется, но он тяжёлый как мамка читера?
Например, вариативный Roboto весит 785 Кбайт. Да я в 785 Кбайт умещу код стартапа на миллион. Нужна же лишь часть начертаний и глифов, не все!
Стефан Юдис смог уменьшить этот размер до 58 Кбайт используя два инструмента:
Glyphhanger: https://www.stefanjudis.com/notes/glyphhanger-a-tool-subset-and-optimize-fonts/
И Slice: https://www.stefanjudis.com/notes/slice-an-app-to-remove-variable-font-axes/
Первый помогает оставить лишь нужные символы (глифы), а второй — убрать/ограничить оси вариативности.
Прекрасные инструменты, целый новый мир открывают.
#fonts #tools #бородач
#такое дня
Для чего нужны линтеры и форматтеры? Нет, не для того, чтобы код выглядел красиво, это субъективное. Так для чего же?
Правильно, чтобы он выглядел единообразно. А ещё чтобы раз и навсегда исключить бесконечные споры о запятых, количестве строк и их длине.
Но есть у автоформаттеров и менее очевидная задача — сделать код поддерживаемым Чтобы по диффу сразу было видно, какие строки реально изменились, без гадания на символах.
Из-за этого мы с товарищем когда-то много спорили: когда определение объекта должно «разъезжаться» по строкам, а когда — нет.
В Dart, кстати, решено элегантно:
— есть запятая в конце — будет перенос,
— нет запятой — всё остаётся в одной строке. Сравните:
SizedBox(
height: buttonSize / 3,
),
SizedBox(height: buttonSize / 3),
rustfmtcheck меняет читабельное:
use crate::{
xyz,
abc,
};
use crate::{xyz, abc};
#дайджест недели
1️⃣Понедельник
100 способов отцентрировать элемент
/channel/htmlshit/3806
Оказывается, в content-е псевдоэлементов можно использовать переменные. Это позволяет делать, например, анимированные бейджики или уведомления.
/channel/htmlshit/3808
2️⃣ Вторник
Классная статья по Big O — визуально и интерактивно объясняет сложность алгоритмов. Есть перевод, но лучше идти сразу к оригиналу — там интерактив
/channel/htmlshit/3809
Команда Motion перешла с TypeScript на .NET / C#. CI-проверки в TS занимали 20+ минут, а компилятор часто падал
/channel/htmlshit/3811
3️⃣ Среда
У FFmpeg есть логотип — и он основан на алгоритме DCT, лежащем в основе JPEG
/channel/htmlshit/3813
Simon Gellner сделал идеальный пример кружка статуса через clip-path и маску. Всё настраивается CSS-переменными, а ещё там используется любопытный API DiceBear для генерации аватарок
/channel/htmlshit/3815
5️⃣ Четверг
Если парсинг JSON стал постоянным источником боли — попробуй jsonrepair. Он чинит незакрытые кавычки, лишние запятые и другую питонячесть вроде True
/channel/htmlshit/3817
5️⃣ Пятница
Фронтенд-разработка выматывает сильнее, чем кажется
/channel/htmlshit/3818
#css #js #tools #animation #bigo #typescript #dotnet #json #frontend
#инструмент дня
Как узнать, верный ли JSON тебе передали, или нет?
Ну, общепринято как-то так:
function tryParseJSONObject (jsonString){
try {
const o = JSON.parse(jsonString);
if (o && typeof o === "object") {
return o;
}
}
catch (e) { }
return false;
};
1234 и false к ошибке не приведут. Да и передача null просто вернёт null, который ещё и объект... ну вы поняли.
#заметка дня
Извините, на это утро у меня для вас только два наблюдения.
1. У FFmpeg есть логотип (что? да!)
2. И этот логотип не что иное как визуализация обхода изображения в алгоритме дикретного косинусного преобразования (DCT) формата JPEG.
Я ещё вернусь.
#статья дня
Motion почти 5 лет держали монорепозиторий на TypeScript (~2.5 млн строк). Но со временем разработка стала всё медленнее.
CI прогонял проверки больше 20 минут. Компилятор часто падал.
Это все решилось бы ts-go, но они устали ждать.
Приходилось поддерживать Zod, иначе проверка данных разваливалась. Prisma и Drizzle создавали трудности при рефакторинге. Совместный код между вебом и мобилой ломался при малейших изменениях.
В итоге команда решила перейти на .NET и C#.
Ссылка на статью: https://engineering.usemotion.com/moving-off-of-typescript-e7bb1f3ad091?gi=1f6548fc7f1a
Аргументы:
— Entity Framework упрощает работу с данными.
— Синтаксис и структура знакомы после TypeScript.
— Экосистема стабильная, инструменты зрелые.
Теперь их бэкенд пишется на C#, фронт остался на React. По их словам, так быстрее и предсказуемее, чем поддерживать TypeScript на большом масштабе.
Еще интересный момент: для своей системы ИИ-агентов языком исполнения они решили оставить JavaScript, но выполнять чужой Джаваскрипт на джаваскриптовом же бакенде выглядело небезопасно. Возможно, это стало решающим аргументом?
Мнения, котаны?
#typescript #zod #dotnet
#фишка дня от Jhey
Не только лишь все знают, что в content у псевдоэлементов можно использовать переменные. Это позволяет удобно помечать, например, уведомления. Или те же бейджики на карточках.
Но ведь, как мы уже. недавно выяснили, анимировать можно вообще что угодно!
Потому... разбиваем строку на span-ы и в каждом с помощью ключевых кадров меняем переменные, отвечающие за контент:
button:hover span:after {
animation: flip 0.2s calc(var(--i) * 0.05s);
}
@keyframes flip {
20% { content: '_'; }
40% { content: var(--c1); }
60% { content: var(--c2); }
}
<span
style="--i: 0; --c1: 'x'; --c2: '$'; --c3: '≈';"
>C</span>
#дайджест недели
1️⃣ Понедельник
Flexbox можно выровнять «по-безопасному» с помощью align-items: safe center;. В узком контейнере элементы не обрезаются и доступны при скролле. Поддержка: Chrome 115+, Firefox 63+, Safari 17.6.
/channel/htmlshit/3789
2️⃣ Вторник
Аттлассиан и Parcel используют хак: бросают исключение и вытаскивают URL из error.stack.
/channel/htmlshit/3790
FlexBox Labs — конструктор раскладок под флекс (есть и экспериментальный грид). Работает онлайн и локально.
/channel/htmlshit/3792
3️⃣ Среда
В Chrome DevTools появился MCP — протокол для подключения внешних инструментов и данных к ИИ-моделям.
/channel/htmlshit/3793
При анимации цвета в CSS всё сводится к RGB, из-за чего появляются серые провалы. Решения: filter: hue-rotate() или анимация угла оттенка в переменной.
/channel/htmlshit/3794
5️⃣ Четверг
Реализация долгого нажатия с анимацией через Tween.js.
/channel/htmlshit/3796
Удаление фона прямо в браузере: Transformers.js + WebGPU. Бесплатное демо от HuggingFace.
/channel/htmlshit/3797
5️⃣ Пятница
В addEventListener можно передавать AbortSignal и удобно управлять отпиской от событий.
/channel/htmlshit/3799
Jest Preview визуализирует тесты в браузере.
/channel/htmlshit/3800
6️⃣ Суббота
Slack тестирует локализацию с помощью «белиберды», чтобы легко находить непереведённые строки. Переводы хранят в ICU MessageFormat.
/channel/htmlshit/3802
GRID TYPE — редактор модульных шрифтов, вдохновлённый Баухаузом. Можно собирать буквы и орнаменты, экспортировать в шрифтовые файлы. Поддерживается кириллица.
/channel/htmlshit/3803
#css #js #tools #animation #i18n #fonts