5
votes

Vuetify: Comment ajouter un avatar ou une icône en bas d'un tiroir de navigation

J'essaie de créer une barre latérale, en utilisant Vuetify, où il y aura des actions communes en haut et l'avatar de l'utilisateur en bas.

J'utilise v-navigation-drawer et jusqu'à présent, j'ai trouvé ceci:

<template>
    <v-navigation-drawer 
        app 
        permanent
        mini-variant="true"
        class="cyan lighten-3"
    >
        <v-list>
            <!-- Timeline action -->
            <v-list-tile> 
                <v-list-tile-action>
                    <v-btn
                        flat
                        exact
                        icon 
                        color="white"
                    >     
                        <v-icon>timeline</v-icon>
                    </v-btn>              
                </v-list-tile-action>
            </v-list-tile>
            <!-- Sms action -->
            <v-list-tile> 
                <v-list-tile-action>
                    <v-btn
                        flat
                        exact
                        icon 
                        color="white"
                    >     
                        <v-icon>sms</v-icon>
                    </v-btn>              
                </v-list-tile-action>
            </v-list-tile>
            <!-- Calendar action -->
            <v-list-tile> 
                <v-list-tile-action>
                    <v-btn
                        flat
                        exact
                        icon 
                        color="white"
                    >     
                        <v-icon>calendar_today</v-icon>
                    </v-btn>              
                </v-list-tile-action>
            </v-list-tile>
            <!-- Settings Action -->
            <v-list-tile> 
                <v-list-tile-action>
                    <v-btn
                        flat
                        exact
                        icon
                        color="white"
                    >     
                        <v-icon>settings</v-icon>
                    </v-btn>              
                </v-list-tile-action>
            </v-list-tile>
        </v-list>
        <v-divider></v-divider>
        <!--This should be the avatar but I used a btn for demo purposes-->
        <v-btn
            flat
            exact
            icon
            bottom
            color="red"
        >     
            <v-icon>timeline</v-icon>
        </v-btn>              

    </v-navigation-drawer>
</template>
<!-- <script> and <style> follow after this-->

Donc, comme vous pouvez le voir après ma v-list j'ai utilisé un v-divider et placé l'icône (ou l'avatar) ci-dessous.

Le problème est que je ne peux pas déplacer tout cela vers le bas du v-navigation-drawer . J'ai essayé d'utiliser v-flex autour de la v-list et du v-btn final, mais en vain.

Qu'est-ce que j'oublie ici?


0 commentaires

4 Réponses :


2
votes

L'ajout de justify-end au bouton et à la liste de wrapping et btn dans v-layout avec column et fill-height devrait faire le travail pour vous: https://codepen.io/anon/pen/daMXqp?editors=1000

  <v-layout align-center justify-space-between column fill-height>
    <v-list>
      ...
    </v-list>
    <v-btn
           justify-end
           flat
           exact
           icon
           color="green"
           ><v-icon>dashboard</v-icon></v-btn> 
  </v-layout>


3 commentaires

Merci pour votre réponse, mais cela ne fait pas descendre l'icône complètement. Vous pouvez vous voir si vous développez le panneau de sortie de votre codepen.


Oui, tu as raison. J'essaye de trouver une autre solution.


Cela m'a aidé à trouver une solution de travail. J'ai mis à jour la réponse.



2
votes

Enveloppez votre liste de navigation et votre avatar dans une v-layout en v-layout en v-layout avec les accessoires justify-space-between , column et fill-height :

<link href='https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900|Material+Icons' rel="stylesheet">
<link href="https://cdn.jsdelivr.net/npm/vuetify/dist/vuetify.min.css" rel="stylesheet">

<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.22/vue.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vuetify/dist/vuetify.js"></script>


<v-app id="app">
  <v-navigation-drawer v-model="drawer" fixed app>
    <v-layout fill-height column justify-space-between>
      <v-list dense>
        <v-list-tile @click="">
          <v-list-tile-action>
            <v-icon>home</v-icon>
          </v-list-tile-action>
          <v-list-tile-content>
            <v-list-tile-title>Home</v-list-tile-title>
          </v-list-tile-content>
        </v-list-tile>
        <v-list-tile @click="">
          <v-list-tile-action>
            <v-icon>contact_mail</v-icon>
          </v-list-tile-action>
          <v-list-tile-content>
            <v-list-tile-title>Contact</v-list-tile-title>
          </v-list-tile-content>
        </v-list-tile>
      </v-list>
      <v-avatar color="red">
        <v-icon dark>account_circle</v-icon>
      </v-avatar>
    </v-layout>
  </v-navigation-drawer>
  <v-toolbar color="indigo" dark fixed app>
    <v-toolbar-side-icon @click.stop="drawer = !drawer"></v-toolbar-side-icon>
    <v-toolbar-title>Application</v-toolbar-title>
  </v-toolbar>
  <v-content>
    <v-container fluid fill-height>
      <v-layout justify-center align-center>
        <v-flex text-xs-center>

        </v-flex>
      </v-layout>
    </v-container>
  </v-content>
</v-app>
Vue.use(Vuetify)

new Vue({
  el: '#app',
  data: () => ({
    drawer: true
  })
})


0 commentaires

0
votes

Il semble que le simple ajout de fill-height à la v-layout remplira la hauteur de l'élément, donc tout autre élément que vous ajouterez ensuite sera forcé d'être en bas.


0 commentaires

5
votes

Vous pouvez utiliser un emplacement à l'intérieur de votre composant de tiroir de navigation comme ceci:

<template v-slot:append>
    <div class="pa-2">
       <v-btn block>Logout</v-btn>
    </div>
 </template>


2 commentaires

Merci pour cela! Ils devraient rendre cela plus clair dans la documentation.


Très bonne réponse. Et c'est maintenant dans la documentation ici . N'oubliez pas que vous pouvez modifier cette page Github