Почему нет Flexbox polyfill для старых браузеров, таких как IE9?

есть ли какие-то проблемы, которые мешают людям создавать его? Это слишком сложно?

может быть, в этом просто нет необходимости?

был ли он уже создан, и я просто не могу его найти?

Я предполагаю, что это библиотека на основе js и работает следующим образом:

  1. он проверяет, поддерживает ли браузер flexbox изначально;

  2. Если это не так, он анализирует CSS и проверяет, связан ли элемент с flexbox правила;

  3. Если это так, он пытается эмулировать эти правила через javascript, вычисляя все позиции и размеры дочерних элементов и позиционировать их с помощью position: absolute;.

в принципе, то же самое, что каменная кладка и подобные библиотеки, но с правилами flexbox. Можно ли это сделать?

изменить: этот вопрос не объясняет, почему этого нельзя сделать.

2 ответов


на самом деле есть библиотека, которая делает именно то, что я хотел: https://github.com/10up/flexibility

Он находится на очень ранней стадии развития, но, надеюсь, он будет жизнеспособным в ближайшее время.


"эмулировать эти правила через javascript "- это" самая невозможная " часть.

  1. коробка гибкого трубопровода чисто положение:статическая вещь, вы не можете двинуть ее дальше позиция: абсолютный слой (за этим слишком много вещей);
  2. расчеты flex box производятся на так называемом дереве рендеринга, которое недоступно для JS;

для использования JS в целях статического макета браузеры должны иметь механизм для подключения кода пользователей к формированию дерева рендеринга и макет:

div { layout: myFlexManager url(my-layouts.js); }

но как только браузеры будут иметь такую возможность, flexbox будет выброшен, поскольку это худшая и самая уродливая спецификация CSS, когда - либо созданная - сообщество придумает что-то лучше-проще и практичнее.