Flex не поддерживает calc в IE11

Я пытаюсь создать макет с помощью Flexbox. В одном из этих макетов мне нужны 3 столбца одинаковой ширины. Для этого я использую вычисление для установки ширины столбца. Это нормально работает в современных браузерах, но, конечно, в IE это не работает. Вот мой код:

.container {
  width:50vw;
  margin:0 auto;
  display:flex;
}
  .container > div {
    flex:1 0 calc(100% / 3);
  }
<div class = "container">
  <div>Test</div>
  <div>Test</div>
  <div>Test</div>
</div>

Как я уже упоминал, это отлично работает в современных браузерах, но в IE столбцы просто сворачиваются друг на друга, если я не использую определенный процент вместо calc.

Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
6
0
5 726
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Это известная ошибка.

IE 10-11 ignore calc() functions used in flex shorthand declarations.

Since this bug only affects the flex shorthand declaration in IE 11, an easy workaround (if you only need to support IE 11) is to always specify each flexibility property individually.

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% достаточно места для полей, границ, отступов и т. д., Но никогда не бывает достаточно места для четвертого элемента.

Другие вопросы по теме