У меня есть страница, разделенная на три столбца: навигация слева (фиксированная ширина), содержимое (оставшаяся ширина), навигация справа (фиксированная ширина). Ожидаемое поведение заключается в том, что при изменении размера экрана средний столбец (контент) изменяет размеры в ответ. В общем, это работает. Проблема в том, что мой центральный контент иногда содержит html таблиц, и иногда эти таблицы должны отображать больше данных, чем имеется для них горизонтальное пространство. В этой ситуации я ожидаю, что мои таблицы будут прокручиваться горизонтально, оставаясь в пределах нормальных границ столбца содержимого.
На самом деле происходит то, что таблицы растут, занимая всю ширину экрана (увеличивая содержимое колонка вместе с ними), что полностью нарушает мой интерфейс. Вместо столбцов, появляющихся рядом на странице, они располагаются вертикально. В качестве обходного пути я заставил свою страницу установить наблюдателя на событие изменения размера окна и сохранить ширину экрана в моем хранилище данных, чтобы компоненты моей таблицы могли использовать его в качестве вычисляемой подпорки и соответственно изменять свою максимальную ширину, но это заметно медлительно. sh и не является приемлемым решением в долгосрочной перспективе.
Я пытался решить эту проблему с использованием чистого css (и у меня есть ощущение, что должен быть выход), но не достиг никакого прогресса в этот фронт (кроме использования максимальной ширины, что не идеально). У меня также есть ощущение, что это та же проблема root, что и аналогичная проблема, с которой я столкнулся некоторое время назад .
new Vue({
el: "#app",
data: {}
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.17/vue.js"></script>
<script src="https://unpkg.com/bootstrap-vue@2.5.0/dist/bootstrap-vue.min.js"></script>
<link href="https://unpkg.com/bootstrap@4.4.1/dist/css/bootstrap.min.css" rel="stylesheet" />
<link href="https://unpkg.com/bootstrap-vue@2.5.0/dist/bootstrap-vue.css" rel="stylesheet" />
<div id="app">
<b-container fluid>
<b-row>
<b-col cols="auto">
<div>left col</div>
</b-col>
<b-col>
<b-button class="w-100" v-b-toggle="'collapse'">center col</b-button>
<b-collapse id="collapse">
<div class="w-100">
<b-table-simple responsive>
<b-thead>
<b-tr>
<b-th>
Question:
</b-th>
<b-th v-for="i in 50" :key="i">{{ i }}
</b-th>
</b-tr>
</b-thead>
</b-table-simple>
</div>
</b-collapse>
</b-col>
<b-col cols="auto">
<div>right col</div>
</b-col>
</b-row>
</b-container>
</div>