
При створенні модального вікна за допомогою flexbox виникла проблема, яка, здається, пов’язана з браузером. Чи існує відомий спосіб вирішення цієї проблеми або обхідний шлях – або ідеї, як її вирішити.
Проблему, яку я намагаюся вирішити, можна розглянути з двох аспектів. По-перше, потрібно вертикально вирівняти модальне вікно, що працює як очікувалося. По-друге, потрібно забезпечити прокрутку модального вікна ззовні, щоб прокручувався весь модальний вікно, а не його вміст (це дозволяє мати розкривні списки та інші елементи інтерфейсу користувача, які можуть виходити за межі модального вікна – наприклад, власний вибір дати тощо).
Однак, коли поєднуються вертикальне центрування з полосами прокрутки, верхню частину модального вікна може стати недоступною, оскільки воно починає витікати за межі. У вищезазначеному прикладі ви можете змінювати розмір, щоб вимусити переповнення, і це дозволяє прокручувати вниз модального вікна, але не вгору (перший абзац вирізаний).
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | .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;   /* Опціональна підтримка для підтвердження відповідності з поведінкою прокрутки в 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, якщо ви розкоментуєте вендорну префіксовану CSS для IE10 – я ще не перевіряв у IE11, але припускаю, що поведінка відповідає поведінці IE10.
Ось посилання на приклад коду (дуже спрощений) https://jsfiddle.net/dh9k18k0/2/.