Je suis l'exemple: https://vuetifyjs.com/en/components/tabs#content
<v-tabs-items v-model="model"> <v-tab-item v-for="i in 3" :key="i" :value="`tab-${i}`" > <v-card flat> <v-card-text v-text="text"></v-card-text> </v-card> </v-tab-item> </v-tabs-items>
Cependant, je veux que la v-card prenne le reste de la hauteur. Comment puis-je y parvenir?
3 Réponses :
J'ai rencontré ce problème aujourd'hui. Une solution possible qui a fonctionné pour moi était de comprendre la hiérarchie des classes générées par vuetify, en utilisant l'inspecteur, puis de pirater le css pour ces classes spécifiques. Ceci était basé sur la recommandation dans cette réponse SO qui suggère de modifier la hauteur de Donc, il est nécessaire de modifier la hauteur css de Dans mon code, j'ai fini par définir également Voici un codepen avec ma solution https://codepen.io/anon/pen/wNEOdy , adapté pour l'exemple que vous avez publié. HTML: CSS: JS: .v-tabs__content code>. Malheureusement, cette classe ne semble plus exister et à la place (dans l'exemple que vous avez publié) la hiérarchie générée est quelque chose du genre
new Vue({
el: '#app',
data () {
return {
model: 'tab-2',
text: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.'
}
}
})
v-window
, v-window__container
et v-window-item
pour vous assurer que le conteneur de contenu de l'onglet s'étire à la taille de son parent comme vous le souhaitez. Enfin, nous devons changer la hauteur du contenu interne, dans ce cas la v-card
. display: flex pour le wrapper du conteneur, et
flex
uniquement pour la .v-window
. L'utilisation de flex garantit que tout s'aligne correctement sous la barre d'outils et assure enfin la bonne hauteur étirée pour le contenu de l'onglet. .tab-wrapper {
height:100%; /* Set to desired height of entire tabbed section, or use flex, or ... */
display:flex;
flex-direction: column;
}
.tab-wrapper .v-window{
flex: 1;
}
.tab-wrapper .v-window__container,
.tab-wrapper .v-window-item {
height: 100%;
}
/* customise the dimensions of the card content here */
.tab-wrapper .v-card {
height: 100%;
}
<div id="app">
<v-app id="inspire">
<div class="tab-wrapper">
<v-toolbar
color="cyan"
dark
tabs
>
<v-toolbar-side-icon></v-toolbar-side-icon>
<v-toolbar-title>Page title</v-toolbar-title>
<v-spacer></v-spacer>
<v-btn icon>
<v-icon>search</v-icon>
</v-btn>
<v-btn icon>
<v-icon>more_vert</v-icon>
</v-btn>
<v-tabs
slot="extension"
v-model="model"
centered
color="cyan"
slider-color="yellow"
>
<v-tab
v-for="i in 3"
:key="i"
:href="`#tab-${i}`"
>
Item {{ i }}
</v-tab>
</v-tabs>
</v-toolbar>
<v-tabs-items v-model="model">
<v-tab-item
v-for="i in 3"
:key="i"
:value="`tab-${i}`"
>
<v-card flat>
<v-card-text v-text="text"></v-card-text>
</v-card>
</v-tab-item>
</v-tabs-items>
</div>
</v-app>
</div>
L'approche donnée par amatyjajo ci-dessus fonctionne bien, mais si vous travaillez avec des composants à l'intérieur d'un bloc de style scoped
, vous devrez utiliser un sélecteur profond pour obtenir aux conteneurs Windows imbriqués comme:
.tab-items-row >>> .v-window__container, .tab-items-row >>> .v-window-item { height: 100%; }
<style> .v-window__container { height: 100% } </style> did it for me
Merci! J'ai dû ajouter! Important, pour ne pas être écrasé dans les sous-composants
Votre codepen est vide, veuillez le mettre à jour.
Désolé mon mauvais. En gros, l'exemple est ici: vuetifyjs.com/en/components/tabs#content
Je ne sais pas si cela répond à la question, mais pour que les éléments d'onglet remplissent toute la hauteur restante, vous pourriez être intéressé par cette approche stackoverflow.com/a / 61855170/5598194