Как сделать раскрывающееся меню в nuxt.j?

Пользователь

от shayna.buckridge , в категории: JavaScript , год назад

Как сделать раскрывающееся меню в nuxt.j?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от chloe.keebler , год назад

@shayna.buckridge 

Для создания раскрывающегося меню в Nuxt.js можно использовать стандартные HTML, CSS и JavaScript или использовать библиотеки компонентов, такие как Vuetify, Bootstrap Vue и Element UI. Вот пример использования Vuetify для создания раскрывающегося меню:

  1. Установите Vuetify в ваш проект:
1
npm install vuetify --save


  1. Импортируйте Vuetify в ваш проект в файле nuxt.config.js:
1
2
3
4
5
6
7
8
9
// nuxt.config.js

export default {
  // ...
  plugins: [
    '@/plugins/vuetify'
  ],
  // ...
}


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
// plugins/vuetify.js

import Vue from 'vue'
import Vuetify from 'vuetify'
import 'vuetify/dist/vuetify.min.css'

Vue.use(Vuetify)

export default new Vuetify({
  icons: {
    iconfont: 'mdi'
  }
})


  1. Создайте компонент для меню:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<template>
  <v-menu offset-y>
    <template v-slot:activator="{ on }">
      <v-btn v-on="on">Меню</v-btn>
    </template>
    <v-list>
      <v-list-item v-for="(item, index) in items" :key="index" @click="navigate(item.route)">
        <v-list-item-title>{{ item.title }}</v-list-item-title>
      </v-list-item>
    </v-list>
  </v-menu>
</template>

<script>
export default {
  data () {
    return {
      items: [
        { title: 'Главная', route: '/' },
        { title: 'О нас', route: '/about' },
        { title: 'Контакты', route: '/contacts' }
      ]
    }
  },
  methods: {
    navigate (route) {
      this.$router.push(route)
    }
  }
}
</script>


В этом компоненте мы используем v-menu из Vuetify для создания меню. v-slot:activator используется для определения элемента, который отображается в качестве кнопки для открытия/закрытия меню. v-list и v-list-item используются для отображения пунктов меню.

  1. Добавьте компонент меню в шаблон вашего приложения:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<template>
  <v-app>
    <v-navigation-drawer app>
      <!-- ваша навигация здесь -->
    </v-navigation-drawer>
    <v-app-bar app>
      <v-toolbar-title>
        <nuxt-link to="/">My App</nuxt-link>
      </v-toolbar-title>
      <my-menu></my-menu>
    </v-app-bar>
    <v-content>
      <nuxt />
    </v-content>
  </v-app>
</template>

<script>
import MyMenu from '~/components/MyMenu.vue'

export default {
  components: {
    MyMenu
  }
}
</script>


В этом примере мы используем v-app-bar из Vuetify для создания верхней панели приложения. Компонент меню MyMenu добавлен внутри v-app-bar. Обратите внимание,