Интерфейс CesiumJS формируется набором DOM-элементов, которым
автоматически назначаются CSS-классы при создании Viewer.
Основной контейнер сцены получает класс:
cesium-widget — корневой элемент WebGL-контекстаcesium-widget canvas — холст рендеринга сценыПоверх него создаётся оболочка viewer:
cesium-viewer — главный контейнер интерфейсаcesium-viewer-container — внутренний слой
компоновкиcesium-viewer-cesiumWidgetContainer — область, где
размещается 3D сценаЭти классы формируют базовую визуальную структуру приложения и определяют поведение позиционирования всех UI-элементов.
Viewer в CesiumJS строится как набор независимых панелей, каждая из которых имеет собственный CSS-слой.
Основные контейнеры:
cesium-viewer-fullscreenContainer — обёртка для режима
полноэкранного отображенияcesium-viewer-timelineContainer — контейнер временной
шкалыcesium-viewer-animationContainer — контейнер
анимационного контроллераcesium-viewer-toolbar — верхняя панель
инструментовЭти классы обеспечивают фиксированную структуру интерфейса, где каждая панель позиционируется через absolute/flex layout внутри общего контейнера.
Инструментальная панель CesiumJS содержит набор стандартных кнопок, каждая из которых стилизуется через отдельные CSS-классы.
Основные элементы:
cesium-button — базовый стиль всех кнопок
интерфейсаcesium-toolbar-button — кнопки панели инструментовcesium-home-button — кнопка возврата к исходной
камереcesium-geocoder-input — поле поиска объектовcesium-navigation-help-button — справка по
управлениюcesium-sceneModePicker-wrapper — переключение режимов
сценыКласс cesium-button задаёт общую модель взаимодействия:
hover, active, disabled состояния, а специализированные классы расширяют
визуальное поведение.
Поисковый компонент строится вокруг класса:
cesium-viewer-geocoderContainerВнутри него используются:
cesium-geocoder-input — текстовое поле вводаcesium-geocoder-searchButton — кнопка запуска
поискаcesium-geocoder-results — список результатовРезультаты поиска формируются в виде выпадающего блока, стилизуемого через:
cesium-geocoder-results-containercesium-geocoder-resultКаждый результат поддерживает состояния hover и active, которые реализуются через псевдоклассы и модификаторы класса.
Система времени в CesiumJS представлена двумя основными UI-модулями.
Контейнер:
cesium-viewer-timelineContainerВнутренние элементы:
cesium-timeline-main — основная шкала времениcesium-timeline-track — дорожка событийcesium-timeline-icon — маркеры событийКонтейнер:
cesium-viewer-animationContainerОсновные элементы:
cesium-animation-controls — блок управления
воспроизведениемcesium-animation-button — кнопки play/pause/stepcesium-animation-blank — вспомогательные элементы
разметкиСтили этих компонентов тесно связаны с синхронизацией времени сцены и
состоянием Clock.
Компонент смены режимов отображения карты использует набор классов:
cesium-sceneModePickercesium-sceneModePicker-dropDowncesium-sceneModePicker-buttonКаждый режим (3D, 2D, Columbus View) визуально представляется как элемент списка:
cesium-sceneModePicker-itemАктивный режим отмечается модификатором состояния:
cesium-sceneModePicker-selectedПолноэкранный режим управляется через:
cesium-viewer-fullscreenContainerПри активации изменяется поведение следующих классов:
cesium-widget — расширяется на весь viewportcesium-viewer — переключается в режим
fixed/absoluteДополнительно могут появляться системные классы состояния:
cesium-fullscreen — активное состояние полноэкранного
режимаCesiumJS использует каскадную систему слоёв, где порядок определяется z-index через CSS-классы:
cesium-widget) — базовый слойcesium-viewer-*) — средний слойТипичные всплывающие элементы:
cesium-infoBox — информационное окно объектаcesium-selection-wrapper — контейнер выделенияcesium-popup — пользовательские всплывающие окна (если
реализованы поверх API)Информационная панель строится вокруг класса:
cesium-infoBoxВнутренние элементы:
cesium-infoBox-title — заголовок объектаcesium-infoBox-body — содержимоеcesium-infoBox-closeButton — кнопка закрытияДля выделенных объектов используется:
cesium-selected-entity — визуальная индикация
выбораcesium-highlight — подсветка геометрии (через связанный
canvas overlay)Навигационный блок использует следующие классы:
cesium-navigation-help — окно справкиcesium-navigation-button — кнопка открытия справкиcesium-scene-compass — компас ориентации сценыcesium-scene-compass-outerRing — внешний кругcesium-scene-compass-innerRing — внутренний элемент
вращенияЭти элементы взаимодействуют с камерой через события вращения и
наклона, визуально отражая состояние Camera.heading и
Camera.pitch.
Стили CesiumJS строятся как набор предсказуемых классов без shadow DOM, что позволяет полностью переопределять внешний вид через внешние таблицы стилей.
Типовые подходы модификации:
cesium-viewer.cesium-buttonbackground и
opacitydisplay: none для классов
cesium-viewer-toolbar,
cesium-viewer-animationContainerОсобенность структуры заключается в высокой специфичности селекторов, поэтому часто требуется использование каскадного уточнения:
.cesium-viewer .cesium-button.cesium-widget canvasНекоторые классы добавляются и удаляются динамически в зависимости от состояния приложения:
cesium-viewer-geocoderContainer-visible — открытый
поискcesium-timeline-container-visible — активная временная
шкалаcesium-button-disabled — заблокированная кнопкаcesium-active — общее активное состояние элементов
управленияТакие классы управляются внутренними компонентами Viewer и отражают
состояние Scene, Clock и UI-событий.