Кнопки (QBtn) в библиотеке Quasar поддерживают
встроенную работу с иконками, что позволяет значительно улучшить
визуальную выразительность интерфейса и повысить удобство
взаимодействия. Иконки могут использоваться как самостоятельно, так и в
сочетании с текстом.
Иконка добавляется через свойство icon. В качестве
значения указывается имя иконки из подключённого набора (Material Icons,
FontAwesome и др.).
<q-btn icon="home" />
В этом случае кнопка будет отображать только иконку без текста.
При одновременном использовании текста и иконки, иконка по умолчанию располагается слева:
<q-btn label="Главная" icon="home" />
Результат:
Для управления расположением используется свойство
icon-right.
<q-btn label="Далее" icon-right="arrow_forward" />
Особенности:
icon — иконка слеваicon-right — иконка справаМожно комбинировать обе стороны:
<q-btn label="Обновить" icon="refresh" icon-right="check" />
Для создания компактных кнопок без текста применяется режим “icon-only”:
<q-btn icon="favorite" round color="red" />
Ключевые свойства:
round — делает кнопку круглойlabel — отображается только иконкаДля уменьшения размеров:
<q-btn icon="menu" flat dense />
Комбинации:
flat — убирает фонdense — уменьшает отступыИспользуется в тулбарах и навигации.
Цвет иконки наследуется от кнопки, но может быть переопределён:
<q-btn icon="warning" color="yellow" text-color="black" />
Разделение:
color — фонtext-color — цвет иконки и текстаРазмер регулируется через свойство size:
<q-btn icon="search" size="lg" />
Варианты:
xs, sm, md, lg,
xl16px, 2rem)Quasar поддерживает несколько икон-паков:
Пример с FontAwesome:
<q-btn icon="fa-solid fa-user" />
Важно:
quasar.config.js)Можно использовать кастомные SVG:
<q-btn>
<q-icon name="img:/icons/custom.svg" />
</q-btn>
Особенности:
img: указывает на внешний файлСостояния кнопки могут менять иконку динамически:
<q-btn :icon="isPlaying ? 'pause' : 'play_arrow'" />
Использование:
Quasar поддерживает CSS-анимации и классы:
<q-btn icon="refresh" class="rotate-animation" />
Пример CSS:
.rotate-animation {
animation: spin 1s linear infinite;
}
@keyframes spin {
100% {
transform: rotate(360deg);
}
}
При использовании состояния загрузки (loading) можно
задать кастомную иконку:
<q-btn loading icon="cloud_upload" />
Или через слот:
<q-btn :loading="true">
<template v-slot:loading>
<q-spinner-dots />
</template>
</q-btn>
При использовании кнопок только с иконками важно добавлять описание:
<q-btn icon="delete" aria-label="Удалить" />
Это необходимо для:
Иконки в кнопках часто используются совместно с:
QToolbarQInput (внутренние кнопки)QCardQDialogПример в тулбаре:
<q-toolbar>
<q-btn flat icon="menu" />
<q-toolbar-title>Приложение</q-toolbar-title>
<q-btn flat icon="search" />
</q-toolbar>
Кнопка действия (FAB):
<q-btn icon="add" fab color="primary" />
Кнопка удаления:
<q-btn icon="delete" color="negative" />
Кнопка с подтверждением:
<q-btn icon="check" color="positive" />
1. Иконка не отображается
2. Неправильное позиционирование
icon и
icon-right без понимания порядка3. Нарушение доступности
aria-label у кнопок без текстаКомпонент QBtn использует QIcon внутри
себя. Это означает:
QIconСлот для полной кастомизации:
<q-btn>
<q-icon name="star" color="yellow" />
<span class="q-ml-sm">Избранное</span>
</q-btn>
Позволяет:
| Подход | Когда использовать |
|---|---|
icon |
стандартные кнопки |
icon-right |
действия “вперёд” |
| icon-only | компактные интерфейсы |
| слот | сложные кастомные решения |
| SVG | уникальный дизайн |
Иконки часто отражают состояние:
<q-btn :icon="isFavorite ? 'favorite' : 'favorite_border'" />
Связь:
icon /
icon-right)Такой подход позволяет создавать понятные, гибкие и визуально согласованные интерфейсы с минимальными усилиями.