Вот что мы будем создавать сегодня:
Вы увидите, как легко создать что-то подобное с потрясающей мощью Vuetify.
Только начинаете работать с Vuetify? Ознакомьтесь с этой статьей.
Отображение цветов
Для начала отобразим цвета. Мы создадим переменную colors
, инициализированную массивом всех цветов радуги — красного, оранжевого, желтого, зеленого, синего, индиго и фиолетового.
Для создания карусели мы будем использовать компонент v-carousel
. Мы будем использовать v-carousel-item
, чтобы добавить слайд в карусель. Используя директиву v-for
, мы перебираем каждый цвет в colors
и добавляем элемент в карусель, чтобы показать его. Мы сделаем это, создав компонент v-sheet
и установив его свойство color
.
src/App.vue <template> <v-app> <v-carousel> <v-carousel-item v-for="color in colors" :key="color"> <v-sheet :color="color" height="100%" tile> </v-sheet> </v-carousel-item> </v-carousel> </v-app> </template> <script> export default { name: 'App', data: () => ({ carousel: 0, colors: ['red', 'orange', 'yellow', 'green', 'blue', 'indigo', '#7f00ff'], }), }; </script>
Показ слов
Теперь давайте отобразим предложение. Это предложение из 7 слов, поэтому каждое слово отображается на одном слайде. Мы поместим слово в центр слайда по вертикали и горизонтали, используя v-row
. С помощью метода строки JavaScript split()
мы разделим предложение на массив из 7 слов.
src/App.vue <template> <v-app> <v-carousel> <v-carousel-item v-for="(color, i) in colors" :key="color"> <v-sheet :color="color" height="100%" tile> <v-row class="fill-height" align="center" justify="center"> <div class="text-h2"> {{ words[i] }} </div> </v-row> </v-sheet> </v-carousel-item> </v-carousel> </v-app> </template> <script> export default { name: 'App', data: () => ({ carousel: 0, colors: ['red', 'orange', 'yellow', 'green', 'blue', 'indigo', '#7f00ff'], words: 'These are the colours of the rainbow'.split(' '), }), }; </script>
Украсьте с помощью Vuetify
Полное руководство по созданию элегантных веб-приложений с помощью платформы Vuetify Material Design.
Получите бесплатную копию здесь.
Изменение значка разделителя
Посмотрите на значки, обозначающие каждый слайд. Они круглые. Давайте изменим их на короткие прямоугольники, изменив свойство delimiter-icon
карусели на mdi-minus
:
src/App.vue <template> <v-app> <v-carousel delimiter-icon="mdi-minus"> <v-carousel-item v-for="(color, i) in colors" :key="color"> <v-sheet :color="color" height="100%" tile> <v-row class="fill-height" align="center" justify="center"> <div class="text-h2"> {{ words[i] }} </div> </v-row> </v-sheet> </v-carousel-item> </v-carousel> </v-app> </template> ...
Отображение стрелок при наведении
В настоящее время стрелки карусели отображаются всегда. Сделаем их видимыми только тогда, когда пользователь наводит на них мышь:
src/App.vue <template> <v-app> <v-carousel delimiter-icon="mdi-minus" show-arrows-on-hover> <v-carousel-item v-for="(color, i) in colors" :key="color"> <v-sheet :color="color" height="100%" tile> <v-row class="fill-height" align="center" justify="center"> <div class="text-h2"> {{ words[i] }} </div> </v-row> </v-sheet> </v-carousel-item> </v-carousel> </v-app> </template> ...
Скрытие фона разделителя
Вы можете увидеть серый прямоугольник в нижней части карусели. Это фон разделителей. Мы не хотим, чтобы этот прямоугольник был виден, поэтому давайте установим свойство hide-delimiter-background
, чтобы скрыть его:
src/App.vue <template> <v-app> <v-carousel delimiter-icon="mdi-minus" show-arrows-on-hover hide-delimiter-background > <v-carousel-item v-for="(color, i) in colors" :key="color"> <v-sheet :color="color" height="100%" tile> <v-row class="fill-height" align="center" justify="center"> <div class="text-h2"> {{ words[i] }} </div> </v-row> </v-sheet> </v-carousel-item> </v-carousel> </v-app> </template> ...
Настройка автоматических переходов
Чтобы карусель автоматически переходила к следующему слайду, не нажимая стрелку вправо, установим свойство cycle
. interval
определяет количество времени, в течение которого карусель остается на одном из своих элементов, прежде чем перейти к следующему. Здесь мы устанавливаем интервал в 1 секунду.
<template> <v-app> <v-carousel delimiter-icon="mdi-minus" show-arrows-on-hover hide-delimiter-background cycle interval="1000" > <v-carousel-item v-for="(color, i) in colors" :key="color"> <v-sheet :color="color" height="100%" tile> <v-row class="fill-height" align="center" justify="center"> <div class="text-h2"> {{ words[i] }} </div> </v-row> </v-sheet> </v-carousel-item> </v-carousel> </v-app> </template> ...
Изменение перехода
Мы также можем изменить анимацию, которую использует карусель, когда она хочет переключить отображаемый в данный момент элемент. По умолчанию текущий элемент скользит влево, а следующий одновременно появляется. Давайте вместо этого сделаем так, чтобы текущий элемент постепенно исчезал, а входящий — появлялся. Это fade-transition
, которое мы установили в свойство перехода v-carousel-item
. Мы также сделаем то же самое для обратного перехода — текущий слайд будет исчезать по мере появления предыдущего.
<template> <v-app> <v-carousel delimiter-icon="mdi-minus" show-arrows-on-hover hide-delimiter-background cycle interval="1000" > <v-carousel-item v-for="(color, i) in colors" :key="color" transition="fade-transition" reverse-transition="fade-transition" > <v-sheet :color="color" height="100%" tile> <v-row class="fill-height" align="center" justify="center"> <div class="text-h2"> {{ words[i] }} </div> </v-row> </v-sheet> </v-carousel-item> </v-carousel> </v-app> </template> ...
Вот так мы и сделали себе милое приложение-карусель с радугой с помощью Vuetify!
Больше контента на plainenglish.io. Подпишитесь на нашубесплатную еженедельную рассылку новостей. Получите эксклюзивный доступ к возможностям написания и советам в нашем сообщества Discord.