В Naive UI управление адаптивностью интерфейса строится на понятии breakpoints — точек, при которых макет и компоненты изменяют своё поведение в зависимости от ширины окна. Библиотека предоставляет гибкий механизм для работы с этими точками, что позволяет создавать интерфейсы, одинаково удобные как на мобильных устройствах, так и на больших экранах.
Breakpoints в Naive UI задаются через объект конфигурации темы:
import { createTheme } from 'naive-ui'
const theme = createTheme({
breakpoints: {
xs: '480px',
sm: '768px',
md: '992px',
lg: '1200px',
xl: '1600px'
}
})
Каждая точка определяет минимальную ширину экрана,
начиная с которой будут применяться соответствующие стили. Например,
sm: '768px' означает, что при ширине окна от 768 пикселей
включаются стили, предназначенные для среднего экрана.
Naive UI предоставляет реактивный объект
$breakpoint, который позволяет проверять текущее
состояние адаптивности прямо в шаблоне или скрипте:
import { useBreakpoints } from 'naive-ui'
import { computed } from 'vue'
export default {
setup() {
const breakpoints = useBreakpoints()
const isMobile = computed(() => breakpoints.value.width < 768)
const isTablet = computed(() => breakpoints.value.width >= 768 && breakpoints.value.width < 992)
return {
isMobile,
isTablet
}
}
}
Здесь useBreakpoints возвращает объект с текущей шириной
экрана, на основе которой можно формировать условные рендеры
компонентов, менять размеры, видимость и даже стили.
Naive UI интегрирует breakpoints с системой CSS-переменных и утилитами для стилей. Пример использования переменной темы для адаптивного размера компонента:
<n-button
:size="$breakpoint.width < 768 ? 'small' : 'medium'"
>
Кнопка
</n-button>
В данном примере размер кнопки динамически зависит от текущей ширины окна, что делает интерфейс гибким и адаптивным.
Breakpoints можно менять на лету, чтобы адаптировать интерфейс под разные сценарии использования:
theme.breakpoints.md = '1000px'
После изменения новой точки пересчёт текущих условий адаптивности происходит автоматически, что позволяет создавать темы с динамическими адаптивными точками.
Мобильная навигация Переключение между вертикальной и горизонтальной панелью навигации при изменении ширины окна.
Карточки и сетки Изменение количества колонок в
n-grid или n-card в зависимости от ширины
экрана:
<n-grid :cols="$breakpoint.width < 768 ? 1 : 3">
<n-card v-for="item in items" :key="item.id">{{ item.title }}</n-card>
</n-grid>
n-grid и n-space, что позволяет сохранить
гибкость и консистентность интерфейса.Breakpoints в Naive UI обеспечивают универсальную систему адаптивности, где точки смены макета легко настраиваются и используются как в логике компонентов, так и в их стилях. Реактивный доступ к текущей ширине экрана делает интерфейс полностью динамичным, а интеграция с системой темы позволяет централизованно управлять адаптивностью на всём проекте.
Эта система делает Naive UI особенно удобным для проектов, где требуется одинаково качественный опыт на мобильных устройствах, планшетах и десктопах.