Mobile-first — это стратегия разработки интерфейсов, при которой проектирование и стилизация приложения начинаются с мобильной версии. В контексте библиотеки Naive UI это означает оптимизацию компонентов и их поведения под маленькие экраны, с последующей адаптацией под планшеты и десктопы.
Naive UI предоставляет мощный инструмент для управления адаптивностью через встроенные пропсы и утилиты, позволяя создавать интерфейсы, которые естественно подстраиваются под размеры экрана.
В Naive UI большинство компонентов поддерживает реактивное управление размерами. Примеры ключевых компонентов:
responsive и
cols.Пример использования адаптивной сетки:
import { NGrid, NCard } from 'naive-ui';
<NGrid :cols="{ xs: 1, sm: 2, md: 3, lg: 4 }" :gutter="16">
<NCard v-for="item in items" :key="item.id" title="Card">{{ item.content }}</NCard>
</NGrid>
Здесь xs, sm, md,
lg обозначают размерные точки
(breakpoints), что позволяет управлять количеством колонок
на разных устройствах.
В Mobile-first подходе часто требуется показывать или скрывать
элементы в зависимости от размера экрана. Naive UI позволяет это делать
через v-show, реактивные вычисления и
useBreakpoints().
Пример использования useBreakpoints:
import { useBreakpoints } from 'naive-ui';
const breakpoints = useBreakpoints();
const showSidebar = computed(() => breakpoints.md.value);
В этом примере боковая панель (Sidebar) отображается
только на экранах среднего размера и больше. На мобильных устройствах
она скрыта, что соответствует принципам Mobile-first.
Naive UI позволяет задавать размеры компонентов напрямую:
size="small" — уменьшенный вариант для мобильных
устройствsize="medium" — стандартный размерsize="large" — для десктопной версииДля динамической адаптации под Mobile-first подход можно использовать реактивные вычисления:
<NButton :size="breakpoints.sm.value ? 'small' : 'medium'">Кнопка</NButton>
Mobile-first интерфейсы требуют гибкого управления типографикой и spacing. В Naive UI это делается через пропсы компонентов и CSS-переменные:
:root {
--n-font-size: 14px; /* базовый размер для мобильных */
}
@media (min-width: 768px) {
:root {
--n-font-size: 16px; /* увеличение для планшетов */
}
}
Для компонентов Naive UI пропсы size и
style позволяют применять эти переменные, сохраняя
консистентность на всех устройствах.
Компоненты NTable и NList поддерживают адаптивное отображение:
responsive или кастомные вычисления для мобильных
экранов.Пример:
<NTable :columns="columns" :data="data">
</NTable>
Где в columns можно указать свойство
showIn:
columns: [
{ title: 'Имя', key: 'name', showIn: ['sm', 'md', 'lg'] },
{ title: 'Email', key: 'email', showIn: ['md', 'lg'] }
]
Для кнопок, селектов и форм Mobile-first подход подразумевает:
padding,
min-width) для пальцевПример кнопки с адаптивным размером:
<NButton :size="breakpoints.xs.value ? 'small' : 'medium'" @click="submitForm">
Отправить
</NButton>
Naive UI предоставляет утилиты:
useBreakpoints() — реактивная проверка текущего размера
экранаuseMediaQuery() — позволяет привязывать логику к CSS
media queriesЭто позволяет создавать интерфейсы, которые естественно масштабируются и перестраиваются, что соответствует принципам Mobile-first.
Mobile-first подход в Naive UI — это сочетание адаптивных
компонентов, реактивной логики размеров и продуманной
типографики. Использование сеток, условного отображения и
пропсов size позволяет строить интерфейсы, которые
корректно работают на мобильных устройствах, а затем элегантно
расширяются под планшеты и десктопы.