为什么没有像IE9这样的老式浏览器的flexbox polyfill?

时间:2015-11-28 17:59:13

标签: javascript html css css3 flexbox

是否存在一些妨碍人们创建它的问题?这太复杂了吗?

也许没有必要呢?

它是否已经创建它而我却找不到它?

我认为它是一个基于js的库并以这种方式工作:

  1. 它会检查浏览器是否支持原生的flexbox;

  2. 如果没有,它会解析CSS并检查元素是否与flexbox相关的规则;

  3. 如果是,它会尝试通过计算子元素的所有位置和大小并使用position: absolute;来定位这些规则。

  4. 基本上,与Masonry和类似的库一样,但使用flexbox规则。这可能吗?

    编辑:this question无法解释无法完成的原因。

2 个答案:

答案 0 :(得分:8)

实际上有一个库可以完全符合我的要求:https://github.com/10up/flexibility

它处于发展的早期阶段,但希望很快就能实现。

答案 1 :(得分:-2)

"通过javascript"模拟这些规则是最不可能的"一部分。

  1. 弹性盒子是纯粹的位置:静态的东西,你不能移动它 position:绝对层(这背后有太多东西);
  2. 弹性框计算是在JS无法使用的所谓渲染树上进行的;
  3. 为了将JS用于静态布局目的,浏览器应该有一种机制来连接用户代码以呈现树形成和布局:

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

    但是一旦浏览器拥有这样的设施,Flexbox就会被抛弃,因为这是有史以来最糟糕和最丑陋的CSS规范 - 社区会提出更好的东西 - 更简单,更实用。