Подтвердить что ты не робот

Max-height и overflow не прокручиваются на ie9

У меня очень странная проблема на ie9, где div с max-высотой (заданный с помощью calc() и vh) и переполнением auto не прокручивается.

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

введите описание изображения здесь

Мой HTML:

<div class="modal">
  <div class="modal__title">Modal Title</div>
  <div class="modal__body">
    <p>When I am too tall, I should scroll on ie9, but I don't.</p>
  </div>
  <div class="modal__footer">Footer here</div>
</div> 

Соответствующий CSS:

.modal {
  min-width: 500px;
  max-width: 800px;
  border-radius: 4px;
  max-height: 65vh;
  overflow: hidden;
  background-color: white;
  position: fixed;
  top: 15vh;
  left: 50%;
  -webkit-transform: translateX(-50%);
  -ms-transform: translateX(-50%);
  transform: translateX(-50%);
}

.modal__body {
    max-height: calc(65vh - 120px)); // 120 is the combined height of the header and footer
    overflow-y: auto;
}

Я не понимаю, почему это происходит, как ie9 поддержка vh, calc() и max-height. Любые идеи?

JSFiddle Demo: https://jsfiddle.net/sbgg5bja/3/

4b9b3361

Ответ 1

Кажется, это проблема перерисовки при объединении position: fixed и transform: translate.

Вот 2 возможных исправления:

  • Задайте свойство переполнения для прокрутки. I.e, overflow-y:scroll
  • -ms-filter: "progid:DXImageTransform.Microsoft.Matrix(M11=1, M12=0, M21=0, M22=1, SizingMethod='auto expand')";

Src: Как решить проблему перепрошивки IE9 с родителем с фиксированной позицией, который имеет -ms-transform: translate?

Если ни один из них не делает этого, вы можете сбросить transform: translate и использовать, например, display: table, чтобы центрировать его.