Vuetify - популярный UI-фреймворк для приложений Vue.

В этой статье мы рассмотрим, как работать с фреймворком Vuetify.

Рейтинги

Компонент v-rating позволяет нам добавлять в наше приложение рейтинг в звездочках.

Чтобы использовать это, мы можем написать:

<template>
  <div>
    <v-rating v-model="rating" background-color="purple lighten-3" color="purple" small></v-rating>
  </div>
</template>
<script>
export default {
  name: "HelloWorld",
  data: () => ({
    rating: 4,
  }),
};
</script>

v-model имеет значение рейтинга.

background-color имеет цвет заливки.

color имеет цвет контура.

small делает звезды очень маленькими.

Мы также можем установить размер large, x-large и size prop.

Свойство size позволяет нам устанавливать звезды на любое значение размера в пикселях.

Нестандартная длина

Мы можем изменить количество отображаемых звезд.

Для этого мы используем опору length:

<template>
  <div>
    <v-rating v-model="rating" background-color="purple lighten-3" color="purple" :length="10"></v-rating>
  </div>
</template>
<script>
export default {
  name: "HelloWorld",
  data: () => ({
    rating: 4,
  }),
};
</script>

Мы устанавливаем length на 10, поэтому мы видим 10 звезд.

Увеличенный

Мы можем добавить полные значки, половинные значки или пустые значки.

Например, мы можем написать:

<template>
  <div>
    <v-rating v-model="rating" background-color="purple lighten-3" color="purple" half-increments></v-rating>
  </div>
</template>
<script>
export default {
  name: "HelloWorld",
  data: () => ({
    rating: 4.5,
  }),
};
</script>

Опора half-increments позволяет нам добавлять половинки звезд.

Поэтому, когда мы установим rating на 4,5, мы увидим 4,5 звезды.

Слоты

Мы можем заполнить ячейки звездочек, чтобы настроить звезды по своему желанию.

Например, мы можем написать:

<template>
  <div class="text-center">
    <v-rating v-model="rating">
      <template v-slot:item="props">
        <v-icon
          :color="props.isFilled ? genColor(props.index) : 'grey lighten-1'"
          large
          @click="props.click"
        >{{ props.isFilled ? 'mdi-star-circle' : 'mdi-circle-outline' }}</v-icon>
      </template>
    </v-rating>
  </div>
</template>
<script>
export default {
  name: "HelloWorld",
  data: () => ({
    colors: ["green", "purple", "orange", "indigo", "red"],
    rating: 4.5,
  }),
  methods: {
    genColor(i) {
      return this.colors[i];
    },
  },
};
</script>

У нас есть свойство isFilled из реквизита слота, чтобы определить, должна ли звезда быть заполнена или нет.

Метод click можно передать в директиву @click в качестве обработчика кликов.

Таким образом, когда мы щелкнем по нему, мы увидим значение, отображаемое звездочками.

Мы получаем разные цвета от разных звезд, возвращая название цвета из метода genColor.

Рейтинги карт

Мы можем поместить на карту v-rating компонент.

Например, мы можем написать:

<template>
  <v-card class="mx-auto elevation-20" color="purple" dark style="max-width: 400px;">
    <v-row justify="space-between">
      <v-col cols="8">
        <v-card-title>
          <div>
            <div class="headline">Song</div>
          </div>
        </v-card-title>
      </v-col>
      <v-col cols="4">
        <v-img
          class="shrink ma-2"
          contain
          height="125px"
          src="https://randomuser.me/api/portraits/women/68.jpg"
          style="flex-basis: 125px"
        ></v-img>
      </v-col>
    </v-row>
    <v-divider dark></v-divider>
    <v-card-actions class="pa-4">
      Rate this album
      <v-spacer></v-spacer>
      <span class="grey--text text--lighten-2 caption mr-2">({{ rating }})</span>
      <v-rating
        v-model="rating"
        background-color="white"
        color="yellow accent-4"
        dense
        half-increments
        hover
        size="18"
      ></v-rating>
    </v-card-actions>
  </v-card>
</template>
<script>
export default {
  name: "HelloWorld",
  data: () => ({
    rating: 4.5,
  }),
  methods: {
    genColor(i) {
      return this.colors[i];
    },
  },
};
</script>

Мы помещаем компонент v-rating в v-card-actions, чтобы он отображался в нижней части карточки.

Заключение

Мы можем добавить компонент v-rating, чтобы добавить в наше приложение рейтинг в звездочках.

Понравилась эта статья? Если да, то получите больше похожего контента, подписавшись на наш канал YouTube!