QBanner — это компонент из библиотеки Quasar, предназначенный для отображения информационных, предупреждающих или рекламных баннеров в приложениях на Vue.js. Он обеспечивает гибкую настройку визуального вида, поведения и интерактивности, позволяя создавать как статические уведомления, так и динамически управляемые баннеры.
Компонент QBanner представляет собой контейнер с возможностью размещения внутри заголовка, текста и элементов управления. Базовый синтаксис выглядит следующим образом:
<q-banner class="bg-primary text-white">
<template v-slot:avatar>
<q-icon name="info" />
</template>
Важная информация для пользователей приложения.
<template v-slot:action>
<q-btn flat label="Закрыть" @click="visible = false" />
</template>
</q-banner>
Разбор структуры:
v-slot:avatar — слот для иконки или изображения,
которое будет отображаться слева от текста.<q-banner> —
текст или HTML, который отображается пользователю.v-slot:action — слот для действий, например кнопки
закрытия, перехода по ссылке или вызова модального окна.class — стандартная возможность Quasar для установки
цвета, фона и текста.QBanner обладает набором свойств, позволяющих гибко управлять его поведением:
dense — делает баннер компактнее, уменьшая вертикальные
отступы.inline-actions — размещает все действия в одной линии с
текстом, без переноса на отдельную строку.sticky — фиксирует баннер в верхней части контейнера
при скролле.square — убирает скругления углов, делая баннер строгим
по форме.rounded — добавляет стандартное скругление углов,
особенно актуально для карточек или панелей.class и style — позволяют полностью
контролировать внешний вид, включая цвета, тени и отступы.Пример с несколькими свойствами:
<q-banner dense square class="bg-warning text-black">
Внимание: обновление системы будет произведено в 10:00.
<template v-slot:action>
<q-btn flat label="Подробнее" @click="showDetails" />
</template>
</q-banner>
Обычно баннеры отображаются по событию или состоянию приложения. Для этого используется реактивная переменная:
<template>
<q-banner v-if="isVisible" class="bg-info text-white">
Система обновлена успешно.
<template v-slot:action>
<q-btn flat icon="close" @click="isVisible = false" />
</template>
</q-banner>
</template>
<script setup>
import { ref } from 'vue';
const isVisible = ref(true);
</script>
Ключевые моменты:
v-if обеспечивает полное удаление
компонента из DOM при скрытии.@click управляет состоянием
реактивной переменной.QBanner поддерживает как встроенные классы Quasar
(bg-primary, text-white), так и полностью
кастомные стили. Примеры кастомизации:
<q-banner class="custom-banner">
<span class="custom-text">Обновление доступно!</span>
</q-banner>
<style scoped>
.custom-banner {
padding: 12px 24px;
background-color: #ffeb3b;
}
.custom-text {
font-weight: 600;
font-size: 16px;
}
</style>
QTransition:<q-transition name="fade">
<q-banner v-if="showBanner" class="bg-positive text-white">
Операция выполнена успешно.
</q-banner>
</q-transition>
<style>
.fade-enter-active, .fade-leave-active {
transition: opacity 0.3s ease;
}
.fade-enter-from, .fade-leave-to {
opacity: 0;
}
</style>
Баннеры часто используются не только для уведомлений, но и для интерактивных действий:
<q-banner class="bg-secondary text-white">
Новая функция доступна!
<template v-slot:action>
<q-btn flat label="Попробовать" @click="tryFeature" />
<q-btn flat label="Скрыть" @click="showBanner = false" />
</template>
</q-banner>
<q-banner class="bg-info text-white">
Для подробностей перейдите на
<q-btn flat label="Сайт" @click="openWebsite" />
</q-banner>
QBanner отлично сочетается с другими элементами Quasar:
QCard) для уведомлений внутри
контента.QDialog) для отображения детальной
информации.QToolbar) для закрепления баннеров в
верхней части интерфейса.Пример интеграции с QCard:
<q-card>
<q-banner class="bg-warning text-black">
Внимание: новые правила использования!
<template v-slot:action>
<q-btn flat label="Подробнее" />
</template>
</q-banner>
<q-card-section>
Основной контент карточки здесь.
</q-card-section>
</q-card>
v-for.setTimeout для скрытия баннера через заданное время.info,
warning, error, success).Пример автоматического скрытия:
<q-banner v-if="showBanner" class="bg-positive text-white">
Данные сохранены.
<template v-slot:action>
<q-btn flat icon="close" @click="showBanner = false" />
</template>
</q-banner>
<script setup>
import { ref, onMounted } from 'vue';
const showBanner = ref(true);
onMounted(() => {
setTimeout(() => showBanner.value = false, 5000);
});
</script>
QBanner — универсальный компонент Quasar для уведомлений и баннеров, предоставляющий полный контроль над визуальным оформлением, поведением и интерактивностью. Его гибкость позволяет использовать баннеры в качестве информационных блоков, действий пользователя и даже рекламных вставок внутри приложения, с простым управлением через реактивные данные Vue.js.