Я использую flexbox для создания простого и элегантного адаптивного макета на основе flexbox. Вот пример HTML:
<div class="box">
<section class="box concise">
<div class="box">
this is just for test
</div>
</section>
<!-- I can add more sections here,
to serve as "cards", for example -->
</div>
Вот стили:
.box {
display: flex;
flex-wrap: wrap;
}
.box>* {
flex-basis: 0;
flex-grow: 1;
max-width: 100%;
}
.box>.concise {
flex-basis: auto;
flex-grow: 0;
}
Назначение flex-basis: 0; flex-grow: 1; max-width: 100%;
- это использование моей таблицы стилей по умолчанию для всех дочерних элементов Flex, так что каждый дочерний элемент Flex будет расти только настолько, насколько это необходимо для содержимого, но при этом заполнять ширину, при необходимости оборачивая. Работает хорошо.
Необязательный flex-basis: auto; flex-grow: 0;
предназначен для того, чтобы заставить flex-дочерний элемент расти только по мере необходимости, как и прежде, но не увеличиваться больше, чем, по существу, сжимая гибкий элемент вокруг содержимого.
Я буду использовать <section>
, чтобы дифференцировать «карту», которая не увеличивается, если в этом нет необходимости.
section {
background-color: white;
border: 1px solid black;
}
Это прекрасно смотрится в Firefox и Chrome. Но он полностью ломается в Microsoft Edge 42.17134.1.0 (EdgeHTML 17.17134). На Edge <section>
, который я использую для карты, полностью сжимается, как если бы я выводил ее из нормального потока. Содержание по-прежнему отображается, полностью за пределами <section>
. Вы можете попробовать это здесь:
https://jsfiddle.net/garretwilson/wgo8rqxf/4/
Я могу обойти эту проблему в Edge, изменив свойства flex внутреннего <div>
(используя вышеуказанный класс стиля concise
):
<div class="box">
<section class="box concise">
<div class="box concise">
this is just for test
</div>
</section>
</div>
Но ручное добавление этого стиля concise
нереализуемо. Я не могу вручную изменить дочерние свойства flex, чтобы они не ломались в Edge. Более того, это изменит поведение детей. Если, например, я установлю ширину в <section>
, я бы хотел, чтобы его дочерние элементы заполнили пространство.
Это известная ошибка Edge для flex-детей? Разве внутренний <div>
не должен расти так, как нужно для его содержания?
И что не менее важно, знает ли кто-нибудь общий обходной путь, который я могу добавить в таблицу стилей, чтобы Edge не сворачивал гибкие элементы в иерархии, без добавления произвольной разметки или стилей в сам HTML