TGViewer
Channel Public Channel
mefody.dev

mefody.dev

@mefody_dev

Доброжелюбный бородач про фронтенд, тимлидство, спикерство.
Автор — @dark_mefody

Канал про работу: @mefody_work.

Не размещаю рекламу в своём канале. Даже за деньги. Даже большие.
Subscribers
5.38K
Photos
22
Videos
1
Links
513

Showing posts older than #415 · Back to latest

Older Posts 20 shown
Post #414 4.2K
Определение версии Safari и iOS

Для некоторых задач нужно знать версию браузера и операционной системы. Например, для аналитики или оптимизации перфоманса приложения.

При этом недавно версия iOS резко скакнула с 18 на 26. Уверен, где-то в мире несколько парсеров сломались, потому что «ну не может же быть апдейт мажора сразу на 8 версий, не бывает такого». А ещё iPadOS (узнал из статьи) притворяется macOS, хотя по сути работает как iOS по фичам.

Злые Марсиане делятся рецептами, как всё-таки можно определять нужную вам версию. Здесь, внезапно, длинный релизный цикл Safari помогает, а не мешает. Каждый минор содержит достаточное количество новых фичей, чтобы по ним определять версию, @supports в помощь.

Респект авторам статьи, что идентификация по User-Agent где-то в конце списка рецептов. Потому что в современном мире это исключительно дополнительная информация для аналитики, но никак не источник правды. И парсить сложно, и устройства «притворяются» не собой, и тот же iPadOS мимикрирует под десктоп, и нужно зачем-то держать под рукой копию CanIUse. Фичадетектинг — более правильное решение проблемы.

https://evilmartians.com/chronicles/how-to-detect-safari-and-ios-versions-with-ease
evilmartians.com How to detect Safari and iOS versions with ease in 2026—Martian Chronicles, Evil Martians’ team blog Read how to accurately detect Safari and iOS versions using WebKit feature checks, behavioral tests, and selective UA hints to gate features safely and avoid breaking UX.
  • 👏 26
  • 🔥 13
  • 👍 4
  • ❤ 1
  • 😁 1
  • 🌚 1
Post #413 3.41K
Проблемы @starting-style

Директива @starting-style — это такой способ указать браузеру, какие стили у элемента должны быть в тот момент, когда он только появился на странице. И если у него ещё есть указанный transition, то можно сотворить красивую анимацию появления.

Джош Комо подсвечивает нюансы такого подхода:
- Стили внутри @starting-style имеют ту же специфичность, что и селектор, для которого они объявлены. Что, в целом, логично. Но ломает работу с инлайн-стилями, например.
- Когда в стилях появляется !important, то поддержка становится ещё веселее.

В общем, классические проблемы со специфичностью и каскадом. Джош в статье предлагает решения этих проблем. Правда, в конце приходит в выводу, что ему пока проще использовать обычные анимации через @keyframes.

Имхо, оба подхода создают какие-то трудности. Анимации так-то тоже могут перебить стили, которые ты не ожидаешь нечаянно затереть, потому что у них очень высокий приоритет над почти любыми другими стилями. Но, справедливости ради, я пока ни разу в своих проектах @starting-style не применял, как-то не было нужды.

https://www.joshwcomeau.com/css/starting-style/
Joshwcomeau The Big Gotcha With @starting-style • Josh W. Comeau CSS has been on fire lately, with tons of great new features. @starting-style is an interesting one; it allows us to use CSS transitions for enter animations, something previously reserved for CSS keyframe animations. But is the juice worth the squeeze?
  • 👍 17
  • ❤ 4
  • 🥴 1
Post #412 4.47K
Chrome DevTools MCP

Если вы ещё не работали с Model Context Protocol в связке с AI-агентами, то вот хороший повод попробовать.

Команда Chrome выпустила npm-пакет, который позволяет работать с DevTools через MCP. Подключается к IDE через конфиг MCP-клиента:


{
"mcpServers": {
"chrome-devtools": {
"command": "npx",
"args": ["-y", "chrome-devtools-mcp@latest"]
}
}
}


Дальше на всякий случай обучаете инструмент системными или другими промптами, чтобы когда вы просите проверить что-то в браузере, он работал с chrome-devtools. И можно спрашивать про сеть, перфоманс, навигацию, ресайзить страницы и многое другое. Подробности в документации.

