Vuetify — это компонентная библиотека для Vue.js, которая предоставляет готовые элементы интерфейса с продуманной системой сеток, стилями и интерактивными элементами. В основе структуры приложения на Vuetify лежит компонентный подход, где каждая часть интерфейса реализуется как отдельный компонент.
fluid, grid-list-md,
grid-list-lg.v-col принимает параметры
cols, offset, order для
управления расположением.Vuetify поддерживает темы через объект
theme в конфигурации. Можно определить светлую и тёмную
темы, а также кастомные цвета для компонентов:
import { createVuetify } from 'vuetify'
const vuetify = createVuetify({
theme: {
defaultTheme: 'light',
themes: {
light: {
colors: {
primary: '#1976D2',
secondary: '#424242',
accent: '#82B1FF',
},
},
dark: {
colors: {
primary: '#2196F3',
secondary: '#FF5722',
},
},
},
},
})
Для организации интерфейса используются навигационные компоненты:
Эти компоненты можно комбинировать для построения типичной структуры
приложения: v-app → v-navigation-drawer +
v-app-bar → v-main → контент.
Vuetify предоставляет широкий набор компонентов для форм:
Формы интегрируются с Vue через v-model, что
обеспечивает реактивное обновление данных:
<v-form ref="form" v-model="valid">
<v-text-field
v-model="user.name"
:rules="[v => !!v || 'Имя обязательно']"
label="Имя"
></v-text-field>
<v-btn :disabled="!valid">Отправить</v-btn>
</v-form>
Система сетки Vuetify построена по принципу 12-колоночной сетки, аналогично Bootstrap:
v-container задает отступы и центровку.v-row формирует ряд элементов.v-col делит ряд на колонки. Параметры
cols, sm, md, lg,
xl позволяют управлять шириной на разных размерах
экранов.Пример адаптивного ряда:
<v-row>
<v-col cols="12" sm="6" md="4">
<v-card>Контент 1</v-card>
</v-col>
<v-col cols="12" sm="6" md="4">
<v-card>Контент 2</v-card>
</v-col>
<v-col cols="12" sm="12" md="4">
<v-card>Контент 3</v-card>
</v-col>
</v-row>
Vuetify предоставляет компоненты для взаимодействия:
Vuetify активно использует слоты для кастомизации компонентов:
Пример использования слота в v-list:
<v-list>
<v-list-item v-for="item in items" :key="item.id">
<template #default="{ active }">
<v-list-item-content>
<v-list-item-title :class="{ 'font-weight-bold': active }">{{ item.name }}</v-list-item-title>
</v-list-item-content>
</template>
</v-list-item>
</v-list>
Структура Vuetify строится вокруг компонентного дерева, где каждый элемент отвечает за конкретную часть интерфейса, а стили и адаптивность контролируются через свойства компонентов и тему приложения.