Font Awesome — одна из наиболее распространённых библиотек иконок в веб-разработке. Она содержит тысячи векторных иконок, которые легко масштабируются, настраиваются через CSS и интегрируются в современные JavaScript-фреймворки. В проектах на Vuetify библиотека используется как альтернативный набор иконок наряду с Material Design Icons.
Vuetify предоставляет встроенную систему работы с иконками, которая
позволяет подключать различные библиотеки и использовать их через
компонент v-icon.
Существует несколько способов подключения библиотеки:
Наиболее распространённый вариант в проектах Vue и Vuetify — установка через npm.
npm install @fortawesome/fontawesome-free
После установки необходимо импортировать стили библиотеки в основной файл приложения.
import '@fortawesome/fontawesome-free/css/all.css'
Vuetify использует собственную систему конфигурации иконок. Для активации Font Awesome необходимо изменить настройки при инициализации Vuetify.
import { createVuetify } from 'vuetify'
const vuetify = createVuetify({
icons: {
defaultSet: 'fa',
sets: {
fa: {
component: 'font-awesome-icon'
}
}
}
})
Однако чаще используется режим работы через CSS-классы Font Awesome.
const vuetify = createVuetify({
icons: {
defaultSet: 'fa'
}
})
После настройки библиотеку можно использовать через компонент
v-icon.
<v-icon icon="fa-solid fa-user"></v-icon>
или
<v-icon>fa-solid fa-user</v-icon>
Vuetify автоматически применяет соответствующие CSS-классы.
Font Awesome разделяет иконки по стилям. Каждый стиль обозначается отдельным префиксом.
| Префикс | Стиль |
|---|---|
fa-solid |
сплошные иконки |
fa-regular |
обычные (outlined) |
fa-light |
облегчённый стиль |
fa-duotone |
двухцветные |
fa-brands |
иконки брендов |
<v-icon>fa-solid fa-house</v-icon>
<v-icon>fa-regular fa-envelope</v-icon>
<v-icon>fa-brands fa-github</v-icon>
Размер иконок можно изменять несколькими способами.
<v-icon size="32">fa-solid fa-star</v-icon>
<v-icon class="fa-2x">fa-solid fa-star</v-icon>
Доступные размеры:
fa-xsfa-smfa-lgfa-2xfa-3xfa-5xfa-10xПоскольку иконки Font Awesome являются SVG или шрифтовыми глифами, их цвет можно менять через CSS.
<v-icon color="primary">
fa-solid fa-heart
</v-icon>
<v-icon class="text-red">
fa-solid fa-heart
</v-icon>
Иконки Font Awesome активно применяются внутри компонентов интерфейса.
<v-btn icon>
<v-icon>fa-solid fa-plus</v-icon>
</v-btn>
<v-text-field
label="Поиск"
prepend-inner-icon="fa-solid fa-search"
></v-text-field>
<v-list-item
prepend-icon="fa-solid fa-user"
title="Профиль"
></v-list-item>
Font Awesome легко стилизуется через CSS.
.custom-icon {
color: #ff9800;
font-size: 28px;
}
<v-icon class="custom-icon">
fa-solid fa-bell
</v-icon>
Font Awesome предоставляет встроенные анимации.
<v-icon class="fa-spin">
fa-solid fa-spinner
</v-icon>
<v-icon class="fa-pulse">
fa-solid fa-spinner
</v-icon>
Font Awesome поддерживает механизм наложения нескольких иконок друг на друга.
<span class="fa-stack">
<i class="fa-solid fa-circle fa-stack-2x"></i>
<i class="fa-solid fa-check fa-stack-1x fa-inverse"></i>
</span>
В интерфейсах Vuetify такой подход используется реже, но может применяться в кастомных компонентах.
Современные версии Font Awesome поддерживают SVG-режим работы, который обеспечивает:
Для использования SVG требуется подключение отдельных пакетов:
npm install @fortawesome/fontawesome-svg-core
npm install @fortawesome/free-solid-svg-icons
npm install @fortawesome/vue-fontawesome
import { library } from '@fortawesome/fontawesome-svg-core'
import { faUser } from '@fortawesome/free-solid-svg-icons'
import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome'
library.add(faUser)
app.component('font-awesome-icon', FontAwesomeIcon)
<font-awesome-icon icon="user" />
В Vuetify такие компоненты можно вставлять внутрь v-btn,
v-list-item и других элементов интерфейса.
По умолчанию Vuetify использует Material Design Icons. Font Awesome может полностью заменить стандартный набор.
const vuetify = createVuetify({
icons: {
defaultSet: 'fa'
}
})
После этого все компоненты Vuetify будут использовать Font Awesome.
Vuetify позволяет создавать алиасы иконок.
const vuetify = createVuetify({
icons: {
aliases: {
account: 'fa-solid fa-user',
home: 'fa-solid fa-house',
settings: 'fa-solid fa-gear'
}
}
})
Теперь иконки можно использовать короткими именами.
<v-icon>$account</v-icon>
<v-icon>$home</v-icon>
Подключение полной версии Font Awesome может увеличить размер бандла. Для оптимизации используются следующие методы:
Использование SVG-подхода позволяет подключать только необходимые иконки.
import { faUser, faHouse } from '@fortawesome/free-solid-svg-icons'
В крупных проектах иконки могут подключаться динамически вместе с компонентами.
Современные сборщики (Vite, Webpack) удаляют неиспользуемые иконки из финального бандла.
Font Awesome широко применяется в интерфейсах Vuetify:
Навигация
<v-navigation-drawer>
<v-list>
<v-list-item prepend-icon="fa-solid fa-home" title="Главная" />
<v-list-item prepend-icon="fa-solid fa-chart-line" title="Аналитика" />
</v-list>
</v-navigation-drawer>
Карточки
<v-card>
<v-card-title>
<v-icon class="mr-2">fa-solid fa-chart-pie</v-icon>
Статистика
</v-card-title>
</v-card>
Уведомления
<v-alert type="success">
<v-icon class="mr-2">fa-solid fa-check</v-icon>
Данные успешно сохранены
</v-alert>
| Характеристика | Font Awesome | Material Design Icons |
|---|---|---|
| Количество иконок | очень большое | большое |
| Иконки брендов | есть | нет |
| Стили | несколько | один |
| SVG поддержка | есть | есть |
| Интеграция с Vuetify | требует настройки | встроена |
Font Awesome часто используется в проектах, где требуется: