Почему глассморфизм в вебе выглядит как мыло: написал генератор «жидкого» стекла и выложил в Open Source
Каждый фронтендер или UI-дизайнер хоть раз пытался повторить эффект матового стекла в стиле iOS или macOS.
В макетах Figma все выглядит кинематографично: сочные размытые цвета, тонкая светящаяся кромка, ощущение тяжелого физического стекла. Но как только верстальщик пишет в коде классический backdrop-filter: blur(20px);, получается плоское серое мыло.
Причина простая: реальное стекло держится не только на размытии фона. Чтобы оно казалось объемным, нужны правильный оттенок с прозрачностью, подкрутка насыщенности подложки, внутренняя засветка по краям, глубинная тень и оптическое преломление по граням.
Подбирать эти параметры наугад через инспектор браузера, постоянно перезагружая страницу, утомляет. Поэтому я собрал Liquid Glass Studio: визуальный инструмент для настройки физического стекла в реальном времени с экспортом готового кода.
Без регистрации, без зависимостей и сборщиков, полностью в браузере.
Что отличает настоящее стекло от дешевой плашки
Пока я выводил математику эффекта, выделилось четыре ключевых слоя, из которых собирается реалистичная карточка:
- Размытие и сатурация (backdrop-filter)Один только blur делает задний фон блеклым и грязным. Чтобы цвета сквозь стекло оставались сочными, размытие обязательно связывается с насыщением: saturate(180%).
- Физическое тело стекла (Tint)Полупрозрачный белый или темный цвет с альфа-каналом от 0.05 до 0.2. Он задает плотность материала, но не должен перекрывать свет за ним.
- Фаска и грань света (Inset Shadows)Самый критичный момент, о котором почти все забывают. Стекло имеет толщину. Верхний край всегда ловит блик от источника света. В коде это делается через тонкую внутреннюю тень inset с белым полупрозрачным оттенком в 1 пиксель. Именно эта полоска делает элемент физическим, а не нарисованным.
- Преломление света на кромке (SVG Refraction)В Safari и Chrome есть экспериментальные возможности искажения через SVG displacement-фильтры. Если включить этот режим, свет по краям слегка искривляется, как в настоящей линзе.
Как устроен Liquid Glass Studio
Инструмент решает задачу за полминуты:
- Проверка на реальных компонентах. На панели можно переключать превью между тремя типовыми элементами: карточка контента, кнопка действия и навигационный бар.
- Дроп своего фона прямо в окно. Стекло не имеет смысла без контрастного фона. В студию можно перетащить скриншот своего реального проекта через Drag-and-Drop или просто нажать Ctrl+V. Картинка никуда не загружается на сервер и крутится только в памяти вашего браузера.
- Шесть стартовых пресетов. От чистого дока iOS и глубокого дымчатого стекла до неоновой кромки и розовой линзы. Можно взять за основу и докрутить ползунками под свой проект.
- Экспорт под любой стек. В один клик забирается чистый CSS со всеми свойствами, набор CSS-переменных для дизайн-системы, готовые утилитарные классы Tailwind CSS, SVG-фильтр преломления или CSS fallback для старых браузеров.
- Ссылка с сохранением состояния. Любую настроенную комбинацию можно скопировать кнопкой Share: все параметры упаковываются в URL, так что ссылку можно скинуть коллеге-дизайнеру или разработчику.
Под капотом
Проект написан на чистом Vanilla JS, CSS и HTML.
Здесь нет тяжелых фреймворков, сборщиков Vite или Webpack, нет сотен npm-пакетов. Если скачать репозиторий, его можно запустить локально командой python3 -m http.server или просто дважды кликнуть по файлу index.html.
Тесты запускаются через встроенный нативный тест-раннер Node.js без единой внешней зависимости.
Инструмент полностью бесплатный и открытый (лицензия MIT).
- Попробовать в браузере: https://hilsetapp.github.io/Liquid-glass-studio/
- Исходный код на GitHub: https://github.com/hilsetapp/Liquid-glass-studio
Пользуйтесь в своих проектах, делитесь пресетами в комментариях и пишите, каких настроек вам не хватает при верстке интерфейсов.