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 mon 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 cela jusqu'au bas du v-navigation-drawer. J'ai essayé d'utiliser v-flex autour du v-list et du v-btn final, mais en vain.

Qu'est-ce que j'oublie ici?

2
kingJulian 27 janv. 2019 à 02:45

3 réponses

Meilleure réponse

L'ajout de justify-end au bouton et à la liste d'encapsulation 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>
2
Beniamin H 27 janv. 2019 à 01:03

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

Vue.use(Vuetify)

new Vue({
  el: '#app',
  data: () => ({
    drawer: true
  })
})
<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>
2
DigitalDrifter 27 janv. 2019 à 08:38

Il semble que le simple fait d'ajouter fill-height au 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
Ruben Serrano 30 juil. 2019 à 11:41