Странности позиционирования и выравнивания в IE11
На странице есть абсолютно позиционированный контейнер. Его размеры являются плавающими (30%-90% окна). Задача центрировать данный контейнер по горизонтали и вертикали в окне.
Вот исходный код: <html> <head> <title> </title> </head> <body class="StyleBody"> <style type="text/css"> .content-container { background-color: linen; padding: 0px; margin: 0px; box-sizing: border-box; -webkit-border-radius: 5%; -moz-border-radius: 5%; -o-border-radius: 5%; border-radius: 5%; line-height: normal; border: 4px solid wheat; } .content-container { position: absolute; display: inline-block; max-width: 90%; max-height: 90%; min-width: 30%; min-height: 30%; margin: auto; top: 0px; right: 0px; bottom: 0px; left: 0px; } .content-container .content { display: inline-block; overflow: auto; padding: 0px; text-align: left; margin: 10px; } </style> <div class="content-container" style=""> <div class="content"> Некое содержимое </div> </div> </body> </html> Решение с нулевыми top, left, right, bottom + margin: auto взято из сети, как одно из наиболее распространенных. В Chrome, FF, Safari все работает. В IE по какой-то неведомой мне причине контейнер жмется влево. Я полез в стили, чтобы понять, что же происходит. В рассчитанных значениях я вижу, что размер margin-left и margin-right совпадают и не являются нулевыми. Параметры left и right также имеют одинаковое значение. Position = absolute. Кроме того, вертикальное центрирование применилось к контейнеру. По идее все условия для горизонтального центрирования присутствуют. Но как раз горизонтально блок не стоит по центру родителя. А вот если вручную прописать нужный margin-left, то блок смещается правее... Можно также прописать вручную left - блок смещается в центр, а величина margin-left и margin-right становится вполовину меньше... Я полез исследовать раскладку - в ней я обнаружил явное отличие от Chrome - наличие верхнего Offset, при этом слева Offset = 0. Что интересно, так это то, что согласно раскладке этот верхний Offset вываливается за доступные размеры... Версия браузера 11.0.9600.17728 Кто-нибудь знает причины такого поведения браузера? ЗЫ Данное поведение наблюдается как в составе страницы, так и на чистой странице. Т.е. это не влияние сторонних стилей. PSS Еще наблюдения: В раскладке я дважды кликаю по ширине контейнера (или по левому offset), ввожу произвольное значение и жму Esc - раскладка начинает меняться: контейнер центрируется, а также изменяются левый offset. ширина контейнера и боковые margin. Причем изменения происходят каждый раз. Если box-sizing у .content-container изменить на content-box, то на первый раз происходит центрирование контейнера за счет появления левого offset в раскладке, равного margin, а далее уже ничего не меняется... Я в полной прострации...:help: |
<!DOCTYPE HTML> <html> ...... body, html { width: 100%; height: 100%; margin: 0; padding: 0; } .content-container { display: block; width: 90%; height: 90%; margin: 2.5% auto; } |
Да про "жесткий" размер я знаю... Я же хотел, чтобы при малом содержимом .content-container занимал меньшую площадь, а за счет margin'ов центрировался. Видимо так не выйдет...(((
|
Цитата:
Так же для центрирования можно использовать Flexbox. http://html5.by/blog/flexbox/ Но это будет работать только в современных браузерах... |
Цитата:
|
Часовой пояс GMT +3, время: 16:40. |