Ответ 1
У IE есть проблема, анализирующая свойство flex
.
Вот несколько обходных решений, которые сработали для меня:
-
Используйте долгосрочные свойства вместо сокращенного.
Вместо этого:
flex: 0 0 35%
.Попробуйте следующее:
-
flex-grow: 0
-
flex-shrink: 0
-
flex-basis: 35%
-
-
Убедитесь, что
flex-shrink
включен.Итак, вместо этого:
flex: 0 0 35%
Попробуйте следующее:
flex: 0 1 35%
-
Осторожно с процентными и безразмерными значениями с помощью
flex-basis
Это может зависеть от вашей версии IE11. Поведение меняется.
Попробуйте следующие варианты:
-
flex: 1 1 0
-
flex: 1 1 0px
-
flex: 1 1 0%
Подробнее здесь:
-
-
Вместо
flex: 1
используйтеflex: auto
(или добавьте вflex-basis: auto
)Если вы используете
flex: 1
вflex-direction: row
(например, на больших экранах) и переключитесь наflex-direction: column
в медиа-запрос (скажем, для мобильных устройств), вы можете обнаружить,.В запросе на медиатеку добавьте
flex-basis: auto
. Это переопределит значениеflex-basis
в правилеflex: 1
(обычно это0
,0px
или0%
, в зависимости от браузера).Использование
flex: auto
должно также работать, что сокращается для:-
flex-grow: 1
-
flex-shrink: 1
-
flex-basis: auto
-
- Используйте свойства
width
/height
в старом стиле вместоflex
.
-
Используйте макет
block
вместо макетаflex
.Вам не нужно полностью отказаться от гибкого макета. Но для конкретного контейнера вы можете выполнить работу с помощью
display: block
вместоdisplay: flex; flex-direction: column
.Например, если вам нужно использовать трюк , чтобы оперативно вставлять видео в гибкий элемент, препятствие, с которым я столкнулся, состояло в том, что некоторые браузеры плохо работают с процентным заполнением (или маржи) в контейнере flex.
Чтобы сделать это, я переключил значение
display
на элемент flex из этого:/* a flex item, also a nested flex container */ #footer-container > article { display: flex; flex-direction: column; }
:
#footer-container > article { display: block; }