<?xml version="1.0" encoding="UTF-8"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" >

  <channel>
    <title><![CDATA[Все статьи подряд / CSS / Хабр]]></title>
    <link>https://habr.com/ru/hubs/css/articles/</link>
    <description><![CDATA[CSS – каскадные таблицы стилей]]></description>
    <language>ru</language>
    <managingEditor>editor@habr.com</managingEditor>
    <generator>habr.com</generator>
    <pubDate>Wed, 30 Sep 2026 15:05:50 GMT</pubDate>
    
    
      <image>
        <link>https://habr.com/ru/</link>
        <url>https://habrastorage.org/webt/ym/el/wk/ymelwk3zy1gawz4nkejl_-ammtc.png</url>
        <title>Хабр</title>
      </image>
    

    
      
        
    
    <item>
      <title><![CDATA[HTML и CSS помогут вам сделать ужасный интерфейс для пользователя]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/ruvds/articles/1085660/</guid>
      <link>https://habr.com/ru/companies/ruvds/articles/1085660/?utm_campaign=1085660&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/4e2/367/0e9/4e23670e954b596e100ea79c2e8e7305.png" /><p>Привет, Хабр!</p><p>Я часто вам рассказываю, как HTML и CSS помогают улучшить пользовательский опыт в наших веб-интерфейсах. Мне это наскучило. Сегодня я хочу поговорить с вами о практиках, которые заставляют пользователей очень сильно ругать разработчиков.</p><p>Мы рассмотрим примеры, когда только использование HTML и CSS может привести к замешательству людей. Многие же думают, что эти технологии безопасны и не могут принести вреда. Вот и проверим это.</p><p>Давайте посмотрим, что я вам подготовил.</p> <a href="https://habr.com/ru/articles/1085660/?utm_campaign=1085660&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 29 Sep 2026 09:01:47 GMT</pubDate>
      <dc:creator><![CDATA[melnik909 (RUVDS.com)]]></dc:creator>
      
      <category><![CDATA[css]]></category><category><![CDATA[html]]></category><category><![CDATA[вёрстка сайтов]]></category><category><![CDATA[доступность]]></category><category><![CDATA[ruvds_статьи]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Шрифт — это не просто буквы: как устроен шрифтовой дизайн, что изменят нейросети и за что на самом деле платят]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1085010/</guid>
      <link>https://habr.com/ru/articles/1085010/?utm_campaign=1085010&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/15b/dbe/58d/15bdbe58d7a170a706705847e9d4d001.jpg" /><p>Почему логотип Coca-Cola — не шрифт, зачем одной гарнитуре сотни знаков, почему хороший веб-шрифт надо проверять на плохом мониторе и что именно нейросети уже могут забрать у шрифтового дизайнера?</p><p>Я, Александр, автор телеграм-канала «<a href="https://t.me/shulepov_codeee" rel="noopener nofollow">Shulepov Code</a>», поговорил с Александрой Корольковой — арт-директором Paratype, автором книги «Живая типографика» и YouTube-канала «<a href="https://www.youtube.com/channel/UCF-ttd9ZrVxJfMKFiK9q7dw" rel="noopener nofollow">Шрифтовой видеоблог</a>», соавтором PT Sans, PT Serif и других известных шрифтовых систем. Обсудили историю профессии от металлических литер до веб-шрифтов, устройство работы шрифтовой студии, лицензии и цены, роль кириллицы, инструменты, заказные проекты, ИИ и довольно практичный ответ на вопрос, сколько шрифтов действительно нужно одному сайту.&nbsp; </p> <a href="https://habr.com/ru/articles/1085010/?utm_campaign=1085010&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 22 Sep 2026 08:12:59 GMT</pubDate>
      <dc:creator><![CDATA[aleksandr_shulepov]]></dc:creator>
      
      <category><![CDATA[шрифтовой дизайн]]></category><category><![CDATA[гарнитура]]></category><category><![CDATA[кириллица]]></category><category><![CDATA[веб-шрифт]]></category><category><![CDATA[нейросети]]></category><category><![CDATA[леттеринг]]></category><category><![CDATA[антиква]]></category><category><![CDATA[гротеск]]></category><category><![CDATA[лицензия шрифта]]></category><category><![CDATA[хинтинг]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[История npm‑библиотеки morphing‑scroll]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1084664/</guid>
      <link>https://habr.com/ru/articles/1084664/?utm_campaign=1084664&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/a33/587/9f0/a335879f05d59206632ba9d288bc487e.jpg" /><p>Хочу рассказать о&nbsp;своей npm‑библиотеке&nbsp;— это мой второй и самый сложный npm‑проект на&nbsp;момент написания статьи.<br>Библиотека решает ряд проблем и ограничений связанных с дефолтным поведением браузерного элемента скролл.</p><p>Глубоко в&nbsp;код погружаться не&nbsp;буду&nbsp;— поделюсь историей создания и мотивацией.✨</p> <a href="https://habr.com/ru/articles/1084664/?utm_campaign=1084664&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее &rarr;</a>]]></description>
      
      <pubDate>Mon, 21 Sep 2026 11:28:51 GMT</pubDate>
      <dc:creator><![CDATA[voodoofugu]]></dc:creator>
      
      <category><![CDATA[react]]></category><category><![CDATA[scroll]]></category><category><![CDATA[scrollbar]]></category><category><![CDATA[virtualization]]></category><category><![CDATA[lazyload]]></category><category><![CDATA[slider]]></category><category><![CDATA[carousel]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] React 19.3]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1084612/</guid>
      <link>https://habr.com/ru/articles/1084612/?utm_campaign=1084612&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/eba/5a0/4b5/eba5a04b5d2bf7f87e783e1d65dec699.jpg" /><p>React 19.3 уже доступен в npm!</p><p><a href="https://react.dev/blog/2025/04/23/react-labs-view-transitions-activity-and-more" rel="noopener nofollow">В прошлом году</a> мы представили View Transitions и Fragment Refs как новые экспериментальные API, которые готовились к появлению в React. Теперь оба API получили стабильный статус в React 19.3.</p><p>В этой статье разберём, как они работают, а также рассмотрим другие заметные изменения в этом релизе.</p> <a href="https://habr.com/ru/articles/1084612/?utm_campaign=1084612&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 21 Sep 2026 09:47:32 GMT</pubDate>
      <dc:creator><![CDATA[qmzik]]></dc:creator>
      
      <category>react</category><category>react.js</category><category>react native</category><category>javascript</category><category>js</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[Задача со звёздочкой для фронтенда: выравниваем иконки с текстом]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/avito/articles/1080464/</guid>
      <link>https://habr.com/ru/companies/avito/articles/1080464/?utm_campaign=1080464&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/af6/c07/8ca/af6c078cabbe9520a7bf61ed2624d30c.jpg" /><p>Расположить иконку рядом с текстом — с этой задачей сталкивался каждый фронтенд-разработчик. Вроде бы ничего сложного.</p><p>Тогда почему с ней не могут справиться ни Apple, ни Microsoft, ни Google, ни другие техногиганты?&nbsp;</p><p>Меня зовут <strong>Армен Аллахвердян</strong>, я фронтенд-разработчик из команды дизайн-системы <strong><a href="https://clc.to/LV3FBg">Авито</a></strong>. В статье разберёмся, почему простая на первый взгляд задача вызывает столько проблем, и выясним, как надо и как не надо выравнивать иконки.</p> <a href="https://habr.com/ru/articles/1080464/?utm_campaign=1080464&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 15 Sep 2026 09:56:51 GMT</pubDate>
      <dc:creator><![CDATA[lil_mikazuki (AvitoTech)]]></dc:creator>
      
      <category><![CDATA[текстовые иконки]]></category><category><![CDATA[css]]></category><category><![CDATA[типографика]]></category><category><![CDATA[метрики шрифта]]></category><category><![CDATA[дизайн-системы]]></category><category><![CDATA[vertical-align]]></category><category><![CDATA[line-height]]></category><category><![CDATA[выравнивание текста]]></category><category><![CDATA[дизайн-система]]></category><category><![CDATA[фронтенд]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Почему баги кроссбраузерности до сих пор никуда не исчезли]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/selectel/articles/1081954/</guid>
      <link>https://habr.com/ru/companies/selectel/articles/1081954/?utm_campaign=1081954&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/be0/2a6/3c2/be02a63c2051128284d3433bc632f34c.jpg" /><p>Выкатили новую фичу, а потом бэкендер со своим Firefox пишет, что у него что-то не работает? Или пользователь с Safari жалуется на неудобства? Ничего страшного: поищу причину в интернете, починю баг и продолжу использовать для разработки Chrome &lt;/sarcasm&gt;.</p><p>В этой статье рассмотрим, почему проблемы кроссбраузерности никуда не пропали в 2026 году, и попробуем понять, как заранее определять появление ошибок.</p> <a href="https://habr.com/ru/articles/1081954/?utm_campaign=1081954&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 15 Sep 2026 08:00:08 GMT</pubDate>
      <dc:creator><![CDATA[vaapo (Selectel)]]></dc:creator>
      
      <category><![CDATA[selectel]]></category><category><![CDATA[кроссбраузерность]]></category><category><![CDATA[фронтенд]]></category><category><![CDATA[браузерные движки]]></category><category><![CDATA[blink]]></category><category><![CDATA[webkit]]></category><category><![CDATA[gecko]]></category><category><![CDATA[webview]]></category><category><![CDATA[тестирование веб-приложений]]></category><category><![CDATA[отладка]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как мы собрали корпоративный мессенджер на Matrix: инженерный дневник]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1082044/</guid>
      <link>https://habr.com/ru/articles/1082044/?utm_campaign=1082044&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/764/b00/5a2/764b005a2fe16d65b901aa7f6ee9f348.jpg" /><p>Задача звучала просто: создать ВКС с&nbsp;jitsi и чатом нарисовать красивый интерфейс в&nbsp;корп стиле.</p><p>Решение&nbsp;— написать собственный тонкий веб‑клиент поверх <code>matrix-js-sdk</code>, который разговаривает с&nbsp;уже существующим Synapse‑сервером и Jitsi‑сервером, но&nbsp;выглядит и ведёт себя как&nbsp;часть внутреннего портала компании.</p><p>Ниже&nbsp;— подробный, местами болезненный дневник того, как&nbsp;это строилось: от&nbsp;каркаса на&nbsp;Vite до&nbsp;продакшена с&nbsp;реальными пользователями и очень поучительных багов.</p> <a href="https://habr.com/ru/articles/1082044/?utm_campaign=1082044&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 14 Sep 2026 12:31:47 GMT</pubDate>
      <dc:creator><![CDATA[VictorSkvorez]]></dc:creator>
      
      <category><![CDATA[jitsi meet]]></category><category><![CDATA[keycloak]]></category><category><![CDATA[matrix]]></category><category><![CDATA[react.js]]></category><category><![CDATA[web]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Мы сделали свой UI Kit: 6 компонентов превратились в 30+, а одна ошибка сломала разметку во всех проектах]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1080784/</guid>
      <link>https://habr.com/ru/articles/1080784/?utm_campaign=1080784&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/41e/089/d06/41e089d06a122ef383d3471243988948.png" /><p><strong>Мы сделали свой UI Kit: 6 компонентов превратились в 30+, а одна ошибка сломала разметку во всех проектах</strong></p><p><strong>С чего всё начиналось</strong></p><p>Когда в проекте начинает появляться всё больше одинаковых элементов интерфейса, рано или поздно возникает вопрос: зачем каждый раз создавать один и тот же Button, Input или Select?</p><p>Мы рассматривали готовые решения, в том числе Ant Design и Material UI, но они не закрывали наши требования. Нам требовался больший контроль над внешним видом и поведением компонентов, возможность детально адаптировать их под наши задачи и учитывать требования проекта к безопасности.</p> <a href="https://habr.com/ru/articles/1080784/?utm_campaign=1080784&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 10 Sep 2026 10:21:24 GMT</pubDate>
      <dc:creator><![CDATA[Goker1235]]></dc:creator>
      
      <category><![CDATA[javascript]]></category><category><![CDATA[typescript]]></category><category><![CDATA[uikit]]></category><category><![CDATA[ui]]></category><category><![CDATA[ui kit]]></category><category><![CDATA[react]]></category><category><![CDATA[react.js]]></category><category><![CDATA[программирование]]></category><category><![CDATA[фронтенд]]></category><category><![CDATA[фронтенд-разработка]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[CSS в 2026 году: где JavaScript уже не обязателен]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/vk/articles/1080386/</guid>
      <link>https://habr.com/ru/companies/vk/articles/1080386/?utm_campaign=1080386&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/9bc/d4b/c21/9bcd4bc21853761dc56c25c12b7e2f6b.png" /><p>Когда работаешь с такими масштабными продуктами, как мы делаем в VK, быстро начинаешь ценить код, который можно не писать. Особенно если речь о небольших сценариях: открыть поповер, анимировать появление блока или подстроить поле под контент. Ещё недавно для таких задач мы почти автоматически тянулись к JavaScript. Но за последние два года CSS сильно расширил свои возможности для задач, связанных с интерфейсом.</p><p>Я Максим Кузнецов, занимаюсь оптимизацией производительности и улучшением стабильности веб-версий ВКонтакте. В этой статье расскажу, что уже можно использовать как альтернативу JS, что стоит попробовать аккуратно, а за чем пока лучше просто следить.</p> <a href="https://habr.com/ru/articles/1080386/?utm_campaign=1080386&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 10 Sep 2026 09:34:31 GMT</pubDate>
      <dc:creator><![CDATA[GolovinDS (VK)]]></dc:creator>
      
      <category><![CDATA[css]]></category><category><![CDATA[без javascript]]></category><category><![CDATA[разработка сайтов]]></category><category><![CDATA[веб-разработка]]></category><category><![CDATA[js]]></category><category><![CDATA[html]]></category><category><![CDATA[javascript]]></category><category><![CDATA[фронтенд]]></category><category><![CDATA[frontend]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как атрибуты width и height у картинок ускорят сайт на 12% и сделают его комфортнее?]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1080050/</guid>
      <link>https://habr.com/ru/articles/1080050/?utm_campaign=1080050&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/c87/c38/f12/c87c38f1261a23d98fcb332c917fc230.jpg" /><p>Атрибуты width и height сэкономят ресурсы CPU затрачиваемые на отрисовку страницы. Также они избавят от эффекта «скачущих изображений», когда во время загрузки страница резко дёргается, раздвигается, чтобы освободить место под под появляющиеся изображения.</p><p>Эта статья — актуализация <a href="https://www.smashingmagazine.com/2020/03/setting-height-width-images-important-again/" rel="noopener nofollow">статьи англоязычного автора</a> 2020 года и её расширение с учётом последних обновлений браузеров. Также материал структурирован от простого к сложному с более наглядными примерами, чтобы было увлекательней читать. Внутри есть интерактивные примеры, которые можно исследовать самостоятельно в браузере с помощью профайлера браузера.</p> <a href="https://habr.com/ru/articles/1080050/?utm_campaign=1080050&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 08 Sep 2026 20:20:08 GMT</pubDate>
      <dc:creator><![CDATA[Axenic]]></dc:creator>
      
      <category><![CDATA[ускорение сайта]]></category><category><![CDATA[ускорение сайтов]]></category><category><![CDATA[ускорение загрузки сайта]]></category><category><![CDATA[html-верстка]]></category><category><![CDATA[html-вёрска]]></category><category><![CDATA[трюки html]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Я положил Tailwind‑классы в базу. После сборки половина стилей исчезла]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1080034/</guid>
      <link>https://habr.com/ru/articles/1080034/?utm_campaign=1080034&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/a74/82e/1a4/a7482e1a4c7db29fec2e9a75b6ac976e.png" /><p>Начну со спорного решения: я храню в базе готовый HTML с Tailwind-классами.</p><p>Не Markdown, не JSON-схему блоков, а буквально это:</p> <a href="https://habr.com/ru/articles/1080034/?utm_campaign=1080034&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 08 Sep 2026 19:23:54 GMT</pubDate>
      <dc:creator><![CDATA[crymans]]></dc:creator>
      
      <category><![CDATA[Tailwind CSS]]></category><category><![CDATA[Nuxt]]></category><category><![CDATA[Vue]]></category><category><![CDATA[v-html]]></category><category><![CDATA[CMS]]></category><category><![CDATA[runtime HTML]]></category><category><![CDATA[XSS]]></category><category><![CDATA[content configuration]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[HTML и CSS помогут вам сделать дружелюбный интерфейс! Вот моя коллекция простых лайфхаков]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/ruvds/articles/1077870/</guid>
      <link>https://habr.com/ru/companies/ruvds/articles/1077870/?utm_campaign=1077870&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/3e9/c6c/b0e/3e9c6cb0e7beba0de0923e0fcd32a4d1.png" /><p>Привет, Хабр.</p><p>Я переживаю, когда вижу плохие интерфейсы. Мне не нравится, когда пользователю сложно или неудобно. У меня очень сильно подгорает от этого.</p><p>Вместо обычного ворчания я делюсь мыслями о том, как исправить ситуацию. Больше всего мне нравится показывать, что HTML и CSS могут помочь в этой задаче.</p><p>Я сделал такой выбор, потому что решения на основе этих технологий легко начать использовать или добавить в существующий проект. Даже не имеет значения, какой фреймворк используется.</p><p>Вот давайте проверим это. Сегодня расскажу о нескольких подходах, а вы скажите, насколько просто их использовать. Я буду ждать вас в комментариях.</p><p>А теперь давайте посмотрим, что я вам подготовил.</p> <a href="https://habr.com/ru/articles/1077870/?utm_campaign=1077870&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 08 Sep 2026 09:01:03 GMT</pubDate>
      <dc:creator><![CDATA[melnik909 (RUVDS.com)]]></dc:creator>
      
      <category><![CDATA[html]]></category><category><![CDATA[css]]></category><category><![CDATA[фронтенд]]></category><category><![CDATA[доступность]]></category><category><![CDATA[веб-разработка]]></category><category><![CDATA[ux]]></category><category><![CDATA[ui]]></category><category><![CDATA[ruvds_статьи]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Скроллбар в 2k26]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1079750/</guid>
      <link>https://habr.com/ru/articles/1079750/?utm_campaign=1079750&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/2f5/293/c6a/2f5293c6a232448ee08dc1c81273b8bd.jpg" /><p>В вашей дизайн-системе могут быть особые требования к внешнему виду скроллбаров. К сожалению, нативные возможности стилизации весьма ограничены, поэтому, если вы сталкивались с подобными требованиями, единственный вариант — делать собственный компонент.</p><p>Для этого нам нужно решить несколько задач: понять, когда надо показывать ползунок, какого он должен быть размера и где находиться, обновлять положение при прокрутке и тому подобное.</p><p><strong>Что, если я скажу вам, что в 2026 году JavaScript для всего этого нам больше не нужен?</strong> </p> <a href="https://habr.com/ru/articles/1079750/?utm_campaign=1079750&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Не верю!</a>]]></description>
      
      <pubDate>Tue, 08 Sep 2026 08:24:51 GMT</pubDate>
      <dc:creator><![CDATA[Waterplea]]></dc:creator>
      
      <category><![CDATA[css]]></category><category><![CDATA[scroll]]></category><category><![CDATA[scrollbar]]></category><category><![CDATA[scroll-driven animations]]></category><category><![CDATA[anchor positioning api]]></category><category><![CDATA[container queries]]></category><category><![CDATA[frontend]]></category><category><![CDATA[фронтенд]]></category><category><![CDATA[design system]]></category><category><![CDATA[design]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Тест зелёный, фича сломана: семь случаев, когда проверка совпала по неверной причине]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1077182/</guid>
      <link>https://habr.com/ru/articles/1077182/?utm_campaign=1077182&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<p>Тест зелёный, а фича сломана — потому что проверка смотрит на форму, а не на эффект: имя поля в файле есть, а в разметку оно не попало. Семь таких случаев из живого проекта на TypeScript и PostgreSQL: колесо мыши, которое убил мой собственный CSS-фикс и диагностика, проверившая defaultPrevented вместо прокрутки; подстрока, совпавшая с другой подстрокой; комментарий в SQL, прочитанный как код; метка источника, из-за которой отчёт показывал ноль и этот ноль читался как «людей нет». С кодом, разбором каждой ошибки и числами мутационного прогона на 13 400 мутантов.</p> <a href="https://habr.com/ru/articles/1077182/?utm_campaign=1077182&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 01 Sep 2026 12:05:22 GMT</pubDate>
      <dc:creator><![CDATA[EclipseFall]]></dc:creator>
      
      <category><![CDATA[тестирование]]></category><category><![CDATA[мутационное-тестирование]]></category><category><![CDATA[playwright]]></category><category><![CDATA[vitest]]></category><category><![CDATA[e2e-тесты]]></category><category><![CDATA[typescript]]></category><category><![CDATA[css]]></category><category><![CDATA[регулярные-выражения]]></category><category><![CDATA[telegram-mini-apps]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[CSS задачи на 200 IQ]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1075950/</guid>
      <link>https://habr.com/ru/articles/1075950/?utm_campaign=1075950&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/361/b80/fb1/361b80fb1547f2ffeb5811608dc1698b.jpg" /><p>У вас бывает такое чувство, когда вы при выполнении работы упёрлись в какую-то проблему и что-то внутри подсказывает, что не может такого быть, чтобы у неё не было решения? Когда кажется, что уже всё пропало и мы столкнулись с фундаментальным ограничением реальности, но отказ принять это продолжает вести вас в дебри спецификаций, беседы на Github 10 летней давности и изучение статей гигантов уже прошедших этот путь и поделившихся с нами своими результатами? И вот спустя многие часы напряжённого скрипа извилин вы дописали очередную строчку, обновили страницу и вот оно, то, что вы хотели получить смотрит на вас с экрана? Это ощущение успеха, наверное, в той или иной степени знакомо каждому инженеру. В такие моменты мне, обычно, очень хочется поделиться результатом с коллегами и, по возможности, написать статью если это может быть полезно кому-то ещё. В этой записи я собрал 3 подобных ситуации, где в рамках нашей работы возникли решения, которые, насколько мне известно, довольно уникальны и в полной мере не были описаны раньше. Приглашаю вас разделить со мной радость обнаружения решения, которое казалось невозможным!</p> <a href="https://habr.com/ru/articles/1075950/?utm_campaign=1075950&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 28 Aug 2026 15:41:40 GMT</pubDate>
      <dc:creator><![CDATA[Waterplea]]></dc:creator>
      
      <category><![CDATA[css]]></category><category><![CDATA[scroll-driven animations]]></category><category><![CDATA[shrinkwrap]]></category><category><![CDATA[puzzle]]></category><category><![CDATA[svg]]></category><category><![CDATA[mask]]></category><category><![CDATA[frontend]]></category><category><![CDATA[front-end]]></category><category><![CDATA[фронтенд]]></category><category><![CDATA[css masking]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[К сожалению, вы упускаете пользу этих CSS псевдо-классов и псевдо-элементов]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/ruvds/articles/1072768/</guid>
      <link>https://habr.com/ru/companies/ruvds/articles/1072768/?utm_campaign=1072768&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/175/62b/984/17562b984dd568a51126eca1d0194a65.png" /><p>Привет, Хабр!</p><p>В CSS огромное количество псевдо-элементов и псевдо-классов. Так много, что я не знаю ни одного фронтендера, который помнит все. Я тоже не исключение из этого правила.</p><p>Часто нахожу что-то новое и интересное у зарубежных блогеров, рассказывающих о CSS. Так что неудивительно, что мы с вами упускаем пользу. Это нормально.</p><p>Сегодня я пришёл к вам, чтобы исправить это. Мы рассмотрим несколько псевдо-элементов и псевдо-классов, которые, по моему мнению, редко используют. Хотя они принесут немало пользы!</p><p>Давайте посмотрим, что я вам подготовил.</p> <a href="https://habr.com/ru/articles/1072768/?utm_campaign=1072768&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 25 Aug 2026 09:01:42 GMT</pubDate>
      <dc:creator><![CDATA[melnik909 (RUVDS.com)]]></dc:creator>
      
      <category><![CDATA[css]]></category><category><![CDATA[вёрстка сайтов]]></category><category><![CDATA[стили]]></category><category><![CDATA[ruvds_статьи]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Мои любимые CSS-трюки для фронтендеров, которые не используют Tailwind]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/ruvds/articles/1069800/</guid>
      <link>https://habr.com/ru/companies/ruvds/articles/1069800/?utm_campaign=1069800&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/474/bd0/1bf/474bd01bf90f893990d93dff05912467.png" /><p>Привет, Хабр!</p><p>Сегодня фронтендеры любят подход атомарных классов, в частности Tailwind. Я не имею ничего против этого подхода. Каждый волен выбирать сам, с чем ему работать.</p><p>Но если вы пишете стили по-старому с использованием семантических классов, то у меня есть несколько интересных трюков для вас. Ими пришёл поделиться с вами сегодня.</p><p>Мои трюки улучшают пользовательский опыт, помогают организовать стили на контентных проектах и многое другое. Надеюсь, вам будет интересно!</p><p>Давайте посмотрим, что я вам подготовил.</p> <a href="https://habr.com/ru/articles/1069800/?utm_campaign=1069800&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 18 Aug 2026 07:01:13 GMT</pubDate>
      <dc:creator><![CDATA[melnik909 (RUVDS.com)]]></dc:creator>
      
      <category><![CDATA[css]]></category><category><![CDATA[вёрстка]]></category><category><![CDATA[лайфхаки]]></category><category><![CDATA[tailwind]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Astryx: дизайн-система, которой может пользоваться AI-агент]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1070514/</guid>
      <link>https://habr.com/ru/articles/1070514/?utm_campaign=1070514&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/daa/bc8/4f0/daabc84f0f1e618ce468c7feb0e40436.png" /><p>В прошлой статье про <a href="https://habr.com/ru/articles/1008446/" rel="noopener noreferrer nofollow">StyleX</a> я разбирал, почему компилируемый CSS выглядит логичным продолжением ветки CSS-in-JS. Одно из главных свойств StyleX для меня — предсказуемость: стили описываются в ограниченной форме, которую можно анализировать ещё до запуска приложения.</p><p>Это особенно важно в момент, когда код всё чаще пишет не только человек, но и AI-ассистент. Если инструмент допускает любую форму записи стилей, ассистент рано или поздно начнёт пользоваться всей этой свободой: добавлять магические значения, дублировать решения, обходить токены и постепенно размывать дизайн-систему. StyleX сужает пространство для таких ошибок.</p><p>Теперь Meta открыла Astryx — дизайн-систему, построенную на React и StyleX. На первый взгляд это выглядит как релиз большой библиотеки: больше 170 компонентов, темы, тёмный режим, шаблоны, CLI, всё как мы любим. Но количество компонентов здесь не самое интересное. Astryx стоит рассматривать как следующий шаг после StyleX: если StyleX делает предсказуемыми стили, то Astryx пытается сделать предсказуемой работу с интерфейсом целиком — и для человека, и для AI-агента.</p> <a href="https://habr.com/ru/articles/1070514/?utm_campaign=1070514&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Fri, 14 Aug 2026 11:10:13 GMT</pubDate>
      <dc:creator><![CDATA[vad612]]></dc:creator>
      
      <category><![CDATA[веб-разработка]]></category><category><![CDATA[дизайн-системы]]></category><category><![CDATA[фронтенд]]></category><category><![CDATA[библиотеки]]></category><category><![CDATA[css]]></category><category><![CDATA[stylex]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Web‑карты: от координат до изображения]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1070122/</guid>
      <link>https://habr.com/ru/articles/1070122/?utm_campaign=1070122&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/b4e/d71/3ef/b4ed713efa15ea36ede1a28189d1a451.jpg" /><p>Статья посвящена базовым принципам работы тайловых веб‑карт. В&nbsp;ней рассматривается, как&nbsp;карта мира разбивается на&nbsp;небольшие изображения&nbsp;— тайлы, как&nbsp;устроен их URL и что&nbsp;означают параметры zoom, x и y. </p><p>На&nbsp;простых примерах разбирается связь между географическими координатами и положением тайла в&nbsp;общей сетке. Пошагово выводятся формулы преобразования долготы в&nbsp;координату X и широты в&nbsp;координату Y с&nbsp;учётом проекции Web Mercator. </p><p>В&nbsp;заключительной части показано, как&nbsp;с&nbsp;помощью дробной части полученных координат определить точное положение точки внутри тайла и отобразить её поверх изображения.</p> <a href="https://habr.com/ru/articles/1070122/?utm_campaign=1070122&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Делаем ядро тайловой веб-карты на JS</a>]]></description>
      
      <pubDate>Thu, 13 Aug 2026 11:52:13 GMT</pubDate>
      <dc:creator><![CDATA[GreenFox_2003]]></dc:creator>
      
      <category><![CDATA[openstreetmap]]></category><category><![CDATA[карты]]></category><category><![CDATA[навигатор]]></category><category><![CDATA[javascript]]></category><category><![CDATA[широта]]></category><category><![CDATA[долгота]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как не начать кодить слишком рано?]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1069360/</guid>
      <link>https://habr.com/ru/articles/1069360/?utm_campaign=1069360&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/0a7/34e/62c/0a734e62c8e151d13b69b9791d9b12c3.jpg" /><p>Часто разработка начинается с кода. Есть идея - мы открываем IDE, создаём проект и начинаем писать. Не задумываясь о том, что в этот момент мы ещё можем не понимать, какую проблему решаем и что вообще должна делать система.</p><p>В этой статье разберём путь от пользовательской потребности до реализации: <strong>UCD → FR/NFR → KISS → компонентная разработка → код</strong>.</p> <a href="https://habr.com/ru/articles/1069360/?utm_campaign=1069360&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 11 Aug 2026 14:15:25 GMT</pubDate>
      <dc:creator><![CDATA[Verse23]]></dc:creator>
      
      <category><![CDATA[junior-разработчик]]></category><category><![CDATA[студенты]]></category><category><![CDATA[студентам]]></category><category><![CDATA[студент]]></category><category><![CDATA[web]]></category><category><![CDATA[web-программирование]]></category><category><![CDATA[web-разработка]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Размытая граница между состояниями CSS и событиями JavaScript]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/timeweb/articles/1059272/</guid>
      <link>https://habr.com/ru/companies/timeweb/articles/1059272/?utm_campaign=1059272&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/fe4/d88/552/fe4d885523b6fa7070b8b5d5c7186397.png" /><p>CSS «слушает» нас. Нет, <a href="https://www.snopes.com/fact-check/is-amazons-alexa-emitting-unprompted-creepy-laughing/">не в <em>буквальном смысле</em></a>. Суть в том, что в CSS появляется все больше псевдоклассов, которые позволяют реагировать на события JS без необходимости писать сам JS. Формально псевдоклассы отслеживают состояния, а не события, но порой они настолько похожи на обработчики событий, что разница становится почти незаметной (хотя в контексте CSS это не так уж важно).</p> <a href="https://habr.com/ru/articles/1059272/?utm_campaign=1059272&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 10 Aug 2026 08:05:19 GMT</pubDate>
      <dc:creator><![CDATA[aio350 (Timeweb Cloud)]]></dc:creator>
      
      <category>javascript</category><category>js</category><category>css</category><category>event</category><category>событие</category><category>timeweb_статьи_перевод</category><category>pseudo-class</category><category>псевдокласс</category><category>handler</category><category>обработчик</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[Сложные сайты на вайбкоде: четыре лендинга, два пути к «дорогим» эффектам и 3D-логотип из спрайтов]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/alpinadigital/articles/1066732/</guid>
      <link>https://habr.com/ru/companies/alpinadigital/articles/1066732/?utm_campaign=1066732&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/6c1/1ec/716/6c11ec716b7efa3c3bdd728cf81a4ef4.jpg" /><p><strong>TL;DR</strong></p><p>За последний год я собрал вайбкодингом не один десяток лендингов — для программ МФТИ, для своих проектов и на заказ. Разберу четыре самых показательных: Школу Техпреда, конференцию «Точка сборки», курс «ИИ Продакт-менеджмент» (<a href="http://aimipt.ru">aimipt.ru</a>) и один свой, личный — на нём эффекты раскачаны сильнее всего.</p><p>У всех четырёх есть слой «дорогих» визуальных эффектов: интерактивная вода на WebGL-шейдере с освещением, 3D-логотип Физтеха из тысяч частиц-спрайтов, живая 3D-башня из кубов, облако частиц, которое морфит форму по скроллу.</p><p>К этому слою я пришёл двумя разными путями. На «Точке сборки» эффекты написаны руками на чистом WebGL — ноль анимационных библиотек. На остальных работает свой движок на Three.js: вынесен отдельными файлами, переиспользуется между сайтами и откатывается на 2D-canvas, если CDN не ответит.</p><p>Ниже — оба пути на реальном коде, цепочка инструментов от дизайн-системы до прода и грабли, на которые я наступил.</p> <a href="https://habr.com/ru/articles/1066732/?utm_campaign=1066732&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 05 Aug 2026 01:23:56 GMT</pubDate>
      <dc:creator><![CDATA[hamidun (Alpina Digital)]]></dc:creator>
      
      <category><![CDATA[вайбкодинг]]></category><category><![CDATA[WebGL]]></category><category><![CDATA[Three.js]]></category><category><![CDATA[шейдеры]]></category><category><![CDATA[лендинг]]></category><category><![CDATA[Claude Code]]></category><category><![CDATA[фронтенд]]></category><category><![CDATA[GLSL]]></category><category><![CDATA[анимация]]></category><category><![CDATA[AI-агенты]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как верстали 15 лет назад]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/ruvds/articles/1060630/</guid>
      <link>https://habr.com/ru/companies/ruvds/articles/1060630/?utm_campaign=1060630&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/f6c/611/dd5/f6c611dd5aba3b9c13130672b5283206.png" /><p>Хабр, привет.</p><p>Я сейчас часто обмениваюсь книгами. И так получилось, что мне попалась книга по вёрстке 2004 года. Мне было забавно почитать о техниках, которые были в то время. Я даже вдохновился написать статью. Вот я и здесь.</p><p>Сегодня я расскажу о техниках, которые были пятнадцать лет назад. Я как раз в это время начал работать верстальщиком. Уверен, что большинство из вас их никогда не видели. А старички смахнут скупую слезу и вспомнят время, когда были моложе.</p><p>Давайте посмотрим, что я вам подготовил.</p> <a href="https://habr.com/ru/articles/1060630/?utm_campaign=1060630&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 28 Jul 2026 13:01:42 GMT</pubDate>
      <dc:creator><![CDATA[melnik909 (RUVDS.com)]]></dc:creator>
      
      <category><![CDATA[css]]></category><category><![CDATA[html]]></category><category><![CDATA[вёрстка сайтов]]></category><category><![CDATA[ruvds_статьи]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Текстовая MMO RPG на движке форума Invision 5 с PWA приложением и кубиками]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1062240/</guid>
      <link>https://habr.com/ru/articles/1062240/?utm_campaign=1062240&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/8b6/7ac/0a6/8b67ac0a6c775833664006eca86c3254.jpg" /><p>Привет, Хабр! Текстовые браузерные MMO вроде старой «Тюряги онлайн»&nbsp;— жанр древний, но&nbsp;до&nbsp;сих пор живой, особенно среди фанатов олдскульных вселенных. В&nbsp;сообществах готоманов нашу игру уже смело окрестили «Тюрягой онлайн 2.0», и сходство тут прямое: и там, и там на&nbsp;бэкенде крутится суровый выживач на&nbsp;зоне. Только в&nbsp;Тюряге ты обычный зэк на&nbsp;нарах, а&nbsp;Миненталь&nbsp;— это колония под&nbsp;магическим барьером, где каждый кусок мяса падальщика на&nbsp;счету. Игрок&nbsp;либо ходит на&nbsp;охоту и пашет на&nbsp;фракцию,&nbsp;либо&nbsp;быстро отбросит коньки в&nbsp;канаве от&nbsp;голода или&nbsp;первого&nbsp;же каторжника. </p><p>Когда мы на&nbsp;Бесте с&nbsp;нашими технарями задумали сделать эту тактическую RPG «Путь Героя», пришлось выбирать платформу для&nbsp;серверной части. В&nbsp;итоге мы решили использовать наш старый форум ещё времён 2004&nbsp;года, обновив его с&nbsp;древней версии 3.4.6&nbsp;до&nbsp;свежего каркаса IPS 5. Из&nbsp;коробки у&nbsp;него есть всё, что&nbsp;нужно: нормальная система прав, готовая база пользователей и вменяемое API. Но&nbsp;чтобы превратить обычный форум в&nbsp;нормальную игру, пришлось знатно поковыряться под&nbsp;капотом и в&nbsp;базах. Первым делом нужно&nbsp;было решить две главные проблемы: как&nbsp;упаковать всё это дело в&nbsp;легкое мобильное приложение и раз и навсегда отвадить игроков от&nbsp;читерства с&nbsp;кубиками.</p> <a href="https://habr.com/ru/articles/1062240/?utm_campaign=1062240&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 23 Jul 2026 11:20:17 GMT</pubDate>
      <dc:creator><![CDATA[LithiumBest]]></dc:creator>
      
      <category><![CDATA[Invision Community 5]]></category><category><![CDATA[Progressive Web Application]]></category><category><![CDATA[Web Game Development]]></category><category><![CDATA[мобильная игра в браузере]]></category><category><![CDATA[кроссплатформенная разработка]]></category><category><![CDATA[Миненталь]]></category><category><![CDATA[Готика]]></category><category><![CDATA[Gothic]]></category><category><![CDATA[оптимизация производительности]]></category><category><![CDATA[экономия времени разработки]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Вы не знаете CSS. Мои вопросы о CSS с ответами. Версия 2026 года]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/ruvds/articles/1057086/</guid>
      <link>https://habr.com/ru/companies/ruvds/articles/1057086/?utm_campaign=1057086&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/576/5bc/5ae/5765bc5aed9c77cc92f73f4269038b94.png" /><p>Хабр, привет!</p><p>В прошлом месяце я опубликовал <a href="https://habr.com/ru/companies/ruvds/articles/1045072/">статью с вопросами о HTML</a>. Неожиданно для меня, она понравилась многим и стала одной из самых популярных за последнее время. Раз так получилось, то почему бы не сделать то же самое про CSS? Вот я и пришёл со своими вопросами и, конечно, ответами.</p><p>Моя цель — это развлечь вас. Хотя вопросы связаны с практикой, на них не так просто ответить. Если вы не сможете ответить на большинство, то ничего страшного. Но, возможно, они покажутся вам легкотнёй.</p><p>Давайте посмотрим, что я вам подготовил.</p> <a href="https://habr.com/ru/articles/1057086/?utm_campaign=1057086&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 14 Jul 2026 15:02:03 GMT</pubDate>
      <dc:creator><![CDATA[melnik909 (RUVDS.com)]]></dc:creator>
      
      <category><![CDATA[css]]></category><category><![CDATA[ruvds_статьи]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Создание цветовой темы с помощью light-dark(), contrast-color() и запросов стилей]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1056342/</guid>
      <link>https://habr.com/ru/articles/1056342/?utm_campaign=1056342&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/492/42b/56f/49242b56fde78a791afcdac7e1f786ed.png" /><p>В этом небольшом туториале я покажу вам, как с помощью нескольких новых возможностей CSS можно создать действительно прикольную динамичную систему тематизации (theming). Эта техника позволяет создавать тематизированные компоненты с тенями в светлом режиме и светящимися границами в темном режиме, с текстом, который всегда остается читаемым, независимо от динамичного цвета его фона. Все на CSS. Доступно во всех современных браузерах с мая 2026 года.</p> <a href="https://habr.com/ru/articles/1056342/?utm_campaign=1056342&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 09 Jul 2026 06:36:51 GMT</pubDate>
      <dc:creator><![CDATA[aio350]]></dc:creator>
      
      <category>css</category><category>webdev</category><category>theme</category><category>theming</category><category>color</category><category>тема</category><category>тематизация</category><category>цвет</category><category>new features</category><category>новые возможности</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[backdrop-filter: blur() — как он работает и как его правильно использовать]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1057226/</guid>
      <link>https://habr.com/ru/articles/1057226/?utm_campaign=1057226&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/b47/c7c/ee0/b47c7cee0ee7a87e406dbb7375fcd419.png" /><p>Cвойство backdrop-filter: blur() под капотом работает совсем не так, как интуитивно кажется, и это приводит к багам, которые нелегко воспроизвести и довольно сложно объяснить. Потому давайте разбираться.</p> <a href="https://habr.com/ru/articles/1057226/?utm_campaign=1057226&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 08 Jul 2026 21:12:07 GMT</pubDate>
      <dc:creator><![CDATA[VolhaIvanova]]></dc:creator>
      
      <category><![CDATA[web development]]></category><category><![CDATA[css]]></category><category><![CDATA[blur]]></category><category><![CDATA[gpu]]></category><category><![CDATA[backdrop]]></category><category><![CDATA[composition]]></category><category><![CDATA[rendering]]></category><category><![CDATA[painting]]></category><category><![CDATA[perfomance]]></category><category><![CDATA[layout]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Пожалуйста, используйте эти CSS медиа-фукции]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/ruvds/articles/1054454/</guid>
      <link>https://habr.com/ru/companies/ruvds/articles/1054454/?utm_campaign=1054454&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/881/358/caf/881358cafeb495bc763b9f25850139c2.png" /><p>Привет, Хабр!</p><p>Я начал использовать медиа-запросы ещё в 2011 году. Помню, как на работе руководитель подарил мне книгу Итана Маркотта «Отзывчивый веб-дизайн». В тот день я даже не работал, а сел читать её. В конце дня я сделал свою первую реализацию адаптивной вёрстки.</p><p>С того времени мне всегда интересно следить за появлением новых возможностей в CSS, которые помогают стилизовать приложение в зависимости от параметров устройства. Это позволяет мне принимать более лучшие решения по адаптации интерфейсов под требования пользователей.</p><p>К моему сожалению, я часто вижу, что большинство из этих возможностей неизвестны фронтендерам. Я хочу это попытаться исправить. Сегодня расскажу вам о пяти медиа-функциях, которые можно очень легко внедрить в существующий проект.</p><p>Давайте посмотрим, что я вам подготовил.</p> <a href="https://habr.com/ru/articles/1054454/?utm_campaign=1054454&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 07 Jul 2026 16:01:56 GMT</pubDate>
      <dc:creator><![CDATA[melnik909 (RUVDS.com)]]></dc:creator>
      
      <category><![CDATA[css]]></category><category><![CDATA[ruvds_статьи]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Виртуализация адаптивной Grid разметки]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1054576/</guid>
      <link>https://habr.com/ru/articles/1054576/?utm_campaign=1054576&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/996/772/220/996772220ef384fec54143584f12f575.gif" /><p>В этой статье я хочу поделиться своим подходом к решению задачи виртуализации списка элементов неизвестной высоты. Популярные библиотеки решают эту задачу с помощью приблизительных оценочных размеров с последующими замерами и корректировкой. Я хочу описать метод, основанный на привязке индексов к положению скроллбара, который позволяет достаточно точно позиционировать видимый диапазон элементов, при этом, не зная даже приблизительных размеров всех предыдущих элементов, используя только простую математику и родные механизмы позиционирования и разметки браузера.</p><p>С примерами работы на TypeScript, React, Vue и Angular можно ознакомиться на домашней странице проекта <a href="https://itihon.github.io/layout-virtual/" rel="noopener noreferrer nofollow">Layout Virtual</a>.</p><p>Репозиторий с проектом <a href="https://github.com/itihon/layout-virtual" rel="noopener noreferrer nofollow">тут</a>.</p> <a href="https://habr.com/ru/articles/1054576/?utm_campaign=1054576&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 02 Jul 2026 13:04:28 GMT</pubDate>
      <dc:creator><![CDATA[itihon]]></dc:creator>
      
      <category><![CDATA[виртуализация]]></category><category><![CDATA[адаптивная разметка]]></category><category><![CDATA[grid]]></category><category><![CDATA[список]]></category><category><![CDATA[библиотека]]></category><category><![CDATA[алгоритм]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Baseline: май 2026]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1053360/</guid>
      <link>https://habr.com/ru/articles/1053360/?utm_campaign=1053360&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/0c2/f9e/7a8/0c2f9e7a815e248cb6d4b80ebd296807.png" /><p>Уже почти июнь подходит к концу, а я так и не выпустил эту статью. Исправляюсь.</p><p>Обзор на браузерные API, которые стали <strong>Widely available</strong> в мае 2026. Раз в месяц я буду вам напоминать, что вы уже можете использовать в проде.</p><p>Каждый месяц выходят новые CSS-свойства, HTML-атрибуты, JavaScript-методы и WebAPI, но применять в проде мы их конечно же не будем. 2.5 года назад также каждый месяц выходили новые фичи в браузере, а вот их уже пора начинать применять.<br></p> <a href="https://habr.com/ru/articles/1053360/?utm_campaign=1053360&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Узнать, что можно применять в проде</a>]]></description>
      
      <pubDate>Mon, 29 Jun 2026 11:46:40 GMT</pubDate>
      <dc:creator><![CDATA[nikolayshabalin]]></dc:creator>
      
      <category><![CDATA[baseline]]></category><category><![CDATA[widely available]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как построить свою оргмодель, свое хобби-приложение и не потерять месяц жизни]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1053212/</guid>
      <link>https://habr.com/ru/articles/1053212/?utm_campaign=1053212&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/59c/a1f/a64/59ca1fa647a9a3c8370b647b08db861a.png" /><p>Друзья, сегодня отличный день, чтобы сделать свою первую статью на Хабре, который я читаю многие годы. Сегодня я успешно запустил в прод свой первый полноценный хобби (пет) проект. </p><p>Два года назад работая с замечательной командой консультантов института Адизеса, мы столкнулись с проблемой наличия бесплатного гибкого софта для построения орг.моделей. Быстро собрать подразделения и функции, перетащить ветки в новое место, покрасить и так что бы не рисовать линии и квадратики, а только сосредоточиться на самой модели, потому что все это происходит во время страт. сессии, где сидят руководители тех самых подразделений. А подразделений и веток много, сценариев много – кого-то временно скрыть или свернуть, кого-то скопировать как типовую функцию в другие ветки. Все делать нужно быстро и на большом экране и не всегда в логике HR штатной модели (а точнее всегда не в ней). Миро, Фигма и прочие конструкторы не подходят по той или иной причине.</p><p>Так у меня родилась идея приложения <strong>ORGFORMAT</strong>. Но только спустя два года я нашел время, чтобы ее реализовать.</p><p>Но мало сделать приложение, не менее важным было сделать легкий обмен сформированными моделями, возможность их просмотра и доработки участниками. А еще лучше часть рутины по низшим ветвям отдать ИИ на проверку или доработку. Так родилась еще одна идея – создать формат моделей, который говорит и на языке программы (data-to-diagram), и на языке человека, и на языке ИИ, и не зашит никакими лицензиями и нечитаемым кодом. То есть открытый формат. Было важно, чтобы формат работал с иерархическими моделями и не позволял никакие кросс-связи буквально, что бы пользователи не творили хаос между ветвями. Только прямая естественная потоковая иерархия и прямая ответственность. Но и признаки блокам нужны, так как не все способна отразить иерархия - так пришла идея тегов, как гибкая система реквизитов (а во многом и, по сути, мини база данных, при необходимости. Лайфхак!). Так же очень хотелось, что бы модель не только строила связи, но и по ним могла что-то посчитать - конечно же нужна универсальная ценность (value), но не ограничивать ее только одним типом, а дать свободно выбирать, что считать и в каких единицах схмерения – бюджет, время, единицы товара или количество населения страны. И это тоже нам надо! Для всего это отлично подошел хорошо известный ИТ-ишникам формат <strong><a href="https://en.wikipedia.org/wiki/YAML" rel="noopener noreferrer nofollow">YAML</a></strong>, который для людей открыт, как текст, а для машины, по сути, четкая структура данных. Вот и отлично, я собрал на его базе прототип структуры и необходимых атрибутов. И дал короткое название .orgf. Сгенерировал несколько моделей через ИИ и дал проверить результат другой ИИ – результат великолепный. ИИ легко переводила любые данные в этот формат, хоть штатное расписание из Екселя, хоть выгруженные в PDF структуры функций и процессов. Прототип открытого формата ORGF себя полностью оправдал! Так получилось, что модели и формат появились раньше самого редактора моделей (приложения). Ну что же есть понятный запрос, теперь надо было сделать под него софт!</p> <a href="https://habr.com/ru/articles/1053212/?utm_campaign=1053212&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 29 Jun 2026 08:37:53 GMT</pubDate>
      <dc:creator><![CDATA[Pulso]]></dc:creator>
      
      <category><![CDATA[диаграммы]]></category><category><![CDATA[pet-проекты]]></category><category><![CDATA[charts]]></category><category><![CDATA[open-source]]></category><category><![CDATA[hris]]></category><category><![CDATA[miro]]></category><category><![CDATA[figma]]></category><category><![CDATA[yaml]]></category>
    </item>
  

  

  

	
  

  

  

    

  

  

	
  

  
    <item>
      <title><![CDATA[[Перевод] Представляем MDN MCP-сервер]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1049274/</guid>
      <link>https://habr.com/ru/articles/1049274/?utm_campaign=1049274&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/597/3ca/961/5973ca961240b6ca78c4db9f2f4af0ef.png" /><p>Мы рады объявить о релизе <a href="https://developer.mozilla.org/en-US/mcp" rel="noopener noreferrer nofollow">MDN MCP-сервера</a>. <strong>MCP (Model Context Protocol)</strong> — это открытый стандарт, который позволяет ИИ-инструментам подключаться к внешним источникам данных. MDN MCP-сервер использует этот протокол, чтобы доставлять документацию MDN и данные о совместимости браузеров прямо в твой редактор кода или IDE.</p> <a href="https://habr.com/ru/articles/1049274/?utm_campaign=1049274&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Thu, 18 Jun 2026 18:23:07 GMT</pubDate>
      <dc:creator><![CDATA[qmzik]]></dc:creator>
      
      <category>frontend</category><category>codex</category><category>claude-code</category><category>mcp</category><category>mdn</category><category>ai</category><category>веб-разработка</category><category>llm</category>
    </item>
  

  

    
    <item>
      <title><![CDATA[Анатомия «живой» кнопки: 5 слоёв, GPU-анимация и трюки с CSS]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1047114/</guid>
      <link>https://habr.com/ru/articles/1047114/?utm_campaign=1047114&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/f54/d2d/95a/f54d2d95a34df9b83f4383690d99c201.png" /><p>Хочу поделиться кейсом, когда разработка типичного tab-switcher  превращается в настоящее архитектурное решение.</p> <a href="https://habr.com/ru/articles/1047114/?utm_campaign=1047114&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sat, 13 Jun 2026 13:31:57 GMT</pubDate>
      <dc:creator><![CDATA[VolhaIvanova]]></dc:creator>
      
      <category><![CDATA[css]]></category><category><![CDATA[frontend]]></category><category><![CDATA[ui]]></category><category><![CDATA[ui-components]]></category><category><![CDATA[css-animation]]></category><category><![CDATA[gpu-animation]]></category><category><![CDATA[mix-blend-mode]]></category><category><![CDATA[9-slice]]></category><category><![CDATA[pseudo-elements]]></category><category><![CDATA[webdev]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Я устал от Electron, Tauri и Neutralino — и случайно сделал… лучше?]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1046187/</guid>
      <link>https://habr.com/ru/articles/1046187/?utm_campaign=1046187&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/a57/8bc/88b/a578bc88bb41e63f9705f727488b1a09.png" /><p>Webnative - фреймворк для разработки нативных приложений на языках веба с использованием нативных webview компонентов.</p> <a href="https://habr.com/ru/articles/1046187/?utm_campaign=1046187&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 10 Jun 2026 16:10:34 GMT</pubDate>
      <dc:creator><![CDATA[mindw1n]]></dc:creator>
      
      <category><![CDATA[css]]></category><category><![CDATA[nodejs]]></category><category><![CDATA[javascript]]></category><category><![CDATA[typescript]]></category><category><![CDATA[native]]></category><category><![CDATA[linux]]></category><category><![CDATA[windows]]></category><category><![CDATA[electron]]></category><category><![CDATA[tauri]]></category><category><![CDATA[neutralinojs]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Шпаргалка BA: как не потеряться на встрече со стейкхолдером и командой]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1045874/</guid>
      <link>https://habr.com/ru/articles/1045874/?utm_campaign=1045874&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/960/534/cc4/960534cc4c78a4aaa60ec3d53eaea5ef.png" /><p>Когда я первый раз пришёл на встречу со стейкхолдером в роли аналитика, я честно не знал с чего начать. Вопросы в голове были — но не в том порядке. Половину забыл по ходу. Вышел с ощущением что поговорили хорошо, но непонятно о чём.</p><p>Я поискал готовые шаблоны. Нашёл Excel-таблицы, PDF-чеклисты и десятки статей с советами. Ни одно из этого не открывалось быстро прямо на встрече и не помогало думать в реальном времени.</p><p>Поэтому я сделал&nbsp;<strong>BA Toolkit</strong>&nbsp;— набор интерактивных инструментов для структурирования BA-встреч. Открываешь в браузере, идёшь по шагам, фиксируешь всё на месте.</p><p>Три месяца спустя — три инструмента в продакшене, открытый код на GitHub и эта статья.</p> <a href="https://habr.com/ru/articles/1045874/?utm_campaign=1045874&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Wed, 10 Jun 2026 09:30:26 GMT</pubDate>
      <dc:creator><![CDATA[DenisSadykov]]></dc:creator>
      
      <category><![CDATA[Бизнес-аналитик]]></category><category><![CDATA[управление требованиями]]></category><category><![CDATA[сбор требований]]></category><category><![CDATA[управление проектами]]></category><category><![CDATA[инструменты аналитика]]></category><category><![CDATA[открытый код]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Устаревшие CSS-техники, от которых уже можно отказаться]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/ruvds/articles/1040320/</guid>
      <link>https://habr.com/ru/companies/ruvds/articles/1040320/?utm_campaign=1040320&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/0b2/ebc/e67/0b2ebce67bd467cf22cb94e8347e0002.png" /><p>Привет, Хабр!</p><p>В общении с коллегами я всё чаще замечаю, что многие не знают о последних возможностях CSS. Кто-то настолько занят повседневными задачами, что просто не успевает следить за новинками. Кому-то это не особенно интересно. А кто-то уже много лет использует знакомые подходы и не видит причин что-то менять.</p><p>Как человеку, который является поклонником CSS, мне немного грустно это наблюдать. Столько интересных возможностей остаётся без внимания! А ведь с их помощью код нередко становится короче, надёжнее и проще для понимания. Поэтому я собрал несколько примеров популярных решений прошлого и переписал их, используя новинки CSS, вышедшие за последние несколько лет.</p><p>Давайте посмотрим, что у меня получилось.</p> <a href="https://habr.com/ru/articles/1040320/?utm_campaign=1040320&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 09 Jun 2026 09:01:01 GMT</pubDate>
      <dc:creator><![CDATA[melnik909 (RUVDS.com)]]></dc:creator>
      
      <category><![CDATA[css]]></category><category><![CDATA[вёрстка]]></category><category><![CDATA[создание сайтов]]></category><category><![CDATA[html]]></category><category><![CDATA[ruvds_статьи]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Как выжать из HTML/CSS динамику, или создание IRC клиента без JS]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/timeweb/articles/1036526/</guid>
      <link>https://habr.com/ru/companies/timeweb/articles/1036526/?utm_campaign=1036526&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/cbe/c85/9b3/cbec859b34b1efbdcb93b53bf2158c51.png" /><p>Когда возникает идея создать браузерный IRC-клиент без JavaScript, приходится сталкиваться с классической проблемой фронтенда: все насколько привыкли гнать динамику через JavaScript, что перестали замечать возможности HTML/CSS с щепоткой серверной магии по реализации многих фич. HTTP Streaming существует с давних времён, а CSS эволюционировал настолько, что может справиться с логикой состояний — но мы упорно продолжаем грузить мегабайты JavaScript (и иногда даже WebAssembly) для решений, которые вполне можно реализовать иначе.</p><p>Идея создать IRC клиент без JavaScript не совсем нова (хоть это и выяснилось уже после создания такого :) ). Ещё в нулевых появился <strong>CGI:IRC</strong> — настоящий IRC клиент, который может работать полностью без JavaScript, позволяя людям общаться в реальном времени через браузер, даже если JavaScript по каким-то причинам не работал. Но это было в эру table-layouts, и когда CSS не был так развит, как сейчас. Сегодня возможностей больше, и мы воспользуемся ими, чтобы навернуть функциональность, которая не видана CGI:IRC.</p><p>Результат можно глянуть (хоть и с дополнительной стилизацией и изменениями, которые не так важны для статьи) <a href="https://cssonlysolutions.sytes.net/">здесь</a>, а ещё на <a href="https://github.com/j4niwzis/web_irc">GitHub</a></p> <a href="https://habr.com/ru/articles/1036526/?utm_campaign=1036526&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 08 Jun 2026 08:05:21 GMT</pubDate>
      <dc:creator><![CDATA[j4niwzis (Timeweb Cloud)]]></dc:creator>
      
      <category><![CDATA[declarative shadow dom]]></category><category><![CDATA[irc]]></category><category><![CDATA[no-js]]></category><category><![CDATA[html]]></category><category><![CDATA[css]]></category><category><![CDATA[http-streaming]]></category><category><![CDATA[css-логика]]></category><category><![CDATA[timeweb_статьи]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Lighthouse 100 / 100: как мы повесили GTM, GA4, Яндекс.Метрику и Clarity на статический сайт — и не уронили скорость]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1042228/</guid>
      <link>https://habr.com/ru/articles/1042228/?utm_campaign=1042228&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/951/e8c/c03/951e8cc030cf0b6fd55b385124bc0adc.webp" /><p>Когда маркетологи хотят всё: сырые данные в GA4, запись сессий в Метрике, хитмапы в Clarity и при этом «Lighthouse 100» в PageSpeed Insights — приходится изобретать. Расскажу, как мы это сделали на небольшом проекте и во что это обошлось по времени и нервам.</p><p>Проект — нишевый агрегатор российских хостинг-провайдеров. Более 120 страниц в sitemap, 31 статья, десятки категорий услуг, живые цены, сравнения. Стек: Astro 6 + Strapi 5 + Tailwind 4, плюс Partytown, PostgreSQL, Nginx и обычный VPS на Ubuntu. Сайт собирается в статику во время билда, никакого SSR в рантайме нет.</p><p>На desktop — Lighthouse 100 / 100 / 100 / 100. На mobile с жёстким throttling (4x slow CPU) — 99 / 100 / 100 / 100. В реальных условиях и по Chrome UX Report — 100 везде. LCP на desktop — 0,5 секунды, на mobile throttled — 1,7 секунды. CLS — ноль. TBT — 10 ms на мобильном и 0 ms на десктопе.</p> <a href="https://habr.com/ru/articles/1042228/?utm_campaign=1042228&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Mon, 01 Jun 2026 13:18:51 GMT</pubDate>
      <dc:creator><![CDATA[sarutobi4]]></dc:creator>
      
      <category><![CDATA[Astro]]></category><category><![CDATA[Strapi]]></category><category><![CDATA[Tailwind CSS]]></category><category><![CDATA[Partytown]]></category><category><![CDATA[Lighthouse]]></category><category><![CDATA[Core Web Vitals]]></category><category><![CDATA[Web Worker]]></category><category><![CDATA[GTM]]></category><category><![CDATA[performance]]></category><category><![CDATA[SSG]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Я сделал Vite-плагин, который сохраняет изменения CSS прямо в исходники]]></title>
      <guid isPermaLink="true">https://habr.com/ru/articles/1041454/</guid>
      <link>https://habr.com/ru/articles/1041454/?utm_campaign=1041454&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/ffc/37c/e79/ffc37ce796fa1557dc2ea23a5e40f79a.png" /><p>Каждый раз, когда я хотел поправить отступ или цвет в процессе разработки, я делал одно и то же:</p><p>открыл DevTools → нашёл элемент → поменял значение → понравилось → скопировал → переключился в редактор → нашёл файл → вставил.</p><p>Это семь шагов ради однострочного изменения. Я сделал <a href="https://github.com/Artyx71/livestylesync" rel="noopener noreferrer nofollow">LiveStyleSync</a>, чтобы это был один шаг.</p> <a href="https://habr.com/ru/articles/1041454/?utm_campaign=1041454&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Sat, 30 May 2026 09:23:18 GMT</pubDate>
      <dc:creator><![CDATA[Artyx71]]></dc:creator>
      
      <category><![CDATA[vite]]></category><category><![CDATA[css]]></category><category><![CDATA[scss]]></category><category><![CDATA[devtools]]></category><category><![CDATA[open-source]]></category><category><![CDATA[typescript]]></category><category><![CDATA[preact]]></category>
    </item>
  

  

  

	
  

  

  

    
    <item>
      <title><![CDATA[Что новенького есть в CSS в 2026 году?]]></title>
      <guid isPermaLink="true">https://habr.com/ru/companies/ruvds/articles/1036938/</guid>
      <link>https://habr.com/ru/companies/ruvds/articles/1036938/?utm_campaign=1036938&amp;utm_source=habrahabr&amp;utm_medium=rss</link>
      <description><![CDATA[<img src="https://habrastorage.org/getpro/habr/upload_files/e18/2fd/797/e182fd797d497bf01a18a215ecb9d113.png" /><p>Привет, Хабр!</p><p>Мне всегда нравилось следить за тем, как развивается CSS. Стараюсь следить за новыми возможностями, чтобы не пропускать что-то действительно важное. И недавно подумал: «А почему бы не рассказать о них читателям Хабра?» Так я и оказался здесь.</p><p>Я составил список новинок, которые кажутся мне особенно интересными и важными. Они всё ещё экспериментальные. Браузеры только в последние месяцы начали поддерживать их. Так что это суперсвежие штуки.</p><p>Давайте посмотрим, что я вам подготовил.</p> <a href="https://habr.com/ru/articles/1036938/?utm_campaign=1036938&amp;utm_source=habrahabr&amp;utm_medium=rss#habracut">Читать далее</a>]]></description>
      
      <pubDate>Tue, 26 May 2026 09:02:07 GMT</pubDate>
      <dc:creator><![CDATA[melnik909 (RUVDS.com)]]></dc:creator>
      
      <category><![CDATA[css]]></category><category><![CDATA[вёрстка]]></category><category><![CDATA[новинки]]></category><category><![CDATA[frontend]]></category><category><![CDATA[ruvds_статьи]]></category>
    </item>
  

  

  

	
  

  

  

      

      

      

    
  </channel>
</rss>
