Установите максимальную высоту, чтобы заполнить все доступное пространство - PullRequest
2 голосов
/ 19 октября 2019

Мое веб-приложение имеет несколько областей, размещенных на странице. В основном:

<body>
  <nav>       <-- top nav bar
  <ol>        <-- breadcrumb
  <div>       <-- row with buttons
  <div class="overflow-auto">
    <table>   <-- run-time growing table
  </div>
  <footer>    <-- sticky footer 
</body>

Во время выполнения мои скрипты добавляют строки в таблицу. Чтобы заставить работать класс overflow-auto, я должен установить значение max-height. Если я установлю его на 100%, он будет расти как без переполнения. Это работает, если я устанавливаю только значение px.

Моя цель, вместо этого, состоит в том, чтобы заполнить все доступное пространство (таким образом, это зависит от браузера, ширины и т. Д.) Между предыдущим div (строка скнопки) и липкий нижний колонтитул.

Другими словами, я хочу, чтобы пользователь всегда видел нижний колонтитул, поэтому при достижении таблицы функция переполнения должна начать работать.

Не знаюпонять, может ли это быть легко обработано с некоторыми конкретными классами, или я должен вручную вычислить доступную высоту (если даже возможно ...).

ОБНОВЛЕНИЕ

Я не могу управлять этим для работы сбоковая панель. Полный код:

<body class="vh-100 d-flex flex-column overflow-hidden">
<nav id="nav_top" class="navbar navbar-expand navbar-dark bg-dark static-top">
    <ul class="navbar-nav d-none d-md-inline-block form-inline ml-auto mr-0 mr-md-3 my-2 my-md-0">
        <li class="nav-item">
            <h5>
                <span class="badge badge-secondary">BLABLA</span>
            </h5>
        </li>
    </ul>
</nav>
<div id="wrapper">
    <ul class="sidebar navbar-nav">
        <li class="nav-item active">
            <a class="nav-link" href="index.php">
                <span>NAV 1</span>
            </a>
        </li>
        <li class="nav-item">
            <a class="nav-link" href="index.php">
                <span>NAV 2</span>
            </a>
        </li>
    </ul>
    <div id="content-wrapper">
        <div class="container-fluid">
            <ol class="breadcrumb">
                <li class="breadcrumb-item">
                    <a href="#">Home</a>
                </li>
                <li class="breadcrumb-item active">Current page</li>
            </ol>
            <button type="button" class="btn btn-info mb-3">BUTTON</button>
            <div id="content" class="row overflow-auto">
                <div class="col-12 table-responsive">
                    <table id="tableParameters" class="table table-sm">
                        <thead class="thead-light">
                            <tr>
                                <th scope="col">COL 1</th>
                                <th scope="col">COL 2</th>
                                <th scope="col">COL 3</th>
                            </tr>
                        </thead>
                        <tbody>
                            <tr>
                                <td>table</td>
                                <td>table</td>
                                <td>table</td>
                            </tr>
                            <tr>
                                <td>table</td>
                                <td>table</td>
                                <td>table</td>
                            </tr>
                            <tr>
                                <td>table</td>
                                <td>table</td>
                                <td>table</td>
                            </tr>
                        </tbody>
                    </table>
                </div>
            </div>
        </div>
    </div>
</div>
</body>

Мне не ясно, что влияет на поведение overflow-auto . Мне нужны row / col div для того, чтобы сохранить поля.

1 Ответ

2 голосов
/ 19 октября 2019

Думаю, вы захотите использовать flexbox для этого ...

<body class="vh-100 d-flex flex-column overflow-hidden">
  <nav>       <-- top nav bar -->
  <ol>        <-- breadcrumb -->
  <div>       <-- row with buttons -->
  <div class="overflow-auto">
    <table>   <-- run-time growing table -->
  </div>
  <footer class="mt-auto">    <-- sticky footer -->
</body>
  • vh-100 - делает высоту всего окна просмотра тела
  • d-flex flex-column - makeотображение тела: flex, flex-direction: column
  • overflow-hidden - предотвращает прокрутку тела
  • mt-auto - чтобы нижний колонтитул прилипал к нижней части

Демонстрация: https://www.codeply.com/go/FSrBOdRVFG

В основном на это уже отвечали: Начальная загрузка 4 оставшейся высоты заполнения строки
Как заставить строку растянуть оставшуюся высоту
Bootstrap 4: прокручиваемый ряд, заполняющий оставшуюся высоту

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...