Это известная ошибка.
IE 10-11 игнорирует calc()
функции, используемые в flex
сокращенных объявлениях.
Так как эта ошибка затрагивает только сокращение flex
Объявление в IE 11, простой обходной путь (если вам нужна только поддержка IE 11) - всегда указывать каждое свойство гибкости индивидуально.
source: https://github.com/philipwalton/flexbugs#flexbug-8
Таким образом, другими словами, вместо:
flex: 1 0 calc(100% / 3)
Попробуйте:
flex-grow: 1;
flex-shrink: 0;
flex-basis: calc(100% / 3);
Также учтите следующее: вам даже не нужна функция calc()
.
Если вы хотите три столбца равной ширины, это будет делать:
flex: 1
или
flex: 1 0 30%
или даже:
flex: 1 0 26%;
С flex-grow: 1
определено в сокращении flex
, нет необходимости, чтобы flex-basis
составлял 33,33%.
Поскольку flex-grow
будет занимать свободное место на линии, flex-basis
должно быть достаточно большим, чтобыприменять перенос (если это станет необходимым).
В этом случае, с flex-basis: 26%
, достаточно места для полей, границ, отступов и т. д., но никогда недостаточношаг за четвертый пункт.