Анонс: https://developer.chrome.com/blog/chrome-devtools-mcp
Документация: https://github.com/ChromeDevTools/chrome-devtools-mcp/blob/main/docs/tool-reference.md
Chrome for Developers Chrome DevTools (MCP) for your AI agent | Blog | Chrome for Developers Public preview for the new Chrome DevTools MCP server, bringing the power of Chrome DevTools to AI coding assistants.
  • 🔥 42
  • ❤ 8
  • 👍 7
  • 🥴 6
  • 💔 1
Post #411 4.39K
Эволюция браузеров

Видео выходного дня. Вадим Макеев и Кирилл Мокевнин много и интересно разговаривают о том, как развиваются современные браузеры, как появляются новые фичи для разработчиков, почему приватности почти не существует, что нас ждёт в будущем и ещё много о чём.

Можно включить на фоне как подкаст.

Кстати, после просмотра этого интервью ещё раз осознал, что мы в «Веб-стандартах» важную вещь делаем помимо помощи новичкам в профессии. Важно ещё и обновлять знания опытных разработчиков, у которых часто нет времени копаться в каждой новости и следить за всеми обновлениями. Мы это делаем за читателей и слушателей, подсвечивая самое важное.

https://youtu.be/uPIUl8Bdq5A
YouTube Эволюция браузеров: от IE6 до ИИ-оболочек | Вадим Макеев #61 За последние годы развитие браузеров происходило настолько высокими темпами, что многие теряются в происходящем. Я решил это исправить. Мы поговорили с Вадимом Макеевым — экспертом по веб-стандартам из Mozilla (ранее работавшим в Opera), и обсудили, как эволюция…
  • ❤ 45
  • 💯 8
  • 👍 4
  • 👏 1
  • 🤣 1
Post #410 4.02K
Секретное свойство для нативного «жидкого стекла» у Apple

Скандалы, интриги, расследования.

Аластер Кут периодически изучает ченжлог репозитория WebKit на GitHub, потому что ему важно знать, что умеют веб-вью в мобильных приложениях. И недавно он обнаружил, что у Apple есть кастомное свойство -apple-visual-effect: -apple-system-glass-material, которое по идее включает эффект жидкого стекла на элементе прямо в вебе.

Но есть нюанс. Оказывается, чтобы включить его, нужно внутри WKWebView переключить настройку useSystemAppearance, которая... приватная. Беда в том, что использовать приватные настройки нельзя, если не хочешь вылететь из App Store. А в обычном браузере просто не работает.

Аластер, тем не менее, поигрался со свойством локально, выглядит неплохо.

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

Кто знает, может, в ближайших релизах Safari его всё-таки включат для разработчиков.

https://alastair.is/apple-has-a-private-css-property-to-add-liquid-glass-effects-to-web-content/
Alastair Writes Code Apple has a private CSS property to add Liquid Glass effects to web content I have an incredibly boring summer hobby: looking at the changelog for the WebKit Github repo. Why? Because I spend a chunk of my professional life working with webviews inside mobile apps and I like to get an early peek into what's coming in the next version…
  • 🔥 20
  • 😁 11
  • 🎉 3
  • 🥴 3
  • ❤ 2
  • 👍 2
Post #409 3.56K
Что мы можем делать при помощи corner-shape

Помню, как сильно радовался массовому внедрению в браузеры свойства border-radius. Не нужно больше рисовать скруглённые уголки при помощи таблиц, кайф!

Но в дизайнах всё ещё бывают не только выпуклые круглые уголки. На данный момент без хаков можно играться с овальными формами границ. Ну или разбираться с border-image, который не самый developer friendly, на мой взгляд. Хотя в большинстве случаев этого всё-таки хватает.

Дэниэл Шварц показывает, как мы сможем визуально создавать всевозможные формы блоков с помощью нового свойства corner-shape, которое пока что работает только в Chrome:
- впуклые уголки (инвертированный круг);
- скошенные уголки;
- вырезанные уголки;
- сквирклы (красивые более естественные скругления).

С демками.

https://css-tricks.com/what-can-we-actually-do-with-corner-shape/
CSS-Tricks What Can We Actually Do With corner-shape? | CSS-Tricks When I first started messing around with code, rounded corners required five background images or an image sprite likely created in Photoshop, so when
  • 🔥 32
  • 👍 10
  • ❤ 6
Post #408 3.89K
Электрическая рамка

Принёс вам демку, в которой интересно поразбираться.

Балинт Ференци собрал на CodePen классный пример рамки, по которой как будто идёт электрический ток. Как это работает:

