DIV с максимальной высотой тела и flex не работает правильно на IE11 - PullRequest
0 голосов
/ 11 января 2019

У меня есть следующие CSS и HTML как минимум, чтобы воспроизвести проблему. На Chrome все хорошо. IE11 нет. Есть ли способ исправить CSS и HTML, чтобы он работал как в Chrome, так и в IE11?

<html>
    <style>
        .max-box {
            background-color: #00e;
            width: 100px;
            max-height: 80%;
            padding: 5px;
            display: flex;
            flex: 1 1 auto;
        }
        .fixed-box {
            background-color: #00e;
            width: 100px;
            height: 100px;
            padding: 5px;
            display: flex;
            flex: 1 1 auto;
        }
        .wrapper {
            display: flex;
            flex: 1 1 auto;
            flex-direction: column;
        }
        .content {
            background-color: #0e0;
            display: flex;
            flex: 1 1 auto;
            flex-direction: column;
            overflow: auto;
        }
        .footer {
            background-color: #e00;
            display: flex;
            flex: 0 0 auto;
        }
    </style>
    <body>
        <div class="max-box" style="float: left">
            <div class="wrapper">
                <div class="content">
                    <span>a1</span><span>a2</span>
                </div>
                <div class="footer">
                    <span>b1</span><span>b2</span>
                </div>
            </div>
        </div>
        <div class="max-box" style="float: left">
            <div class="wrapper">
                <div class="content">
                    <span>a1</span><span>a2</span><span>a3</span><span>a4</span><span>a5</span><span>a6</span><span>a7</span><span>a8</span><span>a9</span>
                </div>
                <div class="footer">
                    <span>b1</span><span>b2</span>
                </div>
            </div>
        </div>
        <div class="fixed-box">
            <div class="wrapper">
                <div class="content">
                    <span>a1</span><span>a2</span><span>a3</span><span>a4</span><span>a5</span><span>a6</span><span>a7</span><span>a8</span><span>a9</span>
                </div>
                <div class="footer">
                    <span>b1</span><span>b2</span>
                </div>
            </div>
        </div>
    </body>
</html>

Итак, требования к поведению Chrome:

  1. Поле 1 не будет занимать место ниже, если содержание мало.
  2. Блок 2 будет занимать не более 80% высоты браузера, а содержимое прокручивается. Отзывчив, если высота браузера меняется.
  3. Поле 3 имеет фиксированную высоту, а содержимое прокручивается и располагается на том же расстоянии, что и поле 2.

Что IE11 не удалось:

  1. Бокс 1 и Бокс 2 не позволяют прокручивать содержимое, если высота браузера меньше, чем содержимое.
  2. Контент Box 3 можно прокручивать, но все значения ограничены.

1 Ответ

0 голосов
/ 13 января 2019

так как это кажется без ответа, я постараюсь дать вам два моих цента. IE и другим браузерам обычно требуется автоматический префикс для правильной работы flexbox. Попробуйте следующее: именно ваш код запускается через авторефиксатор

        .max-box {
            background-color: #00e;
            width: 100px;
            max-height: 80%;
            padding: 5px;
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-flex: 1;
                -ms-flex: 1 1 auto;
                    flex: 1 1 auto;
        }
        .fixed-box {
            background-color: #00e;
            width: 100px;
            height: 100px;
            padding: 5px;
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-flex: 1;
                -ms-flex: 1 1 auto;
                    flex: 1 1 auto;
        }
        .wrapper {
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-flex: 1;
                -ms-flex: 1 1 auto;
                    flex: 1 1 auto;
            -webkit-box-orient: vertical;
            -webkit-box-direction: normal;
                -ms-flex-direction: column;
                    flex-direction: column;
        }
        .content {
            background-color: #0e0;
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-flex: 1;
                -ms-flex: 1 1 auto;
                    flex: 1 1 auto;
            -webkit-box-orient: vertical;
            -webkit-box-direction: normal;
                -ms-flex-direction: column;
                    flex-direction: column;
            overflow: auto;
        }
        .footer {
            background-color: #e00;
            display: -webkit-box;
            display: -ms-flexbox;
            display: flex;
            -webkit-box-flex: 0;
                -ms-flex: 0 0 auto;
                    flex: 0 0 auto;
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...