QLinearProgress — это компонент библиотеки Quasar Framework, предназначенный для отображения линейного индикатора прогресса. Он используется для визуального информирования пользователя о выполнении асинхронных задач, загрузке данных или любом процессе с известной или неизвестной длительностью.
Компонент поддерживает два основных режима: детерминированный и индетерминированный.
value (число от 0 до 100).value не требуется.<q-linear-progress value="45" color="primary" track-color="grey-3" />
<q-linear-progress indeterminate color="secondary" />
primary, secondary,
accent) или любой CSS-цвет.<q-linear-progress
value="70"
buffer-value="90"
color="teal"
track-color="grey-4"
size="8px"
striped
/>
QLinearProgress поддерживает широкие возможности кастомизации:
color и track-color для создания
контраста.size
позволяет интегрировать индикатор в разные компоненты интерфейса без
нарушения визуального баланса.striped и animated создаёт визуально
привлекательный эффект движения, который особенно полезен для фоновых
загрузок.Пример динамического изменения цвета в зависимости от значения прогресса:
<q-linear-progress
:value="progress"
:color="progress > 80 ? 'green' : 'orange'"
track-color="grey-2"
/>
Свойство buffer-value позволяет создавать двойной индикатор: основной прогресс и дополнительный буфер, что полезно для отображения кэширования данных, загрузки потоков или предзагрузки ресурсов.
<q-linear-progress
value="60"
buffer-value="85"
color="blue"
track-color="grey-3"
/>
Здесь основной индикатор заполнен на 60%, а буфер на 85%, что наглядно показывает прогресс и потенциальное покрытие ресурсов.
Поскольку Quasar основан на Vue.js, управление QLinearProgress удобно через реактивные данные. Например:
<template>
<q-linear-progress :value="progress" color="primary" />
<q-btn label="Увеличить" @click="increaseProgress" />
</template>
<script>
export default {
data() {
return {
progress: 0
}
},
methods: {
increaseProgress() {
if (this.progress < 100) this.progress += 10;
}
}
}
</script>
Такое управление позволяет динамически обновлять индикатор в зависимости от состояния приложения или результата асинхронных операций.
QLinearProgress идеально подходит для отображения статуса асинхронных задач, таких как загрузка файлов, API-запросы или вычисления на клиенте.
<template>
<q-linear-progress :value="progress" color="accent" />
</template>
<script>
export default {
data() {
return {
progress: 0
};
},
mounted() {
this.loadData();
},
methods: {
loadData() {
let interval = setInterval(() => {
if (this.progress >= 100) {
clearInterval(interval);
} else {
this.progress += 5;
}
}, 100);
}
}
}
</script>
В этом примере прогресс динамически обновляется, создавая плавную визуализацию процесса загрузки.
Использование свойств striped, animated и
indeterminate улучшает восприятие прогресса
пользователем:
Комбинируя эти свойства, можно создавать визуальные эффекты, соответствующие любому стилю интерфейса.
QLinearProgress сочетает гибкость, удобство интеграции с Vue и широкие возможности кастомизации, позволяя создавать как минималистичные, так и визуально насыщенные индикаторы прогресса.