z-index vastzetten voor v-menu en v-list: hoe een menu je inhoud laat overlappen in vuetify

Ik heb het volgende menu ingesteld, en ik denk dat je het probleem meteen ziet:

afbeelding

Zoals je mogelijk kan zien, heb ik een v-app-balk die het menu bevat, en een hoofdinhoudsgebied.

Het v-menu wordt overlapt door de v-kaart in de inhoud van de pagina.

Proberen om de z-index eigenschap op v-menu in te stellen deed niet help.

afbeelding

Wat graafwerk leverde interessante informatie op die ik niet wist over z-index: sommige objecten gedragen zich anders, er zijn verschillende z-index stacks die niet met elkaar in verband staan, enz.

Ik beveel deze uitstekende introductie van dingen die je moet weten over z-index .

Oplossing:

De oplossing

Je moet een stijl instellen in v-app-bar. z-index is niet genoeg, je moet ook positie: relatief om het correct weer te geven:

<v-app-bar fluid color=”white” elevation=”2″ style=”position: relative; z-index: 3″>

afbeelding

na de herstelling overlapt het menu nu de v-kaart in de hoofdinhoud - zoals verwacht door de gebruiker die het menu wil gebruiken.

De volledige opmaak (ingekort)

<template>
     <div class="”box" box-default” style="”z-index:2″">
     <v-app>
       <v-content >
         <v-container fluid>
       <v-app-bar fluid color=”white” elevation=”2″ style=”position: relative; z-index: 3″>
         <v-container>
           <v-row>
           …
          <v-spacer></v-spacer>
     <v-menu attach offset-y transition=”v-scale-transition”>
       <template v-slot:activator=”{ on }”>
         <v-btn
           klein
           kleur="primair"
           v-on="aan"
           tekst
         >
         fa fa-bars
           Acties
         </v-btn>
       </template>
       <v-list dense>
       …
         <v-list-item :to=”{ name: ‘Help’ }”>
           fa fa-vraag-cirkelHelp
         </v-list-item>
       </v-list>
       <v-divider class=”my-0″></v-divider>
       …
     </v-menu>
     </v-row>
     …
     </v-container>
     </v-app-bar>
           <router-view></router-view>
         </v-container>
       </v-content>
     </v-app>
     </div>
</template>

Merk op: de hoofdinhoud wordt gerenderd in router-view, (ik gebruik vue-router voor de komende picockpit versie).

Hoe heb ik deze oplossing gevonden?

Ik gebruikte Google Chrome's DevTools en ging handmatig door elke set van wikkelelementen, waarbij ik z-index instelde en experimenteerde met verschillende posities, tot ik het juiste element vond om het op toe te passen.

Toen ging ik in de markup van vue, en paste een stijl toe van "background-color:red", en controleerde of ik het juiste element had gevonden.

Ik heb geprobeerd een z-index eigenschap in te stellen op het vue element dat ik identificeerde (v-app-bar die rendert naar

), dit werd echter niet correct gerenderd. Daarom heb ik de z-index direct in de stijl ingesteld, dit wordt correct toegepast.

Referenties: