QIcon — это компонент библиотеки Quasar для работы с иконками в интерфейсе Vue.js приложений. Он обеспечивает единообразное использование иконок, упрощает настройку размеров, цветов и интеграцию с различными библиотеками иконок, включая Material Icons, FontAwesome, Ionicons и другие.
Quasar позволяет использовать несколько источников иконок
одновременно. Настройка производится через файл конфигурации
quasar.config.js в разделе
framework: { iconSet }:
import '@quasar/extras/material-icons/material-icons.css'
import '@quasar/extras/fontawesome-v6/fontawesome-v6.css'
export default {
framework: {
iconSet: 'material-icons', // или 'fontawesome-v6'
}
}
Важно понимать, что QIcon автоматически подбирает
нужный шрифт и класс в зависимости от выбранного iconSet.
При необходимости можно указать иконку напрямую, используя атрибут
name.
"home" для
Material Icons или "fa-solid fa-user" для FontAwesome.px, em, rem) и
предопределённые значения Quasar (xs, sm,
md, lg, xl):<q-icon name="home" size="2em" />
<q-icon name="fa-solid fa-user" size="lg" />
primary,
secondary, accent, negative,
positive) или стандартные CSS-цвета:<q-icon name="home" color="primary" />
<q-icon name="fa-solid fa-user" color="#ff5722" />
В кнопках:
<q-btn color="primary" icon="home" label="Главная" />
В этом примере иконка автоматически помещается слева от текста, без
необходимости ручного добавления <q-icon>.
В списках:
<q-list>
<q-item>
<q-item-section avatar>
<q-icon name="fa-solid fa-user" />
</q-item-section>
<q-item-section>
Пользователь
</q-item-section>
</q-item>
</q-list>
Здесь QIcon используется для аватара, при этом сохраняются все возможности управления размером и цветом.
QIcon позволяет задавать имя иконки динамически через реактивные переменные:
<q-icon :name="currentIcon" :color="iconColor" />
data() {
return {
currentIcon: 'home',
iconColor: 'primary'
}
}
Смена значения currentIcon автоматически обновит
отображаемую иконку без перерисовки всего компонента.
QIcon поддерживает классы и CSS-псевдоклассы для расширенной стилизации:
<q-icon name="home" class="q-mr-sm rotate-icon" />
.rotate-icon {
transition: transform 0.3s;
}
.rotate-icon:hover {
transform: rotate(45deg);
}
Таким образом, можно создавать интерактивные иконки с анимацией и динамическим изменением состояния.
Помимо встроенных наборов, QIcon поддерживает кастомные SVG-иконки:
<q-icon>
<svg viewBox="0 0 24 24">
<path d="M12 2L15 8H9L12 2Z" fill="currentColor"/>
</svg>
</q-icon>
В этом случае QIcon выступает как обёртка, обеспечивая единый интерфейс для управления размером, цветом и интеграции с другими компонентами Quasar.
QIcon автоматически учитывает направление текста при использовании в интерфейсах с поддержкой RTL (Right-To-Left). Например, стрелки в компонентах будут корректно отражать направление, если в проекте активирован RTL.
<q-icon> для повторного использования.QIcon тесно интегрирован с большинством компонентов Quasar, включая:
Это позволяет создавать единый визуальный язык интерфейса без дублирования кода и ручной стилизации.
Хотите, я могу подготовить отдельный подробный раздел по динамическому переключению иконок с анимацией и реактивным управлением состоянием в QIcon? Это часто встречается в крупных интерфейсах и требует грамотного подхода.