Нативная полка для чтения Fomantic UI с проверенными скомпилированными значениями темы, модулями выпадающего списка и рейтинга jQuery, явной поддержкой клавиатуры и постоянно сохраняемым локальным списком избранного.
Модули Fomantic UI 2.9.4 CSS с jQuery 3.7.1. Иллюстрации обложек и дополнительная поддержка клавиатуры для рейтинга созданы специально для этого примера. · Справочник по реализации
02
Справочник по дизайн-системе Fomantic UI
Скомпилированные значения по умолчанию Fomantic UI 2.9.4 проверены непосредственно. Это значения по умолчанию на уровне селекторов из темы на основе Less, а не придуманные токены CSS времени выполнения. Исходные цвета обложек и размеры приложения указаны отдельно.
Дизайн-система Fomantic UI: словарь CSS с модулями jQuery
Терминология CSS и модули jQuery
Fomantic UI сочетает семантические строки классов с необязательными модулями, поддерживающими состояние. В полке для чтения используются классы ui fluid card, ui teal button и ui basic label для оформления. Выпадающий список и рейтинги явно инициализируются через jQuery. Если загрузить только таблицу стилей, карточки отобразятся, но такое же интерактивное поведение не появится.
В этом примере зафиксированы версии Fomantic UI 2.9.4 и jQuery 3.7.1. Модуль transition подключается перед dropdown, а затем — rating. Лучше наглядно показать эти зависимости, чем вывести статичный ряд звёзд и назвать его примером интерактивной библиотеки. Исходный модуль приложения запускается только после появления разметки карточек.
Скомпилированные значения дизайн-системы Fomantic UI — это не имена токенов времени выполнения
Скомпилированные значения по умолчанию — не имена токенов во время выполнения
Тема Fomantic по умолчанию создаётся с помощью Less. Поэтому в справочнике приведены фактические значения селекторов, например цвет фона бирюзовой кнопки и радиус скругления карточки. В нём не придуман токен --fomantic-primary API, которого нет в скомпилированном пакете. Для более масштабного изменения темы используйте документированные файлы темы и переменных для сборки.
Именованный бирюзовый вариант отличается от основного синего. В этой полке для чтения действие добавления в список окрашено в бирюзовый цвет, а в оригинальных иллюстрациях обложек используются цвета бумаги, шалфея и тёплой глины. Эти обложки — иллюстрации приложения, а не официальные образцы палитры. Значения кнопки при наведении, фокусе и нажатии остаются нативными значениями Fomantic по умолчанию.
В дизайн-системе Fomantic UI размер rem в 14px меняет геометрию
Размер rem в четырнадцать пикселей меняет геометрию
В таблице стилей сайта по умолчанию для корневого элемента и текста основного содержимого задан размер 14px. Поэтому радиус кнопки и карточки 0.28571429rem составляет примерно четыре пикселя. Если перенести это значение rem в другой проект с корневым размером 16px, геометрия будет отличаться. Именно поэтому в справочнике указан размер корневого элемента, а не только радиус без пояснений.
Предпочтительный шрифт — Lato; в скомпилированный пакет включены локальные файлы шрифтов. В этом автономном предварительном просмотре ресурсы шрифтов встроены в документ, а не загружаются со стороннего сервиса веб-шрифтов. Исходный размер заголовка страницы переопределён и составляет 34px; описания карточек сохраняют компактный размер основного текста, но используют более свободную высоту строки, заданную для приложения.
Анатомия карточки в дизайн-системе Fomantic UI отделяет содержимое от действий
Структура карточки разделяет содержимое и действия
Каждая нативная карточка содержит декоративную обложку, блок с темой и описанием, отдельный блок с рейтингом и дополнительный блок с действием добавления в список. Карточки с автоматической шириной заполняют исходную сетку из трёх столбцов вместо использования ширины пакета по умолчанию — 290px. Для отдельных карточек убраны внешние поля, чтобы сетка обеспечивала равномерные промежутки.
У каждого задания своя цель для чтения: сравнить межбуквенный интервал, удалить элемент и изучить свободное пространство или понаблюдать за изменением цвета в зависимости от контекста. Иллюстрации обложек визуально поддерживают эти упражнения с помощью типографики, прямоугольников и наложения цветов. Это оригинальные задания, не одобренные издательством.
В дизайн-системе Fomantic UI используйте нативное поведение рейтинга для всех способов ввода
Вызывайте стандартное поведение рейтинга при любом способе ввода
Модуль рейтинга настроен с максимальным значением пять и параметром clearable true. onRate получает текущее числовое значение и синхронизирует видимый результат с доступным значением ползунка. Действие «Сбросить рейтинг» вызывает функцию модуля clear rating, а не удаляет активные классы вручную.
Нативный модуль звёзд поддерживает взаимодействие мышью, но в этом примере также добавлена явная поддержка клавиатуры. Контейнер рейтинга — ползунок с меткой и диапазоном от нуля до пяти. Стрелки изменяют значение на один шаг, Home сбрасывает рейтинг, а End устанавливает пять. Каждый способ ввода вызывает set rating, поэтому отображаемые звёзды и вывод приложения используют одно и то же состояние модуля.
Перейдите клавишей Tab к рейтингу и дважды нажмите стрелку вправо, чтобы выбрать два балла из пяти.
Нажмите End, чтобы выбрать пять баллов, затем Home, чтобы вернуть состояние «Рейтинг не задан».
Нажмите на звезду и убедитесь, что текстовый вывод и доступное значение обновляются одновременно.
Фильтрация в выпадающем списке дизайн-системы Fomantic UI сохраняет скрытое состояние
Фильтрация выпадающего списка сохраняет скрытое состояние
Выбор темы превращается в нативный выпадающий список Fomantic при инициализации dropdown. Функция обратного вызова onChange скрывает карточки, тема которых не совпадает с выбранным значением, и обновляет счётчик видимых заданий. Пункт «Все темы» восстанавливает всю полку. Для анимации меню компонент использует модуль transition.
Фильтрация не удаляет карточку и не создаёт её заново. Существующие рейтинги и состояние списка остаются привязанными к исходным записям, когда карточки скрыты. Это сделано намеренно: сузить полку — значит изменить её отображение, а не удалить прежний выбор пользователя. Поэтому в сводке может упоминаться элемент, скрытый текущим фильтром.
В дизайн-системе Fomantic UI добавление в список не зависит от рейтинга
Список избранного не зависит от оценки
Рейтинг показывает интерес по шкале от нуля до пяти, а добавление в список — отдельное решение да или нет. Пользователь может сохранить задание для обсуждения, ещё не выставив ему оценку. Кнопка добавления в список сообщает о выбранном состоянии через aria-pressed и меняет подписи «Добавить» и «Удалить». Сводка получает названия из Set, используя стабильные идентификаторы тем.
Область статуса описывает выбранные задания, не утверждая, что коллекция сохранена на удалённом сервере. После перезагрузки браузера данные этого примера очищаются. Для общего списка чтения в реальном приложении понадобятся постоянное хранение данных, идентификация пользователей и обработка конфликтов; эти возможности не появляются от добавления класса карточке.
В дизайн-системе Fomantic UI числовое значение важно и помимо декоративных звёзд
Числовое значение важно и помимо декоративных звёзд
Звёздочки скрыты от вспомогательных технологий, поскольку родительский ползунок сообщает числовое значение и метку. Видимое значение «Рейтинг не задан» или дробный результат передаёт ту же информацию, не заставляя пользователя считать цветные значки. Обводка focus-visible показывает, что ползунок активен, а кнопка «Сбросить» возвращает фокус на этот элемент управления.
Формы на обложках книг также служат украшением. Настоящие название задания, длительность и описание остаются текстом внутри карточки. На узких экранах карточки располагаются в один столбец; исходная контрольная точка — 760px. В примере сбрасывается высота области просмотра, заданная для body в скомпилированных стилях, и отключается скрытие горизонтального переполнения, чтобы при встраивании высота соответствовала фактической высоте содержимого и не маскировала дефекты макета.
Передавайте текущее число и текстом, и через доступное значение.
Используйте нативные кнопки для сброса рейтинга и изменения списка.
Сохраняйте метки и полные описания при переходе сетки к одному столбцу.
В дизайн-системе Fomantic UI подключайте шрифты рядом с таблицами стилей или включайте их в сборку
Поставляйте шрифты вместе со стилями или включайте их в сборку
Для обычного проекта скопируйте весь каталог fomantic-ui-css, а не извлекайте semantic.css, забывая о каталоге themes. В скомпилированных стилях используются относительные пути к файлам шрифтов Lato и иконок. Приведённая ниже настройка сохраняет эти пути и загружает jQuery до модулей пакета.
В локальном предварительном просмотре используются только необходимые стили и сценарии компонентов, а затем указанные в них ресурсы встраиваются в единый документ. Внешние шрифты не загружаются. В производственных сборщиках эти ресурсы могут обрабатываться иначе, но пути к шрифтам и порядок подключения модулей всё равно нужно проверить на готовой странице, а не считать правильными лишь потому, что npm install завершился успешно.
Значение height:100% по умолчанию в собранном сайте сбрасывается на auto для встраивания.
Переполнение body не используется для сокрытия ошибок вёрстки.
04
Настройка агента дизайн-системы Fomantic UI
Отправная точка для реализации
Проверено с Fomantic UI 2.9.4 и jQuery 3.7.1. В автономном примере встроены необходимые файлы шрифтов; при обычной настройке сохраняются пути относительно пакета. Обёртка HTML содержит всю разметку body; сохраните предоставленные примеры взаимодействия и CSS под указанными здесь именами файлов.
html
<!-- npm install [email protected][email protected] -->
<!-- Copy node_modules/fomantic-ui-css into public/vendor/fomantic-ui-css. -->
<!-- Copy node_modules/jquery/dist/jquery.min.js into public/vendor/jquery.min.js. -->
<link rel="stylesheet" href="/vendor/fomantic-ui-css/semantic.min.css">
<link rel="stylesheet" href="style.css">
<main class="reading-room"><header><div><p class="kicker">FOMANTIC UI · READING ROOM</p><h1>Make a shelf worth returning to.</h1><p class="intro">Rate three original reading prompts and build a local discussion shortlist.</p></div><span class="ui teal basic label">Local collection</span></header><div class="toolbar"><label for="topic">Show topic</label><select id="topic" class="ui selection dropdown"><option value="all">All topics</option><option value="type">Typography</option><option value="space">Space & rhythm</option><option value="color">Color</option></select><span id="visible-count">3 prompts</span></div><div class="book-grid"><article class="ui fluid card" data-topic="type" data-name="Letters in the margins"><div class="book-cover type-cover" aria-hidden="true"><span>Aa</span><small>FORM / COUNTERFORM</small></div><div class="content"><div class="meta">TYPOGRAPHY · 18 MIN</div><h2 class="header">Letters in the margins</h2><div class="description">Compare a narrow editorial column with a generous display line. Find where the rhythm changes.</div></div><div class="content"><label class="rating-label" id="label-type">Your interest</label><div class="ui huge star rating" data-rating="0" data-max-rating="5" role="slider" tabindex="0" aria-labelledby="label-type" aria-valuemin="0" aria-valuemax="5" aria-valuenow="0"></div><output class="score">Not rated</output><button class="ui tiny basic button clear-rating" type="button">Clear rating</button></div><div class="extra content"><button class="ui fluid teal button shortlist" aria-pressed="false">Add to shortlist</button></div></article><article class="ui fluid card" data-topic="space" data-name="The space between"><div class="book-cover space-cover" aria-hidden="true"><span></span><span></span><span></span><small>PAUSE / SEQUENCE</small></div><div class="content"><div class="meta">SPACE & RHYTHM · 12 MIN</div><h2 class="header">The space between</h2><div class="description">Remove one element from a crowded page. Rebalance the remaining space without adding decoration.</div></div><div class="content"><label class="rating-label" id="label-space">Your interest</label><div class="ui huge star rating" data-rating="0" data-max-rating="5" role="slider" tabindex="0" aria-labelledby="label-space" aria-valuemin="0" aria-valuemax="5" aria-valuenow="0"></div><output class="score">Not rated</output><button class="ui tiny basic button clear-rating" type="button">Clear rating</button></div><div class="extra content"><button class="ui fluid teal button shortlist" aria-pressed="false">Add to shortlist</button></div></article><article class="ui fluid card" data-topic="color" data-name="A color and its neighbor"><div class="book-cover color-cover" aria-hidden="true"><span></span><span></span><small>CONTEXT / CONTRAST</small></div><div class="content"><div class="meta">COLOR · 15 MIN</div><h2 class="header">A color and its neighbor</h2><div class="description">Place the same accent on two backgrounds. Describe the shift before changing its value.</div></div><div class="content"><label class="rating-label" id="label-color">Your interest</label><div class="ui huge star rating" data-rating="0" data-max-rating="5" role="slider" tabindex="0" aria-labelledby="label-color" aria-valuemin="0" aria-valuemax="5" aria-valuenow="0"></div><output class="score">Not rated</output><button class="ui tiny basic button clear-rating" type="button">Clear rating</button></div><div class="extra content"><button class="ui fluid teal button shortlist" aria-pressed="false">Add to shortlist</button></div></article></div><section class="ui message summary"><h2 class="header">Discussion shortlist</h2><p id="summary" role="status">No prompts selected. Add one to begin.</p><p class="scope">Ratings and selections stay in this browser page. These are original prompts, not published books.</p></section></main>
<script src="/vendor/jquery.min.js"></script>
<script src="/vendor/fomantic-ui-css/components/transition.min.js"></script>
<script src="/vendor/fomantic-ui-css/components/dropdown.min.js"></script>
<script src="/vendor/fomantic-ui-css/components/rating.min.js"></script>
<script src="app.js"></script>
<!-- Keep the themes/ assets beside the copied CSS. -->
Запрос для вашего проекта
Промпт для AI-агента
Расширьте список для читального зала на основе Fomantic UI 2.9.4, используя предоставленную инициализацию модуля jQuery и компоненты Dropdown и Rating. Свяжите три задания для чтения, состояние их оценок и локальную работу списка с отображаемыми карточками. Сохраните явную поддержку клавиатуры и семантику ползунка, добавленные элементу оценки, а также соответствующие теме иконки. Список не должен допускать повторного добавления и должен наглядно показывать текущее содержимое; это не процесс обработки обращений в поддержку и не удалённый сервис рекомендаций.
05
Источники и область применения дизайн-системы Fomantic UI
Fomantic UI 2.9.4 с jQuery 3.7.1. Значения темы — скомпилированные значения по умолчанию; оригинальные обложки и дополнения для клавиатуры обозначены отдельно. Все выбранные элементы остаются локальными.