Компонент Rate предназначен для визуального отображения и выбора рейтингов с помощью иконок (обычно звезд). Он активно используется для систем оценки товаров, услуг или контента, предоставляя пользователю интуитивно понятный интерфейс.
Для использования Rate необходимо импортировать компонент из библиотеки:
import { ElRate } from 'element-plus';
В шаблоне Vue его можно использовать следующим образом:
<el-rate v-model="value"></el-rate>
<script setup>
import { ref } from 'vue';
const value = ref(3);
</script>
Здесь v-model связывает текущее значение рейтинга с
реактивной переменной value. В примере пользователь видит
три заполненные звезды.
Количество элементов, отображаемых в рейтинге, задается через атрибут :count:
<el-rate v-model="value" :count="10"></el-rate>
По умолчанию количество элементов равно 5.
Размер иконок можно регулировать через атрибут :size:
<el-rate v-model="value" :size="36"></el-rate>
Атрибут принимает значение в пикселях и изменяет высоту и ширину каждой звезды.
Для возможности выбора половинных значений используется :allow-half:
<el-rate v-model="value" :allow-half></el-rate>
Теперь пользователь может установить рейтинг, например, 3.5, кликая между звездами.
Цвета заполненных и пустых иконок настраиваются через :colors и :void-color:
<el-rate
v-model="value"
:colors="['#F7BA2A', '#F7BA2A', '#F7BA2A']"
void-color="#C6D1DE">
</el-rate>
Можно также задавать :disabled-color для неактивного состояния рейтинга.
Rate поддерживает кастомные иконки через слоты icon и void-icon:
<el-rate v-model="value">
<template #icon>
<i class="el-icon-heart"></i>
</template>
<template #void-icon>
<i class="el-icon-star-off"></i>
</template>
</el-rate>
Таким образом можно использовать любые иконки, не ограничиваясь стандартными звездами.
Чтобы сделать рейтинг только для отображения, используется атрибут :disabled:
<el-rate v-model="value" :disabled></el-rate>
Пользователь не сможет изменить значение, но визуально рейтинг будет отображаться.
С помощью события @change можно отслеживать изменения рейтинга:
<el-rate v-model="value" @change="handleChange"></el-rate>
<script setup>
function handleChange(val) {
console.log('Новый рейтинг:', val);
}
</script>
Событие вызывается при каждом изменении значения пользователем.
Rate может использоваться внутри форм Element Plus. Для валидации достаточно добавить rules:
<el-form :model="form" ref="formRef">
<el-form-item label="Рейтинг" prop="rate">
<el-rate v-model="form.rate" :allow-half></el-rate>
</el-form-item>
</el-form>
<script setup>
import { ref } from 'vue';
const form = ref({
rate: 0
});
const formRef = ref(null);
</script>
Значение Rate можно обновлять динамически, что позволяет интегрировать его с API:
<el-rate v-model="rating" :count="ratingCount"></el-rate>
<script setup>
import { ref, onMounted } from 'vue';
const rating = ref(0);
const ratingCount = ref(5);
onMounted(async () => {
const response = await fetch('/api/getRating');
const data = await response.json();
rating.value = data.value;
ratingCount.value = data.count;
});
</script>
Элемент Rate можно стилизовать с помощью классов **.el-rate, .el-rate__item, .el-rate__icon**:
.el-rate__item {
margin-right: 8px;
}
.el-rate__icon {
transition: transform 0.3s;
}
.el-rate__icon:hover {
transform: scale(1.2);
}
Это позволяет создавать эффект увеличения иконок при наведении или кастомные отступы.
Rate поддерживает локализацию через Vue i18n, если требуется вывод подсказок при наведении:
<el-rate
v-model="value"
:show-text
:texts="['Очень плохо', 'Плохо', 'Нормально', 'Хорошо', 'Отлично']">
</el-rate>
Атрибут :show-text включает отображение текста рядом с рейтингом, а :texts задаёт массив подсказок.
Компонент Rate в Element Plus гибко настраивается по количеству и размеру элементов, поддерживает дробные значения, кастомные иконки и интеграцию с формами. Его возможности позволяют создавать удобные и визуально привлекательные системы оценки в веб-приложениях на Vue.js.