- При помощи фильтра feTurbulence создаётся три слоя с шумом. Это буквально статические картинки, которые выглядят как цветной дым.
- Каждому слою задана бесконечная анимация, которая двигает слой либо влево, либо вверх. Интересно, что слоёв, которые движутся вверх, сразу два.
- При помощи feComposite и feBlend эти слои смешивают в режиме color-dodge. Получается общий источник пикселей в виде анимированного шума.
- И затем применяется feDisplacementMap, который склеивает картинку, поверх которой будет применяться фильтр, и сгенерированный шум в тонкие электрические линии.
- В CSS это подключается просто, filter: url(#turbulent-displace).

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

Сохранил себе в закладки на случай, если захочется что-нибудь эдакое технологическое поделать в интерфейсах.

https://codepen.io/BalintFerenczy/pen/KwdoyEN
codepen.io Electric Border ...
  • 🔥 63
  • ⚡ 19
  • ❤ 9
  • 👍 4
  • 🙏 1
  • 🌚 1
Post #407 3.95K
Брендирование типов в TypeScript

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

Федерико Жерарди показывает, как можно для таких задач использовать брендирование типов.
type BrandedType<T> = T & { readonly __brand: unique symbol };

В статье есть хороший пример, как таким образом пометить строку, что она прошла через обработку важной функцией.

Я сам с брендированием знаком давно, но обычно добавляю строковых поля для разделения типов. Про то, что можно использовать unique symbol, как-то не задумывался, интересный подход.

https://azraelsec.sh/2025/09/06/Typescript-Branding/
AzraelSec Type Branding in Typescript The Initial DiscoveryThe other day, while exploring the Zod documentation for some type schema validators for one of my side projects, I stumbled upon something intriguing that didn’t immediately clic
  • ❤ 31
  • 🤯 6
  • 🥴 4
  • 🌚 3
  • 🤔 2
Post #406 5K
Полный курс по Svelte 5

Как-то я проморгал, что после Svelte 3 успело выйти уже два мажора со значимыми изменениями. Если вдруг вы тоже пропустили, то Svelte — это фреймворк со своим компилятором, который целится в супер-легковесный клиентский код. Довольно популярный фреймворк, к слову.

Матия из Хорватии (автор сам так подписывается, я не подшучиваю) собрал очень подробный курс, который позволяет изучить Svelte 5 с нуля. 28 глав, 3 часа видео, очень много демок. Бесплатно, но если вам будет полезно, можно задонатить на Patreon.

https://joyofcode.xyz/learn-svelte
Joy of Code The Complete Svelte 5 Course Beginner to advanced course for the most beloved JavaScript framework.
  • ❤ 43
  • 🔥 26
  • 👍 4
Post #405 4.97K
Вспоминаем Image Map

Сейчас олды содрогнутся. Забытая техника древних.

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


<img src="map.png"
alt="My awesome map"
usemap="#map">
<map id="map" name="map">
<area shape="rect"
coords="176,14,323,58"
href="belarus.html"
alt="Belarus">
<area shape="poly"
coords="260,96,209,249,130,138"
href="belgium.html"
alt="Belgium">
</map>


Ссылки-картинки с правильным альтернативным текстом, разбитые на области.

Как вы понимаете, были нюансы. Эта штука была абсолютно не готова к адаптивности интерфейсов. И ховеры по ней стилизовать было нельзя. Но выглядело классно. Да и до сих пор выглядит, вы всё ещё можете ими пользоваться.

Энди Кларк собрал альтернативу на SVG и JS, которая лишена минусов оригинальных Image Map. Есть и адаптив, и кликабельность, и стилизация по ховеру.

https://css-tricks.com/revisiting-image-maps/
CSS-Tricks Revisiting Image Maps | CSS-Tricks Let’s run through a quick refresher. Image maps date all the way back to HTML 3.2, where, first, server-side maps and then client-side maps defined clickable regions over an image using map and area elements.
  • 👍 40
  • 😱 11
  • 😁 6
  • ❤ 4
  • 🐳 3
  • 🔥 1
  • 🌚 1
Post #404 4.03K
Основы Anchor Positioning в CSS

Ахмад Шадид делится подробным гайдом, что можно будет делать с этой мощной спецификацией. Как всегда, с обилием демок.

Я искренне верю, что Anchor Positioning изменит стандарты работы с тултипами, подсказками и выносными элементами. И позволит делать без JS то, что сейчас без JS делать почти невозможно. Но спека не самая простая, а вот такие гайды как раз помогают разобраться на примерах.

https://ishadeed.com/article/anchor-positioning/
Ishadeed The Basics of Anchor Positioning Learn the basics of Anchor Positioning in CSS
  • 🔥 24
  • ❤ 8
  • 👍 5
Post #403 3.53K

Forwarded from Веб-стандарты (Vadim Makeev)

Эффект жидкого стекла в браузере: рефракция на CSS и SVG. Крис Фейхо экспериментирует с SVG-фильтрами, чтобы добиться противоречивого, но очень привлекательного эффекта из будущих версий iOS и macOS. #css #svg

https://kube.io/blog/liquid-glass-css-svg/
  • 🔥 34
  • 👍 14
  • 😁 2
  • ❤ 1
  • 👏 1
  • 🎉 1
  • 😐 1
Post #402 3.82K
Браузеру Google Chrome — 17 лет

Мы в свежем выпуске «Веб-стандартов» поразгоняли немножко на тему этой статьи, но всё равно хочется поделиться ссылкой, после открытия которой сводит олдскулы.

Эдди Османи вспоминает, что нового привнёс Chrome в веб за 17 лет своего существования. Только вдумайтесь, браузеру уже 17 лет. А я помню, как он только появился и начинал отвоёвывать потихоньку рынок у Opera и Firefox.

А ещё вкладки вместо окон, пожирание оперативки, уязвимость Spectre, девтулзы, принуждение к HTTPS, Core Web Vitals, динозаврик при падении странички, PWA и многое другое.

P.S. Читайте осторожно, очень много восхваления Chrome в статье, не забывайте о других браузерах.

https://addyosmani.com/blog/chrome-17th/
Addyosmani Google Chrome at 17 - A history of our browser Chrome turns 17 this week, and it feels like a good time to reflect on how far we have come in terms of Chromes guiding principles
  • ❤ 19
Post #401 4.53K
Основы выравнивания в CSS

В CSS есть десятки способов выровнять один элемент внутри другого. Не просто так же до сих пор на собеседованиях просят выровнять элемент по центру.

Темани Афиф делится подробнейшим гайдом с демками, как же оно работает:
- Выравнивание в гридах и флексах.
- Как выравнивание влияет на размеры элементов.
- Отличие логических значений от физических.
- Как работает автоматическое выравнивание.
- Блочные и инлайновые элементы.

Обычно на этом сайте Темани собирает короткие полезные советы, но, видимо, в какой-то момент материалов про выравнивание стало так много, что появился новый раздел Explore.

https://css-tip.com/explore/alignment/
Css-Tip The Fundamentals of CSS Alignment This deep dive covers everything you need to know about CSS alignment. It's time to stop doing trial and error and finally understand how everything works!
  • ❤‍🔥 27
  • 👍 2
  • 😐 2
  • ❤ 1
Post #400 4.31K
Почему браузеры троттлят JS-таймеры?

Нолан Лоусон делится задачей: нужно после того, как выполнены все микротаски, но ещё не начали выполняться таски в event loop, запустить какие-то полезные фоновые задачи. Думаю, на собеседованиях часто такие вопросы можно услышать.

Есть древний способ вызвать setTimeout(0), но на самом деле это задержка в 4ms, сделанная против абьюза от нехороших разработчиков, ломавших страницы в вебе.

Нолан в статье сравнивает разные способы выполнить изначальную задачу (setImmediate, MessageChannel.postMessage, window.postMessage и scheduler.postTask) по их кроссбраузерности и особенностям. Спойлер: одного идеального способа нет.

https://nolanlawson.com/2025/08/31/why-do-browsers-throttle-javascript-timers/
Read the Tea Leaves Why do browsers throttle JavaScript timers? Even if you’ve been doing JavaScript for a while, you might be surprised to learn that setTimeout(0) is not really setTimeout(0). Instead, it could run 4 milliseconds later: Nearly a decade a…
  • 👍 28
  • ❤‍🔥 5
  • ❤ 1
  • 🤔 1
Post #399 4.97K
Оптимизируем PWA под различные режимы отображения

PWA (прогрессивные веб-приложения) можно запускать в разных режимах. Например, в режиме fullscreen приложение занимает весь экран, а браузерный UI прячется. А в режиме minimal-ui браузерная обвязка компактная, без излишков.

Деклан Чидлоу показывает, как внутри CSS или JS определять, в каком режиме отображения работает веб-приложение, и объясняет, для чего это может быть полезно.

https://www.smashingmagazine.com/2025/08/optimizing-pwas-different-display-modes/
Smashing Magazine Optimizing PWAs For Different Display Modes — Smashing Magazine Progressive Web Apps (PWAs) are a great way to make apps built for the web feel native, but in moving away from a browser environment, we can introduce usability issues. This article covers how we can modify our app depending on what display mode is applied…
  • 👍 28
  • ❤ 6
Post #398 4.11K
Одержимость аккуратными краями круга из radial-gradient()

Простая задача: нарисовать круг свойством background. Берём radial-gradient(var(--radius), var(--my-color) 100%, #0000), можно сразу несколько — профит. Ведь правда?

Беда в том, что для кругов, сделанных при помощи border-radius, срабатывает сглаживание, они выглядят аккуратно, а вот градиенты внутри background рисуются по другим алгоритмам. Края рваные, пиксельные, грубые.

Ана Тюдор со свойственной ей глубиной детализации пробует найти «идеальное» решение, которое и жёсткость уберёт, и слишком размазанными края не сделает, и для любого размера круга подойдёт, и к зуму подстроится.

https://frontendmasters.com/blog/obsessing-over-smooth-radial-gradient-disc-edges/
blog.master.dev Obsessing Over Smooth radial-gradient() Disc Edges An underdog media query, resolution queries, comes to the rescue here in defining radial gradients that don't blur or get the jaggies.
  • ❤ 23
  • 👍 9
  • 🤯 3
  • 👏 1
Post #397 4.57K
Бросаем кубик с random() в CSS

Оказывается, в Safari Technology Preview можно поиграться с функцией random в CSS. Например, вы можете написать width: random(2px, 10px, 1px);, и у вас ширина блоков, к которым применилось свойство, будет случайным числом от 2 до 10 пикселей с шагом в 1 пиксель.

Мне бы такое очень пригодилось в генеративной графике. Делал когда-то демки на препроцессорах, где рандом на самом деле срабатывал только при компиляции. И игрался с тем, чтобы генерировать случайные числа внутри JS и пробрасывать их через кастомные переменные внутрь элементов — но это так себе удобство. А хочется, чтобы при обновлении страницы графика менялась.

Спецификация, на самом деле, более сложная, чем просто генерация чисел. Там можно и кэшированием управлять, и генерировать одно общее число для всех элементов. В Safari есть какая-то реализация, но спека ещё в процессе устаканивания.

https://webkit.org/blog/17285/rolling-the-dice-with-css-random/
WebKit Rolling the Dice with CSS random() Random functions in programming languages are amazing.
  • 🔥 24
  • ❤ 6
  • 🤩 1
  • 🥴 1
Post #396 4.43K
Интерактивный гайд по path в SVG

Джош Камю продолжает собирать шикарные интерактивные туториалы по SVG. На этот раз он подробно разбирает, что и как работает внутри <path d="..."/>, чем отличаются M от m, L от l и кубические кривые Безье от квадратичных и как нарисовать дуги разных форм. Как обычно, стильно и со спецэффектами.

https://www.joshwcomeau.com/svg/interactive-guide-to-paths/
Joshwcomeau An Interactive Guide to SVG Paths • Josh W. Comeau SVG gives us many different primitives to work with, but by far the most powerful is the element. Unfortunately, it’s also the most inscrutable, with its compact Regex-style syntax. In this tutorial, we’ll demystify this infamous element and see some of…
  • ❤‍🔥 39
  • 👍 5
  • 🌚 4
  • ❤ 1
Post #395 4.33K
MinskJS Meetup #13

Если у вас сегодня на вечер ещё нет планов, приходите к нам на уютный онлайн-митап в 19:00 по минскому времени. Поговорим про фронтенд и около:
- Василий Ванчук расскажет про секцию System Design на собеседованиях для фронтенд-разработчиков.
- Анна Ширяева поделится гайдом, как выбрать фронтенд-фреймворк под свою задачу.
- Евгений Дорошкевич объяснит, как делать классные анимации, улучшающие вовлечённость пользователей.

Как обычно, будет всем рады.

Трансляция: https://www.youtube.com/watch?v=7JyODKQYRX4
Программа митапа: https://minskjs.site/events/minskjs-meetup-13/
minskjs.site MinskJS Meetup #13 | MinskJS Серия митапов MinskJS посвящена самому популярному языку программирования в вебе — JavaScript. Основная тематика — программирование, взаимодействие с бэкендом, различные оптимизации и вопросы безопасности.
  • ❤‍🔥 22
  • 👏 8
  • 👍 4
  • ❤ 3
  • 🤯 1
Older posts →
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →