Почему нет Flexbox polyfill для старых браузеров, таких как IE9?
есть ли какие-то проблемы, которые мешают людям создавать его? Это слишком сложно?
может быть, в этом просто нет необходимости?
был ли он уже создан, и я просто не могу его найти?
Я предполагаю, что это библиотека на основе js и работает следующим образом:
он проверяет, поддерживает ли браузер flexbox изначально;
Если это не так, он анализирует CSS и проверяет, связан ли элемент с flexbox правила;
Если это так, он пытается эмулировать эти правила через javascript, вычисляя все позиции и размеры дочерних элементов и позиционировать их с помощью
position: absolute;
.
в принципе, то же самое, что каменная кладка и подобные библиотеки, но с правилами flexbox. Можно ли это сделать?
изменить: этот вопрос не объясняет, почему этого нельзя сделать.
2 ответов
на самом деле есть библиотека, которая делает именно то, что я хотел: https://github.com/10up/flexibility
Он находится на очень ранней стадии развития, но, надеюсь, он будет жизнеспособным в ближайшее время.
"эмулировать эти правила через javascript "- это" самая невозможная " часть.
- коробка гибкого трубопровода чисто положение:статическая вещь, вы не можете двинуть ее дальше позиция: абсолютный слой (за этим слишком много вещей);
- расчеты flex box производятся на так называемом дереве рендеринга, которое недоступно для JS;
для использования JS в целях статического макета браузеры должны иметь механизм для подключения кода пользователей к формированию дерева рендеринга и макет:
div { layout: myFlexManager url(my-layouts.js); }
но как только браузеры будут иметь такую возможность, flexbox будет выброшен, поскольку это худшая и самая уродливая спецификация CSS, когда - либо созданная - сообщество придумает что-то лучше-проще и практичнее.