У меня есть простая веб-страница с некоторым содержанием Lipsum по центру страницы. Страница отлично работает в Chrome и Firefox. Если я уменьшу размер окна, содержимое будет заполнять окно до тех пор, пока оно не станет невозможным, а затем добавит полосу прокрутки и заполнит содержимое за пределами экрана в нижней части.
Однако в IE11 страница не центрируется. Я могу центрировать страницу в IE, сгибая тело, но если я это сделаю, то содержимое начнет уходить за пределы экрана к верху и срезать верхнюю часть содержимого.
Ниже представлены два сценария. См. Связанные скрипты. Если проблема не сразу очевидна, уменьшите размер окна результатов, чтобы оно создавало полосу прокрутки.
Примечание. Это приложение нацелено только на последние версии Firefox, Chrome и IE (IE11), все из которых поддерживают кандидат в рекомендации Flexbox , поэтому совместимость функций не должна быть проблемой (теоретически).
Изменить : при использовании полноэкранного API для полноэкранного просмотра внешнего div все браузеры правильно центрируются с использованием исходного CSS. Однако после выхода из полноэкранного режима IE возвращается к центру по горизонтали и выравниванию по вертикали по верхнему краю.
Изменить : IE11 использует реализацию Flexbox, не зависящую от производителя. Обновления макета гибкого блока («Flexbox»)
Центрируется и правильно меняет размер в Chrome / FF, не центрируется, но правильно меняет размер в IE11
Скрипка: http://jsfiddle.net/Dragonseer/3D6vw/
html, body
{
height: 100%;
width: 100%;
}
body
{
margin: 0;
}
.outer
{
min-width: 100%;
min-height: 100%;
display: flex;
align-items: center;
justify-content: center;
}
.inner
{
width: 80%;
}
Центрируется правильно во всем, срезает верх при уменьшении размера
Скрипка: http://jsfiddle.net/Dragonseer/5CxAy/
html, body
{
height: 100%;
width: 100%;
}
body
{
margin: 0;
display: flex;
}
.outer
{
min-width: 100%;
min-height: 100%;
display: flex;
align-items: center;
justify-content: center;
}
.inner
{
width: 80%;
}
источник
-ms-flexbox
для IE ..Ответы:
Я обнаружил, что у браузера есть проблема с вертикальным выравниванием внутренних контейнеров, когда установлен только стиль минимальной высоты или когда стиль высоты отсутствует вообще. Что я сделал, так это добавил стиль высоты с некоторым значением, и это устранило проблему для меня.
например :
Итак, теперь у нас есть стиль высоты, но минимальная высота его перезапишет. Таким образом, ie будет счастливым, и мы все еще можем использовать min-height.
Надеюсь, это кому-то поможет.
источник
-ms-flex-align:center;
про IE10. Поддержкаalign-items
была добавлена только в IE11 .min-height
Действительно переопределитьheight
правила, но если содержание превышаетmin-height
это будет просто выходить за рамки. Ответ на @ericodes решает эту проблему и решение работает на всех браузерах, поддерживающих прогибается.Попробуйте обернуть любой div, который у вас есть с
flex-direction: column
помощью flexbox, в контейнер, который также является гибким.Я только что протестировал это в IE11, и он работает. Странное исправление, но до тех пор, пока Microsoft не сделает свое внутреннее исправление ошибок внешним ... этого придется!
HTML:
CSS:
2 примера для тестирования в IE11: http://codepen.io/philipwalton/pen/JdvdJE http://codepen.io/chriswrightdesign/pen/emQNGZ/
источник
min-height
вместо жесткогоheight
правила, сохраняя при этом вертикальное центрирование во всех браузерах, поддерживающих использованиеdisplay: flex
.display:flex
необходимо для оболочки и, возможно, один из них для дочернего элемента: вwidth: 100%
flex-basis:100%
flex-grow:1
зависимости от вашего содержимого / стиля.align-items
. Вы должны обернуть исходный flexbox гибким боксом без этого свойства.align-items
свойства (FlexContainerWrapper)?Вот мое рабочее решение (SCSS):
источник
На всякий случай, если кто-то попадет сюда с той же проблемой, что и у меня, которая конкретно не рассматривается в предыдущих комментариях.
У меня был
margin: auto
внутренний элемент, из-за которого он прилипал к нижней части своего родителя (или внешнего элемента). Для меня это исправило изменение поля наmargin: 0 auto;
.источник
Это известная ошибка, которая, по-видимому, была исправлена внутри Microsoft.
https://connect.microsoft.com/IE/feedback/details/802625/min-height-and-flexbox-flex-direction-column-dont-work-together-in-ie-10-11-preview
источник
Исходный ответ https://github.com/philipwalton/flexbugs/issues/231#issuecomment-362790042
источник
Я обновил обе скрипки. я надеюсь, что это сделает вашу работу.
центрирование
центр и прокрутка
источник
У меня нет большого опыта,
Flexbox
но мне кажется, что принудительная высота наhtml
иbody
тегах вызывают текст , чтобы исчезнуть на вершине , когда resized-- я был не в состоянии проверить в IE , но я обнаружил тот же эффект в Chrome.Я раздвоенный вашей скрипку и удалил
height
иwidth
декларации.Также казалось, что
flex
настройки нужно применить к другимflex
элементам. Однако применительноdisplay: flex
к.inner
вызванным проблемам я явно установил.inner
значениеdisplay: block
и установил.outer
значениеflex
для позиционирования.Я установил минимальную
.outer
высоту для заполнения области просмотраdisplay: flex
, и установил горизонтальное и вертикальное выравнивание:Я поставил
.inner
вdisplay: block
явном виде. В Chrome это выглядело так, как будто он унаследованflex
от.outer
. Я также установил ширину:Это устранило проблему в Chrome, надеюсь, это может сделать то же самое в IE11. Вот моя версия скрипки: http://jsfiddle.net/ToddT/5CxAy/21/
источник
Нашел хорошее решение, которое сработало для меня, проверьте эту ссылку https://codepen.io/chriswrightdesign/pen/emQNGZ/?editors=1100 Сначала мы добавляем родительский div, затем меняем min-height: 100% на min- высота: 100vh. Работает как часы.
источник
Если вы можете определить ширину и высоту родительского элемента, существует более простой способ централизовать изображение, не создавая для него контейнер.
По какой-то причине, если вы определите минимальную ширину, IE также распознает максимальную ширину.
Это решение работает для IE10 +, Firefox и Chrome.
https://jsfiddle.net/HumbertoMendes/t13dzsmn/
источник