Элементы по отдельности

This commit is contained in:
2025-11-25 11:52:22 +03:00
parent 77c7e2834a
commit b2f30dfc00
13 changed files with 491 additions and 1 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

View File

@@ -880,6 +880,7 @@
\item Тревожный сигнал при активации SOS (можно отключить, если нужна скрытность).
\end{itemize}
\newpage
\section{Шаблон экранной формы}
Шаблон экранной формы определяет единую структуру для всех основных экранов мобильного приложения. Он обеспечивает визуальную согласованность, предсказуемость навигации и соответствие принципам дизайна, описанным в предыдущем разделе.
@@ -893,11 +894,71 @@
\item \textbf{Основная область контента (Main)} --- прокручиваемая область для размещения содержимого конкретного экрана. Включает заголовок экрана (22pt, полужирный), описание при необходимости (16pt, серый цвет), карточки с информацией и элементы управления. Отступы от краёв 20pt, отступ снизу 80pt для навигационной панели.
\item \textbf{Нижняя навигационная панель (Navigation)} --- фиксирована внизу экрана, высота 72pt, белый фон с тенью. Содержит 5 навигационных кнопок с иконками и подписями: "Маршрут", "Корзина", "Главная", "Чат", "Группа". Активная вкладка выделяется зелёным цветом текста и подчёркиванием снизу.
\item \textbf{Нижняя навигационная панель (Navigation)} --- фиксирована внизу экрана, высота 72pt, белый фон с тенью. Содержит 5 навигационных кнопок с иконками и подписями: "Маршрут", "Корзина", "Главная", "Чат", "Справочник". Активная вкладка выделяется зелёным цветом текста и подчёркиванием снизу.
\item \textbf{Кнопка SOS} --- расположена в правом нижнем углу над навигацией, размер 80×80pt, красный цвет (\#C0392B), круглая форма с белой обводкой 4pt. Постоянно видима на всех экранах, имеет анимацию пульсации для привлечения внимания.
\end{itemize}
\subsection{Основные элементы интерфейса}
Шаблон использует набор унифицированных элементов интерфейса, обеспечивающих визуальную согласованность и предсказуемость взаимодействия.
\textbf{Кнопка SOS} --- критически важный элемент безопасности, доступный на всех экранах. Размер 80×80pt обеспечивает уверенное нажатие даже в стрессовой ситуации. Красный цвет \#C0392B мгновенно привлекает внимание, белая обводка 4pt создаёт контраст с любым фоном.
\begin{figure}[h!]
\centering
\includegraphics[width=0.2\linewidth]{img/elements/sos-button.png}
\caption{Кнопка SOS}
\label{fig:sos-button}
\end{figure}
\newpage
\textbf{Карточка (Card)} --- базовый контейнер для группировки связанного контента. Белый фон \#FFFFFF, радиус скругления 12pt, отступы 16pt. Тень средней интенсивности. Используется для информации о маршруте, участниках, находках.
\begin{figure}[h!]
\centering
\includegraphics[width=0.35\linewidth]{img/elements/card.png}
\caption{Карточка контента}
\label{fig:card}
\end{figure}
\textbf{Основная кнопка} --- минимальная высота 48pt (стандарт ISO 9241-161 для сенсорных элементов), радиус 8pt, шрифт 16pt полужирный. Основная кнопка (primary) имеет оранжевый цвет \#E67E22, вторичная (secondary) --- светло-серый \#ECF0F1. При нажатии кнопка уменьшается до 97\% размера для тактильного отклика.
\begin{figure}[h!]
\centering
\includegraphics[width=0.35\linewidth]{img/elements/button-primary.png}
\caption{Основная и вторичная кнопки}
\label{fig:button-primary}
\end{figure}
\textbf{Элемент списка} --- используется для участников, находок, контрольных точек. Иконка 40×40pt в скруглённом контейнере слева, заголовок 17pt полужирный, подзаголовок 14pt серый цвет. Отступы 14pt по вертикали, 16pt по горизонтали. Белый фон, радиус 12pt, лёгкая тень.
\begin{figure}[h!]
\centering
\includegraphics[width=0.35\linewidth]{img/elements/list-item.png}
\caption{Элемент списка}
\label{fig:list-item}
\end{figure}
\newpage
\textbf{Поисковое поле} --- высота 48pt, радиус 12pt, иконка лупы 20pt слева, текст 16pt. Фон белый с лёгкой тенью. Placeholder серого цвета \#7F8C8D. Используется в справочнике грибов для быстрого поиска по названию.
\begin{figure}[h!]
\centering
\includegraphics[width=0.35\linewidth]{img/elements/search-bar.png}
\caption{Поисковое поле}
\label{fig:search-bar}
\end{figure}
\textbf{Навигационная панель} --- высота 72pt, 5 кнопок равной ширины. Иконки 24pt, подписи 11pt. Активная вкладка: зелёный цвет текста \#2D5F3F, полужирное начертание, подчёркивание снизу 3pt высотой. Неактивные: серый цвет \#7F8C8D, обычное начертание.
\begin{figure}[h!]
\centering
\includegraphics[width=0.4\linewidth]{img/elements/navigation-bar.png}
\caption{Навигационная панель}
\label{fig:navigation-bar}
\end{figure}
\subsection{Визуальные особенности}
Шаблон реализует описанную ранее цветовую палитру и типографику:
@@ -918,6 +979,8 @@
\label{fig:template}
\end{figure}
\newpage
\phantom{text}
\newpage
\section{Эскизы экранных форм}

View File

@@ -0,0 +1,60 @@
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Основная кнопка</title>
<link rel="stylesheet" href="../common.css">
<style>
body {
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
background: var(--color-bg-light);
padding: 40px;
}
.element-container {
width: 335px;
display: flex;
flex-direction: column;
gap: 20px;
}
.element-title {
font-size: 20px;
font-weight: 600;
color: var(--color-text-dark);
text-align: center;
}
.element-description {
font-size: 14px;
color: var(--color-text-medium);
text-align: center;
}
</style>
</head>
<body>
<div class="element-container">
<h2 class="element-title">Основная кнопка</h2>
<button class="btn btn-primary btn-full">Создать поход</button>
<button class="btn btn-secondary btn-full">Сохранить черновик</button>
<p class="element-description">
Минимальная высота: 48pt<br>
Радиус: 8pt<br>
Шрифт: 16pt, полужирный<br>
Основная: оранжевый #E67E22<br>
Вторичная: светло-серый #ECF0F1
</p>
</div>
</body>
</html>

View File

@@ -0,0 +1,63 @@
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Карточка</title>
<link rel="stylesheet" href="../common.css">
<style>
body {
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
background: var(--color-bg-light);
padding: 40px;
}
.element-container {
width: 335px;
display: flex;
flex-direction: column;
gap: 20px;
}
.element-title {
font-size: 20px;
font-weight: 600;
color: var(--color-text-dark);
text-align: center;
}
.element-description {
font-size: 14px;
color: var(--color-text-medium);
text-align: center;
}
</style>
</head>
<body>
<div class="element-container">
<h2 class="element-title">Карточка (Card)</h2>
<div class="card">
<h3 class="card-title">Заголовок карточки</h3>
<p class="card-text">
Содержимое карточки с информацией.
Карточки используются для группировки связанного контента.
</p>
</div>
<p class="element-description">
Фон: белый (#FFFFFF)<br>
Радиус: 12pt<br>
Отступы: 16pt<br>
Тень: средняя (shadow-md)
</p>
</div>
</body>
</html>

View File

@@ -0,0 +1,71 @@
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Элемент списка</title>
<link rel="stylesheet" href="../common.css">
<style>
body {
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
background: var(--color-bg-light);
padding: 40px;
}
.element-container {
width: 335px;
display: flex;
flex-direction: column;
gap: 20px;
}
.element-title {
font-size: 20px;
font-weight: 600;
color: var(--color-text-dark);
text-align: center;
}
.element-description {
font-size: 14px;
color: var(--color-text-medium);
text-align: center;
}
</style>
</head>
<body>
<div class="element-container">
<h2 class="element-title">Элемент списка</h2>
<div class="list-item">
<div class="list-item-icon">📍</div>
<div class="list-item-content">
<div class="list-item-title">Заголовок элемента</div>
<div class="list-item-subtitle">Дополнительная информация</div>
</div>
</div>
<div class="list-item">
<div class="list-item-icon">🍄</div>
<div class="list-item-content">
<div class="list-item-title">Белый гриб</div>
<div class="list-item-subtitle">Найден в 14:35</div>
</div>
</div>
<p class="element-description">
Высота иконки: 40×40pt<br>
Заголовок: 17pt, полужирный<br>
Подзаголовок: 14pt, серый<br>
Отступы: 14pt вертикально, 16pt горизонтально
</p>
</div>
</body>
</html>

View File

@@ -0,0 +1,84 @@
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Навигационная панель</title>
<link rel="stylesheet" href="../common.css">
<style>
body {
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
background: var(--color-bg-light);
padding: 40px;
}
.element-container {
width: 375px;
display: flex;
flex-direction: column;
gap: 20px;
}
.element-title {
font-size: 20px;
font-weight: 600;
color: var(--color-text-dark);
text-align: center;
}
.element-description {
font-size: 14px;
color: var(--color-text-medium);
text-align: center;
}
.nav-container {
position: relative;
}
</style>
</head>
<body>
<div class="element-container">
<h2 class="element-title">Навигационная панель</h2>
<div class="nav-container">
<nav class="app-navigation" style="position: relative; bottom: 0;">
<button class="nav-button">
<span class="nav-icon">🗺️</span>
<span class="nav-label">Маршрут</span>
</button>
<button class="nav-button">
<span class="nav-icon">🧺</span>
<span class="nav-label">Корзина</span>
</button>
<button class="nav-button nav-button-active">
<span class="nav-icon">🏠</span>
<span class="nav-label">Главная</span>
</button>
<button class="nav-button">
<span class="nav-icon">💬</span>
<span class="nav-label">Чат</span>
</button>
<button class="nav-button">
<span class="nav-icon">📖</span>
<span class="nav-label">Справочник</span>
</button>
</nav>
</div>
<p class="element-description">
Высота: 72pt<br>
5 кнопок: Маршрут, Корзина, Главная, Чат, Справочник<br>
Активная вкладка: зелёный текст + подчёркивание<br>
Иконки: 24pt, подписи: 11pt
</p>
</div>
</body>
</html>

View File

@@ -0,0 +1,89 @@
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Поисковое поле</title>
<link rel="stylesheet" href="../common.css">
<style>
body {
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
background: var(--color-bg-light);
padding: 40px;
}
.element-container {
width: 335px;
display: flex;
flex-direction: column;
gap: 20px;
}
.element-title {
font-size: 20px;
font-weight: 600;
color: var(--color-text-dark);
text-align: center;
}
.search-bar {
display: flex;
align-items: center;
gap: var(--spacing-md);
background: var(--color-bg-card);
border-radius: var(--radius-md);
padding: var(--spacing-md) var(--spacing-lg);
box-shadow: var(--shadow-sm);
}
.search-icon {
font-size: 20px;
color: var(--color-text-medium);
}
.search-input {
flex: 1;
border: none;
outline: none;
font-size: var(--font-size-base);
font-family: var(--font-family);
color: var(--color-text-dark);
background: transparent;
}
.search-input::placeholder {
color: var(--color-text-medium);
}
.element-description {
font-size: 14px;
color: var(--color-text-medium);
text-align: center;
}
</style>
</head>
<body>
<div class="element-container">
<h2 class="element-title">Поисковое поле</h2>
<div class="search-bar">
<span class="search-icon">🔍</span>
<input type="text" class="search-input" placeholder="Поиск гриба...">
</div>
<p class="element-description">
Высота: 48pt (минимальный размер касания)<br>
Радиус: 12pt<br>
Шрифт: 16pt<br>
Тень: лёгкая (shadow-sm)
</p>
</div>
</body>
</html>

View File

@@ -0,0 +1,60 @@
<!DOCTYPE html>
<html lang="ru">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Кнопка SOS</title>
<link rel="stylesheet" href="../common.css">
<style>
body {
display: flex;
justify-content: center;
align-items: center;
min-height: 100vh;
background: var(--color-bg-light);
padding: 40px;
}
.element-container {
display: flex;
flex-direction: column;
align-items: center;
gap: 20px;
}
.element-title {
font-size: 20px;
font-weight: 600;
color: var(--color-text-dark);
text-align: center;
}
.element-description {
font-size: 14px;
color: var(--color-text-medium);
text-align: center;
max-width: 300px;
}
</style>
</head>
<body>
<div class="element-container">
<h2 class="element-title">Кнопка SOS</h2>
<button class="sos-button">
<span class="sos-icon">🆘</span>
</button>
<p class="element-description">
Размер: 80×80pt<br>
Цвет: #C0392B (красный)<br>
Обводка: 4pt белая<br>
Анимация: пульсация
</p>
</div>
</body>
</html>