- Сделать контейнер контейнером flexbox.
flex-grow:0;
На втором элементе. flex-grow:1;
На первом элементе.
Шаг 1:
<v-container fluid fill-height pa-0>
Становится:
<v-container fluid pa-0 class="d-flex flex-column flex-grow-1 fill-parent-height">
Последний класс есть пользовательский .fill-parent-height{ height:100%; }
Шаг 2:
<v-row no-gutters class="top-row">
Становится:
<v-row no-gutters class="top-row flex-grow-1 flex-shrink-1">
Шаг 3:
<v-row no-gutters class="bottom-row">
Становится:
<v-row no-gutters class="bottom-row flex-grow-0 flex-shrink-0">
Демо
new Vue({
el: '#app',
vuetify: new Vuetify(),
})
.grid-item-blue {
background-color: lightblue;
}
.grid-item-green {
background-color: lightgreen;
overflow-y: scroll;
}
.grid-item-pink {
background-color: pink;
height: 100px;
}
.grid-item-green>p{
height:9000px;
border:10px solid;
margin:20px;
}
.fill-parent-height {
height: 100%;
}
.top-row{
min-height: 0;
}
<link href="https://cdn.jsdelivr.net/npm/vuetify@2.x/dist/vuetify.min.css" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/vue@2.x/dist/vue.js"></script>
<script src="https://cdn.jsdelivr.net/npm/vuetify@2.x/dist/vuetify.js"></script>
<div id="app">
<v-app id="inspire">
<v-app-bar app fixed dark>
<v-toolbar-title>Toolbar</v-toolbar-title>
</v-app-bar>
<v-content style="height:100vh">
<!-- <v-container fluid fill-height pa-0> -->
<v-container fluid pa-0 class="d-flex flex-column flex-grow-1 fill-parent-height">
<!-- <v-row no-gutters class="top-row"> -->
<v-row no-gutters class="top-row flex-grow-1 flex-shrink-1">
<v-col cols="9" class="grid-item-blue fill-parent-height">
fill screen
</v-col>
<v-col cols="3" class="grid-item-green fill-parent-height">
independent vertical scroll
<p>long element</p>
</v-col>
</v-row>
<!-- <v-row no-gutters class="bottom-row"> -->
<v-row no-gutters class="bottom-row flex-grow-0 flex-shrink-0">
<v-col cols="12" class="grid-item-pink">fixed height, always on bottom</v-col>
</v-row>
</v-container>
</v-content>
<v-footer app dark>
<span>Footer</span>
</v-footer>
</v-app>
</div>
Редактировать:
Чтобы зеленый элемент можно было прокручивать, нам нужно распространить Высота вниз от html или использование единиц просмотра в произвольном элементе контейнера, я выбрал <v-content style="height:100vh">
Я обновляю демонстрацию выше.