У меня довольно сложная схема Flexbox (несколько уровней в глубину). Кажется, что все работает нормально, пока я не включу некоторые отзывчивые изображения в flexboxes. Я заметил, что родительский элемент не расширяется вертикально, чтобы обеспечить высоту изображения.Отзывчивые изображения внутри вложенных flexboxes разливаются за пределами их родителей?
Из-за некоторые требования, мы должны использовать несколько версии реализации Flexbox например:
.foo {
-webkit-box-orient: horizontal;
-moz-box-orient: horizontal;
box-orient: horizontal;
-ms-flex-direction: row;
-webkit-flex-direction: row;
flex-direction: row;
display: -ms-flexbox;
display: -webkit-box;
display: -moz-box;
display: -webkit-flexbox;
display: box;
display: flex;
}
Fiddle
(Pardon рассеянного код, это frankensteined версия вытянула от Sass/Углового проект, который генерируется с помощью нескольких функций Sass)
Основной макет CSS:
// main wrapper for the page
.international {
-webkit-box-orient: vertical;
-moz-box-orient: vertical;
box-orient: vertical;
-ms-flex-direction: column;
-webkit-flex-direction: column;
flex-direction: column;
display: -ms-flexbox;
display: -webkit-box;
display: -moz-box;
display: -webkit-flexbox;
display: box;
display: flex;
height: 100%;
width: 100%;
}
// primary header container
.skin__header {
-webkit-box-orient: horizontal;
-moz-box-orient: horizontal;
box-orient: horizontal;
-ms-flex-direction: row;
-webkit-flex-direction: row;
flex-direction: row;
display: -ms-flexbox;
display: -webkit-box;
display: -moz-box;
display: -webkit-flexbox;
display: box;
display: flex;
}
// container for page headers
.headings {
flex-grow: 1;
}
// right hand content within the header
.branding {
-webkit-box-orient: horizontal;
-moz-box-orient: horizontal;
box-orient: horizontal;
-ms-flex-direction: row;
-webkit-flex-direction: row;
flex-direction: row;
display: -ms-flexbox;
display: -webkit-box;
display: -moz-box;
display: -webkit-flexbox;
display: box;
display: flex;
flex-shrink: 1;
}
// container around both images
.branding__images {
order: 1;
justify-content: flex-end;
-webkit-box-orient: horizontal;
-moz-box-orient: horizontal;
box-orient: horizontal;
-ms-flex-direction: row;
-webkit-flex-direction: row;
flex-direction: row;
display: -ms-flexbox;
display: -webkit-box;
display: -moz-box;
display: -webkit-flexbox;
display: box;
display: flex;
align-items: center;
}
// container for logo
.branding__logo {
order: 1;
}
// container for text
.branding__text {
-webkit-box-orient: horizontal;
-moz-box-orient: horizontal;
box-orient: horizontal;
-ms-flex-direction: row;
-webkit-flex-direction: row;
flex-direction: row;
display: -ms-flexbox;
display: -webkit-box;
display: -moz-box;
display: -webkit-flexbox;
display: box;
display: flex;
align-items: flex-start;
}
// primary center content of page
.content {
-webkit-box-orient: horizontal;
-moz-box-orient: horizontal;
box-orient: horizontal;
-ms-flex-direction: row;
-webkit-flex-direction: row;
flex-direction: row;
display: -ms-flexbox;
display: -webkit-box;
display: -moz-box;
display: -webkit-flexbox;
display: box;
display: flex;
flex-grow: 1;
}
// primary container for the footer
.skin__footer {
-webkit-box-orient: horizontal;
-moz-box-orient: horizontal;
box-orient: horizontal;
-ms-flex-direction: row;
-webkit-flex-direction: row;
flex-direction: row;
display: -ms-flexbox;
display: -webkit-box;
display: -moz-box;
display: -webkit-flexbox;
display: box;
display: flex;
}
Логически, мой мозг говорит: высота заголовка и нижнего колонтитула определяется их содержимым для браузера, а затем flexbox заставляет поле содержимого центра заполнять все оставшееся пространство. Так как изображения внутри заголовка растут, высота заголовка растет, а область содержимого сжимается вертикально.
Еще большее недоумение, текстовое содержимое делает расширяет высоту заголовка, как ожидалось.
Без содержащихся divs вокруг изображений flexbox растягивает изображения и искажает соотношение сторон. Я предположил, что содержащий div будет управляться через flexbox, в то время как изображение (установленное max-width: 100%) будет масштабироваться до разрешенного размера в этом контейнере.
Что мне здесь не хватает?
Примечание: Я видел некоторые другие simimlar вопросы, но никто не похоже, чтобы быть точным или предложить решение, которое подходит. например http://bnj.bz/0D3T1I3v2C0Y и http://bnj.bz/1B3n0W2H1J21
* Все * кода в скрипке необходимо воспроизвести проблему? – cimmanon
Я вернулся и удалил пару неиспользуемых компонентов и переход, которые я пропустил. Я также удалил сброс. Обновлена скрипка: http://jsfiddle.net/benjamincharity/47fE5/9/embedded/result/ – Benjamin