Итак, пытаясь сделать полезный модальный с помощью flexbox, я нашел то, что кажется проблемой браузера, и мне интересно, есть ли известное исправление или обходное решение - или идеи о том, как его разрешить.
То, что я пытаюсь решить, имеет два аспекта. Во-первых, получение модального окна с вертикальной ориентацией, которое работает так, как ожидалось. Во-вторых, чтобы заставить модальное окно прокручиваться - извне, поэтому все модальные окна прокручиваются, а не содержимое внутри него (это значит, что у вас могут быть выпадающие списки и другие элементы пользовательского интерфейса, которые могут простираться за пределы ограничений модальности - как пользовательский выбор даты и т.д.)
Однако при объединении вертикального центрирования с полосами прокрутки верхняя часть модальной формы может стать недоступной, поскольку она начинает переполняться. В приведенном выше примере вы можете изменить размер, чтобы заставить переполнение, и при этом он позволяет прокручивать нижнюю часть модального, но не вверху (первый абзац отключен).
Здесь ссылка на примерный код (очень упрощенная)
https://jsfiddle.net/dh9k18k0/2/
.modal-container {
position: fixed;
top: 0;
left: 0;
bottom: 0;
right: 0;
background: rgba(0, 0, 0, 0.5);
overflow-x: auto;
}
.modal-container .modal-window {
display: -ms-flexbox;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
// Optional support to confirm scroll behavior makes sense in IE10
//-ms-flex-direction: column;
//-ms-flex-align: center;
//-ms-flex-pack: center;
height: 100%;
}
.modal-container .modal-window .modal-content {
border: 1px solid #ccc;
border-radius: 4px;
background: #fff;
width: 100%;
max-width: 500px;
padding: 10px
}
Этот эффект (текущий) Firefox, Safari, Chrome и Opera.. Он действительно ведет себя корректно в IE10, если вы прокомментируете в IE10 vender префикс css - я еще не тестировал тестирование в IE11, но предполагаю, что поведение соответствует IE10.
Любые идеи были бы хорошими. Полезны также ссылки на известные проблемы или аргументы в пользу такого поведения.