← Все статьи

Окна во фронтенде

Плавающая кнопка JustZix — капля из 3 букв с hover-состоянием, snap, попап-меню

Плавающая кнопка — это маленькая капля из 3 букв, которую ты видишь на каждой странице, где у JustZix есть активное правило. Это вход во весь UI JustZix — клик открывает попап с переключателями, drag позволяет переместить её, snap соединяет её с панелями действий. Визуально маленькая, но конденсирует много функциональности. Эта статья раскрывает её изнутри.

Метка из 3 букв по папке

У каждой папки в JustZix (главная единица группировки правил) есть необязательная иконка — максимум 3 символа, автоматически в ВЕРХНЕМ РЕГИСТРЕ. Плавающая кнопка показывает иконку первой совпадающей папки (по префиксу URL):

folder.icon = 'qa'      → метка «QA»
folder.icon = 'dev'     → метка «DEV»
folder.icon = '🐛'      → метка «🐛» (emoji обрезан до 3 символов)
folder.icon = (пусто)   → метка «ZIX» (по умолчанию)

Идея: у опытного пользователя 5-10 папок по проектам, у каждой свой маркер из 3 букв. Видеть «QA» на плавающей кнопке означает, что QA-правила активны. Визуальная обратная связь до любого взаимодействия.

4 визуальных состояния — цвет + прозрачность

СостояниеCSS-классКогдаВид
jz-onвсе совпадающие папки включеныПолный цветАкцентный цвет папки (или teal по умолчанию)
jz-mixedнекоторые папки on, другие offПолупрозрачныйВыцветший — сигнализирует «внимание, не всё активно»
jz-offвсе совпадающие папки выключеныСерыйНизкий контраст — «неактивно»
jz-globally-offрасширение выключено глобальноКрасноватый / заметный«Всё расширение выключено»

Состояние обновляется автоматически при storage onChanged — переключи правило откуда угодно (страница опций, попап-виджет, контекстное меню Chrome) → плавающая кнопка сразу меняет вид.

Анатомия клика — попап-виджет

Левый клик на плавающей кнопке → открывается попап-виджет рядом с ней. Виджет содержит:

Клик вне закрывает попап (слушатель событий на уровне document). Клик по чекбоксу активирует setBarHidden / setCssPaneEnabled / setFolderEnabled — все сцеплены через Promise, чтобы избежать гонок.

Snap-соединения с панелями и panes

Плавающая кнопка участвует в snap-соединениях как псевдоэлемент с ID '__float'. Механика идентична panes:

  1. Перетащи плавающую кнопку рядом с панелью действий (≤20px) → snap, два элемента = группа
  2. Перетащи любой элемент группы → вся группа двигается вместе
  3. Правый клик на плавающей кнопке → контекстное меню с опциями «Отсоединить от X»

Сценарий: плавающая кнопка как «якорная ручка» для всей группы. Панели + Output Console защёлкнуты к плавающей кнопке → перетаскивание плавающей кнопки = двигаешь весь дашборд.

Правый клик = контекстное меню

Тот же механизм, что у панелей / CSS panes — контекстное меню по элементу. У плавающей кнопки есть:

Никакого шрифта/размера — плавающая кнопка фиксированного размера (32×32px). Там нет текста для кастомизации кроме метки из 3 букв (которая берётся из folder.icon).

Сценарий 1 — визуальный индикатор scope

У тебя 3 папки: «ALL» (работает везде), «GHB» (только github), «GMA» (только gmail). У каждой свой цвет (зелёный, чёрный, красный) и иконка из 3 букв. Посещаешь github.com → плавающая кнопка показывает чёрный «GHB». Посещаешь gmail.com → красный «GMA». Без проверки попап-виджета ты видишь scope.

Сценарий 2 — быстрая глобальная пауза

Звонок Skype, демонстрация новой фичи кому-то в продакшене, JustZix может мешать. Клик на плавающей кнопке → переключатель «Глобальная пауза» → расширение выключает все правила. После демо → кликни снова → включено. Без захода в chrome://extensions.

Сценарий 3 — скрытие по странице до перезагрузки

Правило «Force dark mode» совпадает и с сайтом твоего банка — у которого уже есть своя тёмная тема. Плавающая кнопка закрывает логотип банка. Правый клик на плавающей кнопке → «Скрыть до перезагрузки» → плавающая кнопка пропадает только в этой вкладке, до F5. Правила всё ещё работают, скрыт только UI.

Сценарий 4 — позиция по доменам

Позиция плавающей кнопки постоянна в chrome.storage.sync. По умолчанию снизу справа (якорь BR). Перетащи → сохрани → следующий визит на этот домен возвращает её туда, где ты оставил. Позиция по ID элемента, но все страницы разделяют ID '__float' — поэтому позиция глобальна между доменами. Если хочешь по странице → используй snap с панелью, которая специфична для scope.

Ловушки

Что делать дальше

Плавающая кнопка — это «точка входа» для всего UI JustZix — все остальные элементы (панели, panes) более контекстны. Смотри также:

Установи JustZix — плавающая кнопка появится сама, как только ты добавишь первое правило.

Оцени эту статью

Оценок пока нет — оцени первым.

Попробуй сам

Установи JustZix и вставь любой сниппет из этой статьи. Две минуты от нуля до работающего правила на всех твоих устройствах.

Получить JustZix

Возможности · Как это работает · Примеры · Применение